AutoCAD二次开发技术路线及历史演进

最新的AutoCAD二次开发技术路线

目前按照AutoCAD的最新版本是AutoCAD 2023 ,其帮助网站支持的最近开发技术包括“AutoLISP 和 DCL”,“ActiveX 和 VBA”,“ObjectARX 和 Managed .NET”,“JavaScript”。这表明Autodesk正在整合老旧的AutoCAD二次开发技术,并支持包含Javascript在内的新技术,特别是对于熟悉前端开发的同学来说,转投AutoCAD二次开发无疑更容易了一些。

最新AutoCAD二次开发技术

AutoCAD二次开发技术:AutoLISP 和 DCL

AutoLISP

多年来,AutoLISP ®为自定义和扩展 AutoCAD ®程序设定了标准,而 Visual LISP ® (VLISP) 通过添加附加功能扩展了 AutoLISP 的功能。Visual LISP 的某些功能扩展了 Windows 和 Mac OS 上可用的标准 AutoLISP 编程语言的核心功能,但大部分功能仅在 Windows 上可用,因为它需要 Microsoft ActiveX ®自动化接口。

可以使用多种工具编写自定义 AutoLISP 程序:

  • 基本的 ASCII 文本编辑器,例如 Windows 上的记事本或 Mac OS 上的 TextEdit
  • 在 Windows 或 Mac OS 上安装了带有 AutoLISP 扩展的 Microsoft Visual Studio Code
  • 仅适用于 Windows 的 Visual LISP 集成开发环境 (IDE)
  • 第三方编辑

使用对话框控制语言 (DCL),您可以创建用于 AutoLISP 程序的对话框。

对话框由以 对话框控制语言(DCL) 编写的 ASCII 文件定义,需要进行一些规划以确保它们的外观和行为类似于操作系统和 AutoCAD 使用的其他对话框。您选择使用的磁贴或控件以及它们在对话框中的布局应该是流畅和直观的。

AutoCAD:ActiveX 和 VBA

AutoCAD® ActiveX® 使您能够在 AutoCAD 内部或外部以编程方式操作 AutoCAD。

它通过将 AutoCAD 对象暴露给“外部世界”来做到这一点。一旦这些对象被公开,它们就可以被许多不同的编程语言和环境以及其他应用程序(如 Microsoft® Word VBA 或 Excel VBA)访问。

为 AutoCAD 实现 ActiveX 界面有两个优点:

  • 对 AutoCAD 图形的编程访问向更多的编程环境开放。在 ActiveX Automation 之前,开发人员仅限于 AutoLISP ®或 C++ 接口。
  • 与其他 Windows® 应用程序(例如 Microsoft Excel 和 Word)共享数据变得非常容易。

对象是任何 ActiveX 应用程序的主要构建块。每个暴露的对象都代表 AutoCAD 的一个精确部分。AutoCAD ActiveX 界面中有许多不同类型的对象。例如:

  • 诸如直线、圆弧、文本和尺寸之类的图形对象都是对象。
  • 线型和标注样式等样式设置是对象。
  • 层、组和块等组织结构都是对象。
  • 视图和视口等绘图显示是对象。
  • 甚至绘图和 AutoCAD 应用程序也被视为对象。
VBA

AutoCAD:ObjectARX 和 Managed .NET

ObjectARX ®是 AutoCAD ® – 运行时扩展编程环境,包括 C++ 库,这些库是可用于开发 AutoCAD 应用程序、扩展 AutoCAD 类和协议以及创建与内置 AutoCAD 命令相同的操作方式的新命令的构建块. 您可以添加新类并将其导出以供其他程序使用。您还可以通过在运行时向现有 AutoCAD 类添加函数来扩展 ObjectARX 协议。

AutoCAD .NET API 使您能够使用公开的程序集或库以编程方式操作应用程序和图形文件。随着这些对象的暴露,它们可以被许多不同的编程语言和环境访问。

