主要有两种:AutoLisp ObjectArx
1 AutoLISP ,脚本语言,开发小功能首选,速度慢,功能有限。但开发后,绝大多数不经修改就可运行于所有CAD版本
2.ObjectArx,分为C++接口或DotNet接口开发。功能强大,速度快。不同CAD版本适配使用不同的VS开发环境,编译成不同的版本,不同版本之间不兼容。适合大型功能系统开发。但维护及修改工作量较大。

我们一直在开发一个基于 ObjectARX(室内设计)和 VB(GUI)的相当复杂的 AutoCAD 应用程序,我们想知道,在 C#(?)的迁移之后,我们是否可以在实体控制、性能等方面保持相同的结果。简而言之,是时候离开棘手而痛苦的 ARX 世界,拥抱 DotNet 天堂了 吗?
多年来,我多次被问到在 AutoCAD 开发项目中使用什么“最佳”API。即使技术本身发生了变化,答案也非常一致。我几乎总是说“这取决于”(是的,我知道这让我听起来像个律师)。选择取决于许多因素,其中一些我试图在这里列出,没有特别的顺序:
遗留代码库——是否由现有的遗留代码库,它是否适合您的客户?如果是这样,是否有从传统语言到您正在考虑采用的语言的互操作性路径?功能覆盖——语言需要什么类型的功能?它是否需要核心的数字运算能力,还是只需要一个花哨或直观的 GUI?这些要求如何与 a) 语言和 b) 通过 AutoCAD 的特定 API 公开的 API 集的功能相匹配?表现——与上一个问题相关的是问题或表现。您对正在考虑的语言性能的了解是否与客户要求的性能相匹配?与其他技术集成——您是否需要与其他产品或服务集成,并且该语言是否有支持此类集成的跟踪记录?版本支持- 您需要支持的平台(操作系统和 AutoCAD 版本)是否都允许使用这种语言?技能——您和您的同事是否有经验/能力/有信心您将能够学习该语言?当今市场上这些技能的可用性如何——如果您必须雇用某人来编写您的代码,是否很容易找到这些技能,或者它们的稀缺性是否会增加溢价?供应商承诺——供应商(在这种情况下,我们可以将 Microsoft 和 Autodesk 视为主要技术提供商)是否对该技术有长期承诺——不仅在其可用性方面,而且在其发展方面?一个明显的例子是 VBA,除非我在打盹时情况发生了变化,否则它不会作为 64 位版本提供。这实际上意味着微软方面对这项技术几乎没有长期承诺,这显然限制了 Autodesk 等下游供应商的可能承诺。支持——您是否有关于这项技术的坚实知识库,以及合格、经验丰富的支持人员?如果您需要在短时间内摆脱困境,您可以打电话给某人吗?好的,到目前为止,我已经设法回答了大部分个人的问题。让我们尝试更直接地解决这个问题……
我相信对于当今世界的专业程序员来说,了解许多不同的编程语言和方法是非常有益的。随着世界不可避免地在您周围发生变化,它会增加您的灵活性。我还相信,在一个重大项目中使用多种技术——正如大多数开发商所描述的那样——是务实的。
让核心 C++ 开发人员在核心引擎上工作,而 UI 开发人员在 MFC 中工作,这正是我几年前所做的选择(可能是快图CAD室内设计【快图工具】项目启动时)。
我今天的选择——如果实施一个“室内设计”开发项目,无需考虑遗留代码库——将面向一个或多个 DotNet 语言(考虑到 AutoCAD 中托管代码的性能配置文件,它与大多数用途无关紧要的本地 C++ 一样接近,再加上 WinForms 和越来越多的 WPF 提供的 UI 可能性)。
AutoCAD与Windows
我说“一个或多个”的原因是,根据领域的不同,可能会有不同的模块用不同的语言实现的争论:C# 和 MFC 在大多数级别上是相当可比的(这个决定往往是基于客户实现理由做出的;)
但是在函数式编程擅长的某些领域(主要是与数学世界有密切联系的领域,但还有其他领域,例如我在 再加上 WinForms 和越来越多的 WPF 提供的 UI 可能性)。
AutoCAD Technology Cycle
我还会选择 ObjectARX C++吗?我可能会,这取决于需要什么。今天,自定义对象仍然只能使用 ObjectARX(即 C++)来实现。在走上实现自定义对象的道路之前,我会仔细考虑可用的替代方案(我们正在继续努力减少当前非常重要的资源投入,以实现目前只能通过自定义对象获得的功能)。仅当对自定义对象有绝对要求时,我才会选用 ObjectARX C++。
或者当对项目有加密需求,我可能也会选 ObjectARX C++。
当然,拥有同质代码库确实会带来好处:所有代码都使用特定的语言,使用相同的工具,开发人员能够在不同领域进行深入协作,而无需付出额外的努力。但这确实是一个理想化的场景,在这个特定的开发人员的案例中,我会非常仔细地研究迁移整个代码库所带来的好处:我怀疑 ObjectARX 组件移植到 DotNet中获益很少,除了拓宽了公司可用的技能基础(从长远来看可能会降低维护成本),但是用更现代的外观更新 MFC UI 可能会带来更切实的好处。本机 C++ 和托管代码之间的互操作性非常全面,因此应该让生活更轻松,
虽然这实际上并不能回答这个问题——如果不了解更多关于特定场景的信息,我无法做到这一点——这确实更接近了一点,希望能让我在评估各种选项时感觉到我会做什么。
AutoCAD 历史发展线索
如果你想开发一个小而美的功能,提高日常工作效率,那请选用 Autolisp 吧。他对AutoCAD的具体版本几乎淌有要求。
如果想开发一个大型功能项目,请选择ObjectArx C++吧。界面使用MFC。实现统一的开发环境,容易团队协作,项目维护。更重要的是:可以实现CAD提供的一切接口功能,且速度是极好的又便于加密。
如果不需要一些功能,如自定义对象,加密等。对界面美观有超乎寻常的需求。那请选用ObjectArx DotNet吧。
ObjectArx C++ 与ObjectArx DotNet相结合似乎完美组合。唯一遗憾的是维护增加了一些工作量。
如果你想利用Autolisp等现有资源,请Autolisp/ObjectArx C++ 与ObjectArx DotNet一起使用吧。