如何看待AutoCAD二次开发工具

如何看待AutoCAD二次开发工具

由于AutoCAD软件提供了友好的人机交互模式、良好的二次开发平台、实惠的价格而深受广大企业的青睐 。目前所选用的CAD软件首推AutoCAD各版本软件或是在其基础上二次开发的软件,如高华CAD、华中理工大学IntelCAD等 。许多用户正是看中AutoCAD提供的二次开发功能,有利于开发出适合厂情的功能模块,但是,AutoCAD的版本升级较快,在近几年推出了AutoCAD R13、AutoCAD R14、AutoCAD、R2000,使得用户在使用特别是在二次开发上变得无所适从 。本文正是从这一情况出发 , 探讨在AutoCAD平台上使用的开发工具 。

一、引言

AutoCAD技术的应用已涉及到航空航天、汽车、机械、建筑、电子电器等各行各业,它从根本上改变了传统手工绘图、依靠图纸组织整个生产过程的技术管理模式 。采用CAD技术能快速地进行新产品设计、提高设计质量和缩短新产品设计周期以加强企业的竞争力,对传统产业的改造、新兴技术和产业的兴起与发展、我国产业国际化的增强等方面,均能产生巨大的推动作用 。
AutoCAD的二次开发途径主要有两个,即文件开发和程序开发 。文件开发是指根据用户的具体开发需要,按照AutoCAD提供的方法和文件格式,通过编辑AutoCAD系统所支持的文本文件(如菜单文件和线型文件等)或建立同种类型新的文本文件,来开发AutoCAD,使其满足用户特定需要的方法 。程序开发是指利用AutoCAD提供的编程环境和开发工具(称为AutoCAD应用程序接口,缩写为API),通过编写程序来实现对AutoCAD开发的方法 。借助于程序开发,可为AutoCAD扩充新的命令或定义,以满足用户具体需要 。

从目前各行各业对AutoCAD的应用情况来看,主要表现在直接应用和间接应用两个方面 。其中,前者为直接利用提供的强大的绘图功能进行图形的绘制;后者为利用提供的强大的开发工具结合本行业的实际情况对AutoCAD进行的二次开发,这种应用是对AutoCAD的更高层次的应用 。

二、开发常用工具

1.AutoLISP

AutousP出现于1985年推出的AutoCADRZ.18中,是一种嵌人在AutoCAD内部的编程语言 , 完全针对AutocAD进行编程,是UsP原版的一个子集,它一直是低版本AutoCAD的首选编程语言 。它可以直接访问和修改AutoCAD当前的图形数据库,为AutoCAD增加新命令或修改AutocAD,实现参数化绘图程序设计 。它与主流编程语言如C/C、BAsIC等相比语法非常简单,也较灵活,但功能也相对简单些 。其缺点是继承了USP语言的编程规则而导致繁多的括号 。

2.ADS

ADS是AutoCAD提供的运用C语言开发应用程序的系统 , 本质上是一组可以用C语言编写的头文件和目标库 , 它直接利用用户熟悉的各种流行的C语言编译器,将应用程序编译成可

执行的文件在AutoCAD环境下运行,这种可以在AutoCAD环境中直接运行的可执行文件叫做ADS应用程序 。它要求开发者既懂C语言又熟悉AutocAD,因此,被认为比AutoUsP更高级的开发手段 。使用ADS既可以开发独立的应用程序,也可以开发常用函数供Autollsp程序调用 。后者的好处是既可提高编程效率,又可对程序进行保护,国内开发商大多采用这种方式 。ADS由于其速度快,又采用结构化的编程体系,因而很适合于高强度的数据处理,如二次开发的机械设计CAD、工程分析CAD、建筑结构CAD、土木工程CAD、化学工程CAD、电气工程CAD等 。

3.ARX

