我对开发一个AutoCAD插件很感兴趣,并试图了解几种不同类型的AutoCAD插件文件之间的关系:
据我所知,这三个文件都是相互关联的,并且一起初始化和加载一个插件,我只是没有从树中看到每个文件类型包含哪些信息,哪些文件加载或依赖于其他文件等等。
听起来,插件的核心功能应该放在ARX文件中,用C++编写,并为本机/目标平台编译。
听起来,在启动时,AutoCAD会加载它的插件all,这些插件all都是托管的.NET库(通常是用C#编写的),然后调用它们的本地/编译的各自的ARX文件。至于CUIX文件在哪里发挥作用,我仍然不知道。
有人能帮助解释这些文件的关系和依赖关系吗?它们里面有哪些类型的代码/逻辑/数据?,谢谢!
发布于 2017-12-09 00:04:07
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
,但也有其他的。这些库允许您通过一种AutoCad语言操纵本机.NET对象。如果您想为AutoCad在C#中创建插件,那么只需要在C#中进行编码。这对开发速度是很好的,但是您的代码的性能会比ARX插件差一些。话虽如此,我真的想强调一点,那还是太快了。由于性能问题,我没有发现需要在C++中为AutoCAD编写代码。总的来说,它非常强大,功能丰富。您只需使用C#就可以很好地完成任何绘图。
看看我最近给出的在这里答案。它应该回答大多数(如果不是全部的话)关于开始在.Net中使用.Net插件开发的问题。
ObjectARX API非常类似于我为.NET API描述的内容,除了用C++编写代码外。其中一些库包括rxapi.lib
、accore.lib
、acgiapi.lib
、acdrawbridge.lib
以及其他库。使用C++的开发要比使用C#时麻烦得多,但是C++代码运行得更快,尽管不是很大的差距。
CUIX文件生活在一个完全不同的星系。它们用于自定义UI以及其他相关的内容。你可以在这里浏览cuix文件的各种用途。
你的选择将真正取决于你在做什么。如果您正在编写代码,以尽可能快的速度批处理数十万张图纸,那么您将需要探索C++ API。如果您只处理了数百张图纸,或者只是为用户创建了一堆命令,我将强烈建议您使用C# API。这是值得的小击中的性能,几乎永远不会被用户察觉。
要了解更多信息,请使用转到这个AutoDesk链接并向下滚动到培训实验室。我建议您至少阅读ObjectARX和.NET培训实验室。一旦你选择了你想要使用的东西,你就可以通过所有的实验室来选择你的选择。你会感谢你自己,因为你将节省无数个小时的头痛和挫折!
祝好运!
https://stackoverflow.com/questions/47717868
复制相似问题