VS2017 ObjectARX 环境配置
1. AutoCAD 二次开发工具简介:
AutoCAD 软件包是美国 Autodesk 公司的产品,因其功能强大而被广泛应用于我国的机械、
电子、航空等领域,但是在使用中也遇到一些问题,由于 AutoCAD 是一种通用的软件,它很
难满足各行业的行业标准。然而,AutoCAD 开放式结构和其所提供的多种开发工具,使用户
完全摆脱 AutoCAD 的限制,根据自己的需要对其进行二次开发,这也是 AutoCAD 广泛受人们
青睐的主要原因之一。迄今为止,Autodesk 公司已经相继提出了三代 AutoCAD 二次开发工
具如图所示。
1.1 AutoLisp
AutoLisp 是 1986 年随 AutoCAD2.18 提供的二次开发工具,是 LISP 编程语言的一个子
集。AutoLISP 是一种编程语言,包含许多像 C 和 C++那样的基本元素,但语法规则比较简
单。AutoLISP 是一种解释性语言,所以不用对它进行编译。所有的程序代码都用文本编译
器编写(后缀名*.LSP)。
AutoLisp 的优点:1)语言规则简单,易学易用;2)直接针对 AutoCAD,易于交互;
AutoLisp 的缺点是:1)功能单一,综合处理能力差;2)解释执行,程序运行速度慢;
3)源程序保密性差;4)不能直接访问硬件设备和进行二进制文件的读写;5)应用程序用
记事本等字处理软件编写,调试不方便。
1.2 ADS
ADS 即 AutoCAD 开发系统(AutoCAD Develop System),它是用来开发 AutoCAD 应用程
序的 C 语言程序设计环境,它与 AutoCAD 并不直接通信,而是以 AutoLisp 为中介联系起来,
这就摆脱了 AutoCAD 的约束,从而具有更大的灵活性。在采用 ADS 对 AutoCAD 进行开发时,
使用 C 语言来编写 ADS 的应用程序与使用 AutoLisp 语言来编写的程序效果相同。在某些方
面,C 语言的功能比 AutoLisp 要强,比如运行速度比 AutoLisp 快,对各种类型的文件处理
灵活,容易加密,而且使用 ADS 开发方式还可以节省内存,对操作系统及硬件资料的控制也
较强。但 C 语言编程复杂,使用也比较麻烦,程序的任何一点变化都必须经过连接等操作规
程,不易掌握。同时 ADS 程序需要编译才能运行,不易见到代码效果,而且同样功能的 ADS
程序要比 AutoLisp 代码要长得多。
1.3 VBA
VBA:(Microsoft Visual Basic for Applications)是嵌套在 AutoCAD 之中的一个基
于对象的编程环境,它提供了丰富的开发能力,能直接在 AutoCAD 内部执行。VBA 通过 AutoCAD
ActiveX Automation Interface 发送信息到 AutoCAD。
VBA 的优点如下:1)容易使用 Windows 系统资源,使 AutoCAD 能容易地与其他 Windows
下的应用软件交互;2)对话框设计能力比 DCL 好得多,能快速高效地创建对话框;3)多图
档环境下的应用程序比 VisualLisp 提供更多的支持;4)VBA 工程能够单独存储或放在图形
文件中,这使开发者在发布应用程序时有很大的灵活性。
VBA 的缺点是:1)VBA 不能象 VisualLisp 那样随心所欲地使用 AutoCAD 命令,只能像
脚本文件的模式,以字符串的方式向 AutoCAD 命令发送一串响应,这个字串的内容也只好在
自己的程序中生成和进行数据转换;2)源程序始终以相当容易接近的方式,暴露在最终用
户面前,由于用户的误操作,很容易使经常使用的应用程序出错甚至崩溃。
1.4 ObjectARX
ARX 全名 advanced runtime extention,是使用 C++语言结合 MFC 库开发 AutoCAD 应
用的 CAD 二次开发方式。比起 Visual Lisp 和 VBA 方式来,他的功能更加强大,代码运行速
度最快(代码和 cad 基础代码在同一个层次类运行)适合大程序的开发,但是开发难度可想
而知也相对较大。
它提供了以 C++为基础的面向对象的开发环境及应用程序接口,可直接访问 AutoCAD 数
据库的核心数据结构和代码,在运行期间扩展 AutoCAD 固有的类和功能,创建与 AutoCAD
固有命令相同特权的新命令。
与以往的 AutuCAD 二次开发工具 AutoLISP 和 ADS 不同,ObjectARX 应用程序是一个 DLL,
共享 AutoCAD 的地址空间,其效率、数据处理和软硬件控制能力好,是针对多图档环境的程
序设计方法
AutoLisp 与 ADS 都是通过内部进程通信(IPC)来和 AutoCAD 通信,它们和 AutoCAD 是
相互分离的过程,而 ARX 与 AutoCAD 采用 windows 通讯机制,运行更稳定、更简单。
2. ObjectARX 版本对应关系:
3. 软件下载:
3.1 VS2017
下载链接:https://pan.baidu.com/s/1vH7-TROh3JEyV0RHeJSMJA
提取码:pflw
3.2 AutoCAD2019
下载链接:pan.baidu.com/s/1r5hdcs9r7TQ3JUH2SkErhw
提取码:2hz5
3.3 ObjectARX_2019 SDK
3.4 ObjectARXWizard2019
以上两个下载链接:https://pan.baidu.com/s/1XkO_szXNayel7FeyKtZxug
提取码:q3oj
4. 环境配置:
首先安装 VS2017 和 AutoCAD2019,网上有很多教程,这里我就不说了。
之后我们先看 ObjectARX_2019 SDK 的安装。解压下载后的文件,可以看到第一个自解
压文件就是我们需要的 ObjectARX_2019 SDK。直接双击解压到一个指定的文件夹中即可。
这里我建议是在 C 盘创建一个 ObjectARX 文件夹,将 SDK 解压到这个文件夹下,如下图
所示:(为什么建议解压到这个文件夹下呢?因为我安装时是解压到了 D 盘目录下,但是向
导安装完成后编译生成的项目报错,提示错误为“C:\ObjectARX\inc\arx.props 文件无法
找到”。对此基本可以判断问题出在 arx.props 文件不存在导致的引用出错,所以我就把 D
盘解压出来的文件全部拷贝到了该文件夹下,项目创建就没有报这个错误了)
SDK 安装完成后进行向导的安装。
安装 ObjectARX Wizard 过程如下,双击运行安装包,在安装界面需要设置 RSD(注册
开发符号,大致为 ARX 命令标识),以及 ObjectARX SDK 和 AutoCAD 程序的路径,这里我们
务必要指定正确的目录,如下图所示。之后我们就一直下一步即可。
向导安装完成后我们就可以通过向导创建 ARX 项目了。打开 Visual Studio 就可以看到
Autodesk 项目模板,选择【OK】即可进入 ObjectARX 向导。
我在第一次创建项目的时候点击【OK】并没有生成项目,也没有提示错误,就停留在上
面的界面。网上查找了很多的教程,基本上都是说向导安装的时候要以管理员身份运行。而
mis 安装程序没有这个选项,需要修改注册表重新安装吧啦吧啦。
然而重装是不可能重装的。我又看了很多的教程,终于让我找到了!如下:
“安装完成后,若无法新建 ObjectARX 开发项目,则有可能是 ObjectArxWizard 有 Bug。
进入以下路径 VS2012\VC\vcprojects\Autodesk,更改以下两个文件 ArxAppWiz182.vsz、
ArxAppWiz.vsz。
将其中的两项改为以下内容。
Wizard=VsWizard.VsWizardEngine.11.0//版本号
Param="ABSOLUTE_PATH=C:\ProgramFiles(x86)\Autodesk\ObjectARX2014Wizards\ArxAppW
iz"//ObjectARXWizard 安装路径”
由于 VS2017 的文件目录与 2012 有些不同,于是我用 everything 搜索 ArxAppWiz.vsz。
目录如图所示:
之后对上面提到的两个文件进行编辑:
我只修改了文件目录这一个选项,找到我的 ObjectARXWizard 安装路径,之后将上面提
到的第二个参数修改为如图所示的路径。之后创建项目成功!
成功创建项目的 VS2017 界面如下:
之后进行编译,这时候报错了,错误信息为“error C2338: /RTCc rejects conformant
code, so it isn't supported by the C++ Standard Library. Either remove this compiler
option, or define _ALLOW_RTCc_IN_STL to acknowledge that you have received this
warning”。按照提示,他让我们要么关闭 Smaller Type check(/RTCc):数据截断的检测这
个选项,要么定义_ALLOW_RTCc_IN_STL 宏。
因此,我的解决方法是关闭这个检查,如下图:
之后进行编译,这时候又报错了(好崩溃啊有没有!),错误信息为“error MSB8036: 找
不到 Windows SDK 版本 8.1。在网上查找解决方案,如下网站的内容很好地解决了这个问
题。
https://zhidao.baidu.com/question/1951627826004020948.html
到此,我的程序编译成功,生成 Arx 文件。注意:由于 Arx 与 AutoCAD 版本内互相兼容,
版本外互不兼容,64 位 32 位互不兼容。所以我们在编译时选择 x64 平台进行编译。否则在
64 为 AutoCAD 平台上加载我们编写的 Arx 文件会出现 arx 与此版本的 AutoCAD 不兼容的情
况。
最后就是 AutoCAD 2019 加载测试。
第一步打开 AutoCAD2019,选择管理栏目,单击加载应用程序,如下图所示:
第二步,在弹出的对话框中选择刚刚编译好的 arx 文件并单击加载,如下图所示。
加载成功后会看到如下图所示的内容。
如果看到该行文字说明已经可以开始进行 objectARX 的开发工作了。
至此,我们开发环境的搭建成功!可以开始下一步的学习了。