为 AutoCAD 实施 .NET API 有几个优点:

  • 对绘图的编程访问向更多的编程环境开放。在 .NET API 之前,开发人员仅限于 ActiveX ®自动化和支持 COM、AutoLISP® 和 C++ 与 ObjectARX 的语言。
  • 通过使用应用程序的本机 .NET API 或公开的 ActiveX/COM 库,与其他基于 Windows® 的应用程序(例如 Microsoft Excel 和 Word)集成变得非常容易。
  • .NET Framework 专为 32 位和 64 位操作系统而设计。注意:从 AutoCAD 2020开始,不再提供 32 位支持。
  • 与 C++ 等更传统的编程语言相比,允许访问具有更低学习曲线的高级编程接口。

对象是 AutoCAD .NET API 的主要构建块。每个暴露的对象都代表程序或绘图的一个精确部分,它们被分组到不同的程序集和命名空间中。AutoCAD .NET API 中有许多不同类型的对象。例如:

  • 图形对象,例如直线、圆弧、文本和尺寸
  • 文本和尺寸样式等样式设置
  • 组织结构,例如层、组和块
  • 绘图显示,例如视图和视口
  • 绘图及应用

使用Visual Studio开始Autocad.net开发旅程——准备 这篇文章将从零开始介绍如何进行.net开发。

ObjectARX

AutoCAD:JavaScript API (v4)

AutoCAD JavaScript 应用程序编程接口 (API) 使您能够使用 HTML5 进行画布内用户界面活动、操作当前缩放和实现画布外用户界面对话框。

AutoCAD JavaScript API 允许您执行以下操作:

  • 在画布用户界面活动中,例如提示和显示瞬态图形。
  • 更改对象的视图,例如缩放、平移、切换视觉样式。
  • 使用 HTML5 和 JavaScript 组合构建的画布外用户界面,例如调色板、可以显示绘图对象属性并与绘图交互的对话框。

到目前为止,针对AutoCAD 核心引擎的 JavaScript 对象模型包括:

  • Prompts 提示
  • Transient graphics and input 瞬态图形和输入
  • Dragger 拖拽器
  • View manipulation 视图操作
  • Commands 命令
  • Windows 窗口
  • Drawing object operations and events 绘图对象操作和事件
  • Bindable Object Layer (BOL) 可绑定对象层
  • Application Object 应用对象

AutoCAD二次开发技术演进

AutoLISP和Visual LISP

AutoLISP是进行对AutoCAD二次开发最早的API,它是人工智能语言LISP的一个分支.主要用来自动完成重复性任务,进行客户化开发和编制AutoCAD菜单以及通过简单机制为AutoCAD扩充命令,能够有机的和AutoCAD结合在一起,它语法简单容易上手,到仍有很多的活跃开发用户。但是由于它是解释型API而不是面向对象的编程语言,使它的效率低下,由于执行的是源代码文件所以导致保密性能不高很难用它开发大型的应用程序。在AutoCAD R14.01中,Autodesk公司首次提供了一种新的LISP编程工具:Visual LISP,它是一种面向对象的开发环境,是AutoLISP的扩展和延伸。在AutoCAD2000中,Visual LISP被集成到了AutoCAD环境之中。Visual LISP是一种半编译的API。由于可以被编译所以大大提高了运行效率和安全性。同时它又与AutoLISP完全兼容,又提供了AutoLISP的所有功能,同时它又能够访问AutoCAD的多文档环境,以及对COM/ActiveX技术的支持和反应器等。VisualLISPIDE同时提供了完整的编辑环境使得用户可以对代码进行调试跟踪、源码语法检查、括号匹配、函数提示等工具,方便创建和调试LISP程序。由于VLISP集成于AutoCAD内部,而且随AutoCAD升级而升级所以兼容性比较好,这也是LISP深受广大编程爱好者使用的原因。但在进行大数据的计算处理方面,Visual LISP不能很好的胜任这项任务,这使得开发大型数据运算的程序仍有一定困难。

从目前最新的开发指南来看,AutoLISP 的名字得以保留,并结合DCL的图形界面,成为最新的开发技术之一,也是Autodesk最基础的AutoCAD二次开发技术。

ADS、ARX和ObjectARX

