从1986年AutoCADV2.18提供的Autolisp程序支持,
到1997年AutoCADR14中面向对象的开发环境ARX,AutoCAD
用于二次开发的开发方法及开发环境,一直在不断地发展
与完善。本文对这种发展做了简单的介绍。
本期要目
多媒体:
VB4.0多媒体创作技巧
实用网络:
E-mail工具FoxMail
OA软件:
实用时钟
硬件与维修:
利用微机串口做控制信号源
一、综述
AutoCAD是世界上最流行的通用CAD平台。在国内更是
用户众多,影响深远,尤其是在建筑行业和机械行业拥有
数十万的应用队伍,堪称CAD的标准平台。自1982年Autod
esk公司推出AutoCAD1.0,到今年推出的AutoCADR14,Au
toCAD经历了15年的发展。
AutoCAD于1986年v2.18版时提供了AutoLISP程序设
计的支持,从此开始了可以在一个通用的CAD平台上添加自
己所需的特殊功能的能力。1987年AutoCADv2.6版推出,
Au?瞭oLISP得到一些改善,这也正是国内流行AutoCAD及A
utoCAD环境下开发编程的开始。1988年推出的Au?瞭oCADR
10开始使得AutoLISP程序可以在扩展内存中允许,这对于
编写稍大一点规模的应用程序提供了可能。AutoCAD第一
代开发工具开发出的第一代应用软件开始在国内流行。
1990年推出的AutoCADR11第一次在PC版的Au?瞭oCAD
上提供了C语言开发环境(ADS)的支持,这使得在AutoCAD
的上开发大规模的综合性的应用程序成了可能,AutoCAD
下的应用程序可以利用标准C语言提供的能力,编制出第一
代工具无法实现的应用。真正在国内普遍流行用第二代开
发工具开发AutoCAD,是在1992年推出的AutoCADR12的基
础上进行的。
1994年推出的AutoCADR12上第一次提供了面向对象的
C++开发环境的支持(ARX),这就是AutoCAD第三代开
发工具。AutoCAD本身在内核上也发生了本质的变化,尽管
最终用户并不会感觉到,但AutoCAD确实走向了一个开放
式的面向对象的CAD平台,为今后的进一步发展奠定了技术
基础?:芤藕兜氖荝13上的ARX是个新生事物,本身不完善
,在不同的小版本上的ARX程序不兼容,直至R13C4版才较
为稳定。ARXSDK发布的初期所要求的开发环境也较为苛刻
(要求MSVC2.1~2.2),现在已经可以利用MSVC4.x作
为开发环境。今年刚发布的AutoCADR14将是经三代开发工
具应用的舞台,一方面的R14对ARX的支持更加可靠和稳定
,另一方面ARX经过一定时间的摸索,二次开发商逐步具
备开发ARX应用程序的能力。
二、AutoLISP
AutoLISP是AutoCAD内嵌的一种解释语言开发环境。A
utoCAD从v2.18版开始,一直支持这种开发环境。AutoLI
SP的大部分功能是直接针对AutoCAD,它是一种很好的交
互语言,很适合于CAD这类交互性很强的应用。
AutoLISP有如下优点:
1.语言规则十分简单,易学易用
AutoLISP来源了LISP语言,以一种通用的规则-表(
LIST),来描述过程和数据。由于这种规则极其简单,一
个对计算机了解不太深入的工程专业人员,仅需经短期的
学习,就可以熟练掌握这门语言。LSIP语言的简洁性是其
它许多计算机语言所无法相比的,“万能”的表屏蔽了复
杂的过程,可描述任何数据结构。
2.直接针对AutoCAD,易于交互
AutoLISP提供的大多数函数都是直接针对AutoCAD的
操作,用AutoLISP编写访问AutoCAD图形数据库(DWG)图
形数据库的操作
3.解释执行,立竿见影
程序员既可以一次运行一段AutoLISP代码,也可以在
AutoCAD的Command下逐条键入AutoLISP指令,立即得到结
果。
随着计算机技术的发展,CAD编程更加复杂,代码越
来越庞大,AutoLISP的缺点的愈来愈明显:
1.功能单一,综合处理能力差
2.解释执行,程序运行速度慢
3.缺乏很好的保护机制,软件质量不易保证
4.LISP用来表描述一切,并不能很好的反映现实世
界和过程,跟人的思维方式也不太一致。
5.AutoLISP的这些特点,仅适合于有能力的终端用
户做些自己的开发任务。
三、ADS
ADS是AutoCADR11开始支持的一种基于C语言的灵活的
开发环境。
R11上的ADS程序的编译环境是不流行的C编译器,Hig
hC和WatcomC以及ZotechC。R12DOS虽然支持流行的实模式
的BorlandC/C++编译器和MicrosoftC/C++编译器,
但640K的局限性太大,R12DOS上的主要编译器仍是HighC
和WatcomC。在R12Windows版上,Borland公司和Microsoft
公司的编译器已经可以很好的发挥作用了,不过从运行效
率和规模较大的应用程序来看,Watcom公司的编译器是更
好的选择。
ADS程序的许多特点正好同AutoLISP相反,它比AutoL
ISP程序优越的地方在于:
1.具备错缩复杂的综合大规模处理能力;
2.编译成机器码后执行,速度快;
3.编译时可以检查出程序设计语言的逻辑错误;
4.程序源码的可读性好于LISP。
和AutoLISP相比,不便之处在于:
1.C语言比LISP语言要复杂的多,难以在短时间内掌
握,熟练应用需求更长的周期。
2.ADS程序的隐藏错误,往往导致AutoCAD,乃至操
作系统的崩溃。
3.需要编译才能运行,不易见到代码的效果。
4.同样功能C语言的ADS程序一般比AutoLISP程序的
源代码要长不少,比较繁冗。
用ADSC++进行编程有如下优势:
1.全部面向对象的编程,使得程序层次分明,清晰
可读,从而提高软件的可维护性。
2.经过良好封装ADSC++的程序代码比ADSC程序简
洁的多,许多时候比AutoLIPS更简洁。
3.ADSC++的程序能够减少程序出现错误的概率,
经C++封装后的选择集和实体不再需要调用adsμssfree
和adsμrelrb进行内存释放,可以由对像的析构函数负责
内存的释放。
四、ARX
ARX是AutoCADR13之后推出的一个全新的面向对象的
开发环境,也是AutoCAD第一次直接提供面向对象的第二次
开发工具。ADSC/C++使得可以在AutoCAD上开发大规模
综合应用软件,然而计算机技术的发展不仅要求CAD的交
互性、综合性,同时对自动化、智能化也提出了更高的要
求。可以说AutoLISP着眼于应用程序的交互性,ADSC/C+
+着眼于应用程序的综合性,而ARX则着眼于应用程序的
智能性。
ARX程序有如下特征:
1.能力强
ARX程序具有ADS程序和AutoLISP程序所不能具备的访
问和控制AutoCAD的能力。ARX程序可以监控和处理AutoCA
D的各种事件,可以定义AutoCAD命令,包括可以透明执行
的命令,这些命令可以象AutoCAD自身的命令一样被AutoL
ISP和ADS调用。可以定义AutoCAD数据库对象,包括可见
的实体和不可见的字典,这些对象的行为由程序规定,包
括对象的在各个视窗中的显示和对各种事件的响应。ARX定
义的实体往往可以用较少的数据,就可以实现较复杂的显
示,有利于减少磁盘文件的尺寸。ARX-COM程序是新一代
开放式ActiveX程序,可以被其它Windows应用程序访问。
2.速度快
这里指的是访问AutoCAD数据库的速度。ARX应用程序
本身是AutoCAD的一部分,即被ACAD.EXE调用的动态连接
库(DLL),拥有同AutoCAD一样的内存地址空间,直接访
问AutoCAD的各种内存对象。过去AutoLISP和ADS都是通过
函数间接的访问AutoCAD,以ADS读取AutoCAD数据库为例
,通过ADS库函数取得把AutoCAD数据库对象变换成resbuf
链表,然后访问resbuf链表,需要变换数据结构和遍历链
表两步时间开销。这样在访问AutoCAD数据库的操作上,AR
X应用程序比AutoLISP和ADS的速度要快的多。
3.面向对象的编程
ARX提供了六个主要类库来访问和控制AutoCAD及处理
CAD常见的事物,它们是:
(1).AcRxAutoCAD运行扩展库
(2).AcEdAutoCAD命令扩展库
(3).AcDbAutoCAD数据库访问库
(4).AcGe通用几何库
(5).AcGiAutoCAD图形界面库
(6).AcBr边界描述库
然而,ARX应用程序比ADS程序具备更大的危险性和破
坏必ARX程序设计比ADS要复杂的多,程序设计的错误,经
常导致AutoCAD崩溃,甚至操作系统的崩溃。程序员需要
有很高的职业素质,才能编制好ARX应用程序。此外,ARX
应用程序是一个动态连接库,调试时需频繁启动AutoCAD,
额外的时间开销比Windwos下的ADS要多。这些都说明,开
发ARX应用程序,需要更多的投入。