【问题标题】:AutoCAD Plugin Development by ExampleAutoCAD 插件开发示例
【发布时间】:2018-05-22 21:45:35
【问题描述】:

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

  • AutoCAD 插件附带的托管 DLL
  • ARX files 随 AutoCAD 插件提供
  • CUIX files 随 AutoCAD 插件提供

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

听起来好像插件的核心功能应该放在 ARX 文件中,并用 C++ 编写并针对本机/目标平台进行编译。

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

谁能帮助解释这些文件的关系和依赖关系,以及其中包含哪些类型的代码/逻辑/数据?提前致谢!

【问题讨论】:

    标签: c# .net dll autocad objectarx


    【解决方案1】:

    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.dllacdbmgd.dllacmgd.dll,但还有其他的。这些库允许您通过 .NET 语言操作本机 AutoCad 对象。如果你想用 C# 为 AutoCad 创建插件,那么你只需要用 C# 编写代码。这对开发速度很有帮助,但你的代码性能会比 ARX 插件差一些。话虽如此,我真的想强调它仍然非常快。由于性能问题,我还没有发现需要为 AutoCAD 编写 C++ 代码。总的来说,它非常强大且功能丰富。仅使用 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 培训实验室。一旦你选择了你想要使用的东西,就可以通过所有的实验室来选择你想要的。稍后您会感谢自己,因为您将节省无数小时的头痛和沮丧!

    祝你好运!

    【讨论】:

      猜你喜欢
      • 2011-03-06
      • 2011-11-18
      • 1970-01-01
      • 2014-09-25
      • 1970-01-01
      • 1970-01-01
      • 2012-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多