AutoCAD 插件开发示例

AutoCAD Plugin Development by Example

我有兴趣开发 AutoCAD 插件,并试图了解几种不同类型的 AutoCAD 插件文件之间的关系:

据我所知,这三个文件都是相互关联的,并且一起工作以初始化和加载插件,我只是没有看到 穿过树木的森林每种文件类型包含哪些信息,加载哪些文件或依赖于其他文件等。

听起来 插件的核心功能应该放在 ARX 文件中,用 C++ 编写并为 native/target 平台编译。

它也听起来像,在启动时,AutoCAD 加载它的插件 DLL,它们都是托管的 .NET 库(通常用 C# 编写),然后它们调用它们的 native/compiled各自的ARX文件。至于CUIX文件在哪里发挥作用,我仍然不知道。

任何人都可以帮助解释这些文件的关系和依赖关系,以及它们内部的 code/logic/data 是什么类型? 在此先感谢!

AutoCAD 核心库都是用非托管代码(我相信是 C++)编写的。最终,无论您选择 API 开发您的插件,您都将通过它们的 APIs 之一来操作这些核心库中的非托管 AutoCAD 对象。除了您提到的三种类型的文件之外,还有许多其他方法可以为 AutoCAD 创建插件。一些示例包括:Lisp 脚本、VBA 脚本、COM 客户端(VB、Java、Delphi)。其中大部分现在已经过时,现在 .Net 和 C++(ObjectARX) API 最流行。但是,其余的由于遗留原因仍在使用。如果您要开始一个新模块,您可以使用 .Net 或 ARX。

.NET API 是一组包装 ObjectARX API 的 .NET 包装器库。您会引用的最常见的 dll 是 accoremgd.dllacdbmgd.dllacmgd.dll,但还有其他的。这些库允许您通过 .NET 语言操作本机 AutoCad 对象。如果您想在 C# 中为 AutoCad 创建插件,那么您只需要在 C# 中编写代码。这对开发速度很有帮助,但代码的性能会比 ARX 插件差一些。话虽如此,我真的想强调它仍然非常快。由于性能问题,我还没有发现需要使用 C++ 为 AutoCAD 编写代码。总体而言,它非常强大且功能丰富。您可以只使用 C# 对绘图做任何事情。

看看我最近给的at this回答。它应该可以回答您关于在 .Net 中开始 AutoCAD 插件开发的大部分(如果不是全部)问题。

ObjectARX API 与我描述的 .NET API 非常相似,只是您使用 C++ 编写代码。其中一些库包括 rxapi.libaccore.libacgiapi.libacdrawbridge.lib 以及其他一些库。使用 C++ 进行开发比使用 C# 进行开发要麻烦得多,但 C++ 代码运行速度更快,尽管差距不大。

CUIX 文件存在于完全不同的星系中。它们用于自定义 UI 以及其他相关内容。你可以 browse various uses of cuix files here.

您的选择将真正取决于您在做什么。如果您编写的代码将尽可能快地批处理数十万张绘图,您将想要探索 C++ API。如果您只是处理数百张绘图或只是为用户创建一堆命令,我强烈建议您使用 C# API。用户几乎永远察觉不到的性能上的小损失是值得的。

有关详细信息,go to this AutoDesk link,然后向下滚动到培训实验室。我建议您至少通读 ObjectARX 和 .NET 培训实验室。一旦你选择了你想要使用的东西,通过所有的实验室来选择你的选择。稍后您会感谢自己,因为您将避免无数小时的头痛和沮丧!

祝你好运!