ADS(AutoCAD Development System)是Autodesk公司最早在AutoCAD R11中提供的C语言编程环境。ADS除可使用标准C的函数外,又增加了一组专用于对AutoCAD进行操作的函数。由于ADS程序具有C语言的一切优点,因而它曾是开发AutoCAD R11、AutoCAD R12应用程序的主要工具。用C写就的ADS程序,可在所有支持AutoCAD平台上进行源代码移植。只需使用普通的C语言编译器就可以编译生成ADS模块,与ADS库和标准C库链接后生成可执行文件,装入AutoCAD后即可运行。但是ADS和AutoLISP一样,内在结构不是面向对象的,用AutoLISP解释器加载和调用,利用IPC与AutoCAD通讯。

ARX(AutoCAD Runtime eXtension)是在ADS基础上发展起来的一种面向对象的C语言编程环境。由ADS到ARX的变迁就像C到C++的转变。ARX与老式的ADS及AutoLISP的最大差异在于ARX应用程序是动态链接库,共享AutoCAD地址空间,可以对AutoCAD进行直接函数调用,避免了IPC的系统开销和由此引起的性能下降。因此那些频繁与AutoCAD通讯的应用程序在ARX环境下的运行效率明显优于老式ADS或AutoLISP环境。

ARX最早是在AutoCAD R13中提供的,但在AutoCAD R14中,ARX就被ObjectARX所代替。同时原来的ADS库函数全部被包含在ObjectARX中,将ADS函数合为单一的库就形成了ADSRX。ADSRX库已纳入到AutoCAD的总体结构中,因此它与其他ObjectARX库一样,能共享AutoCAD地址空间。到了新世纪,传统意义上的ADS开发环境的概念已经不复存在,且ADSRX已成为了ObjectARX的一个子集,因此,ObjectARX是包含了ADS、ARX和ADSRX的一种综合的C/C++开发环境。ObjectARX的最大特点是引入了面向对象的编程机制,用户可以根据规则定制实体也是ObjectARX的一大亮点。

ObjectARX.NET

在AutoCAD 2005 版本中Autodesk公司推出了用.NET开发AutoCAD的编程接口。它的实质是通过Managed C++/CLR技术对VC++的ObjectARX进行封装。到AutoCAD 2015十年来Autodesk公司已经完成对大部分ObjectARX编程接口的封装。这种编程方式难度适中,能够访问大部分的编程接口(除了自定义实体);但是,由于AutoCAD的.NET接口是在不断的完善过程中导致了在低版本上不能够使用新增的功能。

ActiveX技术与VBA

自AutoCAD R14起,提供了ActiveX Automation形式的API。ActiveX技术可将各种二进制应用程序组件集成一体。它可采用多种编程方式例如:VBA构造一种或多种与应用程序独立的宏编程。提供Automation服务的软件组件通过标准接口能够对外开放它的特定功能。正是由于AutoCAD拥有ActiveX接口,因此,用户可以容易的用各种AciveX编程语言来定制开发AutoCAD。

AutoCAD包含的VBA能在进程内访问AutoCAD的对象模型。亦可以通过独立的VB进行编程,但是VB与ActiveX的接口需要通过IPC驱动AutoCAD,所以作为ActiveX控件的VBA比VB具有明显的性能优势。特别要强调的是,ActiveX与AutoCAD交互操作很慢,若需要在外部程序中一边运算一边交互操作的重复迭代,将耗费大量时间,如同死机。

值得注意的是,从AutoCAD 2010版本开始,VBA不在随AutoCAD一起安装。如果想要在机器中运行VBA程序必须登录下面的网址进行下载方可运行

VBA 提供了可与其他启用 VBA 的应用程序集成的应用程序。 这意味着 AutoCAD 通过使用其他应用程序对象库可用作其他应用程序(例如 Microsoft Word 或 Excel)的 Automation 控制程序。

VBA 将通过 AutoCAD ActiveX Automation 接口向 AutoCAD 发送信息。 AutoCAD VBA 允许 Visual Basic 环境与 AutoCAD 同时运行,并通过 ActiveX Automation 接口提供 AutoCAD 的编程控制。 这样就把 AutoCAD、ActiveX Automation 和 VBA 链接在一起,提供了一个功能非常强大的接口。 它不仅能控制 AutoCAD 对象,也能向其他应用程序发送数据或从中检索数据。

其他开发技术

《AutoCAD二次开发技术路线及历史演进》有1条评论

发表评论