如何提高.NET Plug-in Development的速度?

时间:2017-10-23 12:41:09

标签: .net autocad linqpad autocad-plugin objectarx

我正在开发一个使用.NET 4.6程序集的AutoCAD加载项。我发现开发过程非常令人沮丧; API非常庞大,文档已经无处不在,很难找到。完成任何事情的唯一方法似乎只是Visual Studio中的原型函数,看看它是否有效。然后需要几分钟才能加载AutoCAD并附加调试器,这会破坏我的原型设计工作流程。

如果我可以使用像Linqpad这样的东西来构建我的应用程序,那么我会找到我正在寻找的数据,这将非常方便。我没有嫁给使用Linqpad的想法;然而,如果还有另一种技术我不知道,我很乐意听到它。

我不确定这是否是我可能在专业版中实现的,但由于没有试用我无法找到。

2 个答案:

答案 0 :(得分:3)

确实,API确实很大,而且某些功能的记录有些不足。我发现很难开始,但是一旦我熟悉了核心概念和功能,我开始非常喜欢使用它,因为API非常强大并且很容易使用,一旦你得到它" 。我不确定您检查了哪些来源,但我从this Developer Documentation开始。向下滚动到培训实验室。我建议您至少阅读ObjectARX和.NET Training实验室。花几天时间在.NET实验室工作,因为它可以为您节省大量的时间。

至于调试,下面的设置应该为您提供最有效和最有效的方法(这里我使用VS 2015和AutoCad 2015)。在项目属性中,在" Debug"选项卡,您的设置应如下所示:

  1. 检查"启动外部程序:"并输入AutoCad可执行文件的路径。这适用于其他版本的AutoCad。
  2. 在"命令行参数中:"字段,输入/nologo。这将大大加快AutoCad的启动速度。
  3. enter image description here

    要自动将您的dll加载到AutoCad ,您可以通过注册表(我的首选方式)或通过acad20xxdoc.lsp或acad.lsp(默认情况下,AutoCad将运行这些脚本)您打开的文档或AutoCad分别启动时)。您可以在this post中找到详细信息。

    现在按 F5 将启动AutoCad并加载调试器。您现在可以像任何其他代码一样遍历代码行。在代码的开头放置一个断点,然后在AutoCad中执行命令。你的破发点应该被击中。

    除此之外: /nologo也可以添加到AutoCad桌面快捷方式中,以加快用户的AutoCad速度。它可以添加到"目标:"快捷方式属性中的字段。即"C:\Program Files\Autodesk\AutoCAD 2015\acad.exe" /nologo

    注意:可能有问题!确保项目引用的任何AutoCad dll的属性设置为:

    1. 嵌入互操作类型 - >假
    2. 复制本地 - >假。还要确保Debug / Release目录中没有AutoCAD dll(即acmgd.dll或名称以" ac")开头的任何dll。删除您找到的任何内容。不这样做会导致错误和崩溃,这将很难追查。

答案 1 :(得分:1)

您可以在调试时运行脚本,使用/b commandline switch对您的DLL进行NETLOAD。

在Visual Studio的“命令行参数”文本框中添加类似以下内容的内容

@mock.patch

名为/b "C:\Path\To\Script\AutoNetLoadDebug.scr" 的脚本的内容类似于

AutoNetLoadDebug.scr

注意:该行末尾需要换行,因此它实际运行命令。确保没有将AutoCAD设置为已加载该DLL或其不同的版本。如果这样做,请使用netload "C:\Path\To\Dll\Your.dll" 命令行开关以不同的配置文件启动AutoCAD。

您无法在AutoCAD之外的AutoCAD API中运行任何内容,.NET DLL只是AutoCAD内部深处非托管代码的映射

我做了很多日志记录(Serilog),特别是在调试中。 Github上还有CADtest以及https://github.com/wtertinek/AcadTestRunner。我试过一次模拟AutoCAD API。的一旦即可。因此,CADtest。

Protip:尝试抓住所有地方并注意空值,但你可能已经发现了。

阅读AutoCAD Tag wiki并查看其中提到的其他论坛和博客,它们是AutoCAD API知识的金矿