我对开发AutoCAD插件感兴趣,并尝试了解几种不同类型的AutoCAD插件文件之间的关系:
从我所知道的这三个文件都是相互关联的并且一起工作来初始化和加载一个插件,我只是没有看到森林穿过树关于每个文件的信息type contains,哪些文件加载或依赖于其他文件等。
它听起来就像一个插件的核心功能应该放在ARX文件中,并用C ++编写并为本机/目标平台编译。
它也听起来就像在启动时一样,AutoCAD加载它的插件DLL,它们都是托管的.NET库(通常用C#编写),然后它们调用它们的本机/编译的相应ARX文件。至于CUIX文件发挥作用的地方,我仍然不知道。
任何人都可以帮助解释关系和关系这些文件的依赖关系,以及它们内部的代码/逻辑/数据类型是什么?提前致谢!
答案 0 :(得分:4)
AutoCAD核心库都是用非托管代码编写的(我相信C ++)。最终,无论您选择开发插件的API,您都将通过其中一个API操作来自这些核心库的非托管AutoCAD对象。除了您提到的三种类型的文件之外,还有许多其他方法可以为AutoCAD创建插件。一些示例包括:Lisp脚本,VBA脚本,COM客户端(VB,Java,Delphi)。其中大部分已经过时,现在.Net和C ++(ObjectARX)API最受欢迎。但是,由于遗留原因,其余部分仍在使用中。如果您要启动新模块,则可以使用.Net或ARX。
.NET API 是一组包装ObjectARX API的.NET包装器库。您引用的最常见的dll是accoremgd.dll
,acdbmgd.dll
和acmgd.dll
,但还有其他dll。这些库允许您通过.NET语言操作本机AutoCad对象。如果您想在C#中为AutoCad创建插件,那么您只需要在C#中编写代码。它非常适合开发速度,但代码的性能将略逊于ARX插件。话虽如此,我真的想强调它仍然很快。由于性能问题,我还没有发现需要用C ++编写AutoCAD代码。总体而言,它非常强大,功能丰富。你可以用C#做很好的事情。
看看我最近给出的at this回答。它应该回答大多数关于在.Net中开始使用AutoCAD插件开发的问题。
ObjectARX API 与我对.NET API的描述非常相似,只不过您使用C ++编写代码。一些库包括rxapi.lib
,accore.lib
,acgiapi.lib
,acdrawbridge.lib
以及其他一些库。使用C ++进行开发比使用C#时要麻烦得多,但C ++代码运行速度更快,但速度不是很快。
CUIX 文件存在于一个完全不同的星系中。它们用于在其他相关事物中自定义UI。你可以browse various uses of cuix files here。
您的选择将归结为您正在做的事情。如果您正在编写将尽快批量处理数十万个图形的代码,那么您将需要探索C ++ API。如果您只处理数百个图纸或只为用户创建一堆命令,我会强烈建议您使用C#API。对于用户来说几乎永远无法察觉的性能影响是值得的。
有关详细信息,请go to this AutoDesk link,然后向下滚动到培训实验室。我建议您至少阅读ObjectARX和.NET Training实验室。选择想要使用的内容后,请选择所有实验室。您将在以后感谢自己,因为您将节省无数小时的头痛和沮丧!
祝你好运!