尽管ADS有很多值得称赞之处 , 但它也有一个先天不足之处 , 这就是ADS程序必须通过AutousP解释器加载 , 并非最低层的代码,各方面的条件都会打折扣 。正因为如此 , 在R13版中AutoCAD提供了更为高级的开发工具ARXoARX是Autodesk公司在AutoCAD13版之后推出的一个全新的面向对象的二次开发环境,也是AutocAD第一次提供面向对象的二次开发工具 。使用ARx编写的应用程序不需经过USP解释器加载,它可以和AutocAD的进程共享内存空间 , 即用ARx编写的命令可以和AutoCAD中line、协i二等命令于同一级别 , 显然要比AutoUSP、ADS形式得到更快的响应11] 。ARx有一个更为重要的功能 , 即允许用户定义自己的对象,构造自己的图形数据,可以像管理内部定义对象一样进行处理 。ARx同样使用C语言,用VB、vc进行编程,开发环境与ADS相同,目前ARx已经升级为objectARX了 。

三、开发工具之间的关系

1.AutoLISP、ADS及ARX与AutoCAD的关系

三者都是AutoCAD的内嵌式编程语言,用户利用这些语言建立新的命令,扩充AutoCAD原有功能 。AutoLISP可以很方便地为AutoCAD增加新命令,它通过内部进程通讯与AutoCAD通信;ADS是用C语言应用程序 , 它作为外部函数加载到AutoCAD,需要由AutoLISP解释器来调用 , 它也是通过IPC和AutoCAD通讯 , 它们与AutoCAD是分离进程,如图1所示 。ARX是可编译的C程序,与ADS不同的是,ARX以动态链接库(DLL)的形式与AutoCAD共享地址空间,直接调用AutoCAD的核心函数 , 并可直接访问AutoCAD数据库 。


2.AutoLISP和ADS的关系

从图1可以看出 , ADS和AutoLISP它们都是通过IPC来和AutoCAD实现通讯的 。每个ADS应用程序都必须支持由ADS环境定义的与AutoLISP的接口,这种接口要求每个应用程序要使用特定的数值,并按特定的数值调用ADS库函数 。通常,AutoLISP是按一定的顺序调用ADS应用程序,如:在初始化时或在调用(xload)函数时,AutoLISP加载一个ADS应用程序;ADS应用

程序通过调用ads_init(),初始化与AutoLISP的接口联系; ADS应用程序通过调用ads_link()并传入一个应用程序的结果码RSRSLT , 指示接受和处理来自AutoLISP的请求;从ads_link ( )中返回一个请求码RQXLOAD;每调用一次ads_defun(),该应用程序即定义一个外部函数等 。由此可知,一个ADS应用程序基本上是AutoLISP的一个“奴隶”,一直在等待着AutoLISP的请求,需要反复调用ads_link(),所以保持请求顺序的最自然的作法就是将该函数放在一个“无限”循环的开始 。

3.ADS与ARX的关系

从功能上可以描述为包容或包含的关系 。实际上,一个完整的ADS库函数是ARX环境的一部分,通常称为ADSRX 。ADSRX和标准的C语言版本的ADS库在功能上是完全一致的 。不同的是ADSRX作为AutoCAD的一部分,它同样分享着AutoCAD的地址空间,而ADS则需要通过IPC才能实现通讯 。也就是说ADS的功能可以通过ADSRX完全替代 。一个ADS应用程序包含一个无限循环,一直在等待着AutoLISP的请求;而ARX有一个为使用消息提供的入口 。当用户登记命令时,它实现了同AutoCAD的通信,当用户重载在ARX库中C类的虚构函数上时,这些函数便实现了应用程序的入口功能 。

四、结束语

随着AutoCAD应用的日益普及,软件开发工具与硬件设备不断地更新,使得人们对应用程序功能的需求与日俱增,对其进行二次开发的工具也不断更新 。VisualllSP、objectARX、ActiveXAu-tolnation等工具也显示出它们的优势,使得应用程序在修改上更具弹性,在使用上更加智能 。对于用户来说,应根据本身所熟悉的AutoCAD的版本,以及所熟悉的开发环境、需求的特点来选择AutoCAD的开发工具 , 不必刻意追求新奇的开发工具,但也应逐渐地了解和接受它,以备将来开发出更适合厂情和国情的AutoCAD增值模块和软件 。【如何看待AutoCAD二次开发工具】



经验总结扩展阅读