我使用 dot net 3.50 制作了一个 autocad 插件,并且我从 autocad 2012 中引用了 acdbmgd.dll、acmgd.dll 如果我应该引用 acdbmgd.dll、acmgd,我该怎么做才能使其在 autocad 2010 和 autocad 2011 上运行。来自autocad 2010 的dll 在我只有autocad 2012 时我在哪里可以得到这个dll
4 回答
我在 AutoCAD 2010 中使用 2008 库取得了一些成功,因此使用 AutoCAD 2010 中的库可能是您最好的选择,尽管不能保证有效。这将取决于你在做什么。
您可以从Autodesk 开发人员中心(位于页面底部)下载这些库作为 ObjectARX 2010 软件包的一部分。如果需要,您还可以从那里获得 ObjectARX 2011。
AutoLISP 是我长期使用 AutoCAD 附加组件的最佳运气。我有我在 1995 年编写的工具,这些工具现在仍然很强大,没有任何修改。
.Net API 比 ActiveX 更兼容,但仍有一些差异。
您始终可以使用反射来调用函数(按名称调用它们),但是需要进行大量检查,并且拥有您的应用程序需要做很多工作。在所有版本上都以相同的方式做出反应。
您最好的选择(至少我会做的)是为您想要的每个功能制作一个包装类。例如,我会创建一个“MyCircle”类来操作圆,然后在这个类中创建一个通用函数(例如:“ChangeThickness(int newThickness)”),并在其中编写反射代码,这样你就可以根据安装的 AutoCAD 版本控制调用方式(例如,不调用某个版本的 AutoCAD 中的特定函数,因为它包含错误)。这将创建一个可扩展层,您将能够在所有版本的 AutoCAD 中重复使用它,并且您将能够支持 API 中的任何更改。
我在 2012 年和 2013 年这样做。它们之间存在一些差异。
我通常开始两个项目,一个使用 2012 Acad.NET 向导,另一个使用 2013 Acad .NET 向导。
同时更新两者
大多数情况下它只是复制粘贴在某些情况下它会有所不同,其中 2013 API 已经发展,例如在 Civil3d 2012 中没有任何 Co-Go 点 api,而在 2013 年他们已经添加了所以在这种情况下我需要更改代码很少2013 年开始工作。