屈原游放汨罗江时间:AUTOCAD二次开发简介

来源:百度文库 编辑:中财网 时间:2024/05/07 02:08:59
AutoCAD的二次开发主要涉及以下内容:(1)编写各种用户自定义函数并形成若干LISP、ARX、VLX或ADS文件,以及一些DCL文件。(2)建立符合自己要求的菜单文件,一般可在AutoCAD原菜单文件内添加自己的内容,然后经交互方式加入到系统中去。(3)在系统的ACAD.LSP或类似文件中加入某些内容以便进行各种初始化操作,如在启动时立即装入一些文件等。(4)通过系统对话框设置某些路径。这些操作在程序开发成功后向其它AutoCAD系统上安装应用,特别是需要大批安装时,需要进行很多文件检索、内容增删、子目录创建、文件拷贝、系统设置等繁琐工作,如能令上述工作全部自动进行,使整个二次开发程序在无人干预的情况下嵌入系统,将大大提高工作效率。
AutoCAD荣登全球绘图软件的龙头宝座,主要是因为它具有开放的体系结构。它允许用户和开发者采用高级编程语言对其进行扩充和修改,即二次开发,能最大限度地满足用户的特殊要求。AutoCAD第一版于1982年11月由AutoDESK公司推出,其二次开发语言及工具也在不断地涌现
1 AutoLISP
AutoLISP的全名是LIST Processing Language,她出现于1985年推出的AutoCAD R2.18中,是一种嵌入在AutoCAD内部的编程语言,是LISP原版的一个子集,她一直是低版本AutoCAD的首选编程语言。它是一种表处理语言,是被解释执行的,任何一个语句键入后就能马上执行,它对于交互式的程序开发非常方便。其缺点是继承了LISP语言的编程规则而导致繁多的括号。
3 ADS
ADS的全名是AutoCAD Development System,它是AutoCAD的C语言开发系统,ADS本质上是一组可以用C语言编写AutoCAD应用程序的头文件和目标库,它直接利用用户熟悉的各种流行的C语言编译器,将应用程序编译成可执行的文件在AutoCAD环境下运行,这种可以在AutoCAD环境中直接运行的可执行文件叫做ADS应用程序。ADS由于其速度快,又采用结构化的编程体系,因而很适合于高强度的数据处理,如二次开发的机械设计CAD、工程分析CAD、建筑结构CAD、土木工程CAD、化学工程CAD、电气工程CAD等。
4 ObjectARX
ObjectARX是一种崭新的开发AutoCAD应用程序的工具,她以C++为编程语言,采用先进的面向对象的编程原理,提供可与AutoCAD直接交互的开发环境,能使用户方便快捷地开发出高效简洁的Auto CAD应用程序。ObjectARX并没有包含在AutoCAD中,可在AutoDESK公司网站中去下载,其最新版本是ObjectARX for AutoCAD 2000,它能够对AutoCAD的所有事务进行完整的、先进的、面向对象的设计与开发,并且开发的应用程序速度更快、集成度更高、稳定性更强。ObjectARX从本质上讲,是一种特定的C++编程环境,她包括一组动态链接库(DLL),这些库与AutoCAD在同一地址空间运行并能直接利用AutoCAD核心数据结构和代码,库中包含一组通用工具,使得二次开发者可以充分利用AutoCAD的开放结构,直接访问AutoCAD数据库结构、图形系统以及CAD几何造型核心,以便能在运行期间实时扩展AutoCAD的功能,创建能全面享受AutoCAD固有命令的新命令。ObjectARX的核心是两组关键的API,即AcDb(Auto CAD数据库)和AcEd(Auto CAD编译器),另外还有其它的一些重要库组件,如AcRX(Auto CAD实时扩展)、AcGi(Auto CAD图形接口)、AcGe(Auto CAD几何库)、ADSRX(Auto CAD开发系统实时扩展)。ObjectARX 还可以按需要加载应用程序;使用ObjectARX进行应用开发还可以在同一水平上与Windows系统集成,并与其它Windows应用程序实现交互操作。
5 VisualLISP
VisualLISP已经被完整地集成到AutoCAD 2000中,她为开发者提供了崭新的、增强的集成开发环境,一改过去在AutoCAD中内嵌AtuoLISP运行引擎的机制,这样开发者可以直接使用AutoCAD中的对象和反应器,进行更底层的开发。用它开发AutoLISP程序的时间被大大地缩短,原始代码能被保密,以防盗版和被更改;能帮助大家使用ActiveX对象及其事件;使用了流行的有色代码编辑器和完善的调试工具,使大家很容易创建和分析LISP程序的运行情况。在VisualLISP中新增了一些函数:如基于AutoLISP的ActiveX/COM自动化操作接口;用于执行基于Auto CAD内部事件的LISP程序的对象反应器;新增了能够对操作系统文件进行操作的函数。
6 VBA
VBA 即Mcrosoft office中的Visual Basic for Applications。VBA为开发者提供了一种新的选择,也为用户访问AutoCAD 2000中丰富的技术框架打开一条新的通道。VBA和AutoCAD中强大的ActiveX自动化对象模型的结合,代表了一种新型的定制AutoCAD的模式构架。通过VBA,我们可以操作AutoCAD,控制ActiveX和其它一些应用程序,使之相互之间发生互易活动。
二 百度
ADS、ADSRX、ObjectARX、LISP比较,要做ARX程序先看看
ADS 曾经是在 AutoLISP 之后的一种用户程序,在 R14 之前的AutoLISP 程序虽然是解释运行,仍比 ADS 程序快一些,因为实际上ADS是用AutoLISP与AutoCAD交互。自AutoCAD R14已经不再支持和发展 ADS程序设计模式,同时却增加了Visual LISP,以进一步提高AutoLISP 的整体性能。
ObjectARX一般是在Autodesk内部或增值软件开发商中使用。由于ARX是使用Visual C++作为基本程序设计语言,无论其效率、数据处理和软硬件的控制能力都是最好的,是唯一圆满地针对多图档环境的程序设计方法。是从根本上扩展 VLISP / VBA 的程序设计方法。
但是,与AutoCAD命令交互的功能,ARX很难借用AutoCAD强大的CAGD功能。另外,要想真正发挥这种开发模式的作用,对于程序设计者的要求(计算机专业知识、软件专业知识等等)也较高,而且程序运行风险较大。要求程序自己做好各种数据的测试,自己设计好各种条件下的出错处理和恢复,否则ARX 程序的崩溃常常会连带 AutoCAD、甚至Windows9x一起崩溃。因此,这种开发模式不适于在专业设计工程师中间普及。
以上摘自明经杂志第3期,陈伯雄老师的文章。以下是我个人看法:
ADS是AutoDESK在LISP语言之后,为C语言所做的SDK,也就是C语言开发ACAD应用程序的接口。虽然ADS不是象LISP一样解释型开发语言,但它与ACAD之间的通信机制仍是基于LISP的。ADSRX在ADS的基础上添加了部分面向对象的概念,可以认为是ADS的C++扩展,其本质仍是ADS,其功能也不比LISP语言更强大。对于熟悉C/C++语言的程序员来说,也许ADS/ADSRX比LISP更灵活,代码具有更好的可读性。
ObjectARX其本质是windows动态链接库,ARX与ACAD之间的通信机制是通过windows消息响应,与ACAD共享内存空间。其开发语言为Visual C++,具有全部面向对象的特点,可以使用全部windows API功能,这种开发模式几乎没有功能上不足。尤其是自定义类的派生,多文档管理等windows程序设计技术是ADS、ADSRX、LISP等开发模式所无可比拟的。ObjectARX结合MFC(微软基础类库)甚至可以象VC,Dephi一样开发出与windows风格一致的应用程序。
ObjectARX功能强大,但也有致命弱点,正如陈老师所说,程序设计难度大,出错后易导致ACAD甚至windows的崩溃。所以虽然ObjectARX能做很多事,但难以掌握,甚至有些在ACAD环境下应该很容易的工作,比如添加一个对象,ACAD也许就是一条命令就能解决,但ARX程序是直接操作ACAD图形数据库的,它要经过打开数据库、打开块表、获取块表记录、生成对象、添加对象、关闭对象、关闭块表记录、关闭块表、关闭数据库等诸多步骤。
打个不恰当的比方,ARX就象汇编语言,它深入到了ACAD的最底层,什么都能做,但很繁,也容易出错。因此若没有特殊原因,应该选用LISP语言或VBA作为开发工具。要学ARX,就要做好与学汇编一样的思想准备。