深居浅出 AutoCAD 二次开发
来源:    发布时间: 2012-11-20 13:15   3649 次浏览   大小:  16px  14px  12px

 

 

     CAD (Computer Aided Design)计算机辅助设计,是计算机技术的一个重要的应用领域。AutoCAD是美国Autodesk公司开发的交互式绘图软件,用于二维及三维设计、绘图的系统工具,用户可以使用它来创建、浏览、管理、打印、输出、共享及准确复用富含信息的设计图形。

Autodesk公司成立于19821月,在近二十年的发展历程中,不断丰富和完善AutoCAD系统,并连续推出各个新版本使AutoCAD由一个功能非常有限的绘图软件发展到了现在功能强大、性能稳定、市场占有率位居世界第一的CAD系统,在城市规划、建筑、测绘、机械、电子、造船、汽车等许多行业得到了广泛的应用。统计资料表明,目前世界上有75% 的设计部门、数百万的用户应用此软件,大约有50万套AutoCAD软件安装在各企业中运行。

      AutoCAD的更新升级的速度非常快,每个新版本都会加入一些更新更强大的功能。从AutoCAD2000开始,增添了如AutoCAD设计中心(ADC)、多文档设计环境(MDE)Internet驱动、新的对象捕捉功能、增强的标注功能以及局部打开和局部加载的功能;AutoCAD 2005新增了图纸集功能和用于显示可能会在图形生命周期中修改的数据的字段对象;AutoCAD2006新增了动态块功能,动态块中定义了一些自定义特性,可用于在位调整块,而无需重新定义该块或插入另一个块;AutoCAD2008增添了自动缩放注释及多重引线,AutoCAD2010增强了三维功能,更大的突破是参数化绘图功能,可以在图纸上建立对象之间的几何关系及约束关系。AutoCAD系统在不断完善,功能在不断增强。


虽然AutoCAD本身的功能集已经足以协助用户完成各种设计工作,但用户还可以通过Autodesk以及数千家软件开发商开发的五千多种应用软件把AutoCAD改造成为满足各专业领域的专用设计工具。AutoCAD荣登全球绘图软件的龙头宝座,主要是因为它具有开放的体系结构。它允许用户和开发者采用高级编程语言对其进行扩充和修改(即二次开发)能最大限度地满足用户的特殊要求。

1.二次开发内容

1)编写各种用户自定义函数并形成若干LISPARXVLXADSDLL文件,以及一些DCL文件。

2)建立符合自己要求的菜单文件,一般可在AutoCAD原菜单文件内添加自己的内容,对于AutoCAD2000以后版本可增加部分菜单文件,然后经交互方式加入到系统中去。

3)在系统的ACAD.LSP或类似文件中加入某些内容以便进行各种初始化操作,如在启动时立即装入一些文件等。

4)通过系统对话框设置某些路径。这些操作在程序开发成功后向其它AutoCAD系统上安装应用,特别是需要大批安装时,需要进行很多文件检索、内容增删、子目录创建、文件拷贝、系统设置等繁琐工作,如能令上述工作全部自动进行,使整个二次开发程序在无人干预的情况下嵌入系统,大大提高工作效率.

2.二次开发方式

AutoCAD第一版于198211月推出,其二次开发语言及工具也在不断地涌现。

 

1AutoLISP

AutoLISP的全名是LIST Processing Language,出现于1985年推出的AutoCAD R2.18中,是一种嵌入在AutoCAD内部的编程语言,是LISP原版的一个子集,一直是低版本AutoCAD的首选编程语言。AutoLISP是一种表处理语言,是被解释执行的,任何一个语句键入后就能马上执行,对于交互式的程序开发非常方便。其缺点是继承了LISP语言的编程规则而导致繁多的括号。

2ADS

ADS的全名是AutoCAD Development System,是AutoCADC语言开发系统,ADS本质上是一组可以用C语言编写AutoCAD应用程序的头文件和目标库,直接利用用户熟悉的各种流行的C语言编译器,将应用程序编译成可执行的文件在AutoCAD环境下运行,这种可以在AutoCAD环境中直接运行的可执行文件叫做ADS应用程序。ADS由于其速度快,又采用结构化的编程体系,因而很适合于高强度的数据处理,如二次开发的机械设计CAD、工程分析CAD、建筑结构CAD、土木工程CAD、化学工程CAD、电气工程CAD等。

3ObjectARX

ObjectARX是一种崭新的开发AutoCAD应用程序的工具,以C++为编程语言,采用先进的面向对象的编程原理,提供可与AutoCAD直接交互的开发环境,能使用户方便快捷地开发出高效简洁的Auto CAD应用程序。ObjectARX并没有包含在AutoCAD中,可在AutoDesk公司网站中去下载,ObjectARX能够对AutoCAD的所有事务进行完整的、先进的、面向对象的设计与开发,并且开发的应用程序速度更快、集成度更高、稳定性更强。

4VisualLISP

VisualLISP已经被完整地集成到AutoCAD中,为开发者提供了崭新的、增强的集成开发环境,一改过去在AutoCAD中内嵌AtuoLISP运行引擎的机制,这样开发者可以直接使用AutoCAD中的对象和反应器,进行更底层的开发。用它开发AutoLISP程序的时间被大大地缩短,原始代码能被保密,以防盗版和被更改;能帮助大家使用ActiveX对象及其事件;使用了流行的有色代码编辑器和完善的调试工具,使大家很容易创建和分析LISP程序的运行情况。在VisualLISP中新增了一些函数:如基于AutoLISPActiveX/COM自动化操作接口;用于执行基于Auto CAD内部事件的LISP程序的对象反应器;新增了能够对操作系统文件进行操作的函数。

5VBA

VBA Mcrosoft office中的Visual Basic for Applications,被集成到AutoCAD中。VBA为开发者提供了一种新的选择,也为用户访问AutoCAD中丰富的技术框架打开一条新的通道。VBAAutoCAD中强大的ActiveX自动化对象模型的结合,代表了一种新型的定制AutoCAD的模式构架。通过VBA,我们可以操作AutoCAD,控制ActiveX和其它一些应用程序,使之相互之间发生互易活动。不过在2010以后的新版本中AutoCAD将不再支持VBA开发。

6AutoCAD .NET

AutoCAD 2006开始,Autodesk为其开发增加了.NET API.NET API提供了一系列托管的外包类(Managed Wrapper Class),使开发人员可在.NET框架下,使用任何支持.NET的语言,如VB.NETC# Managed C++等对AutoCAD进行二次开发。其优点是完全面向对象,在拥有与C++相匹配的强大功能的同时,具有方便易用的特点,是较理想的AutoCAD二次开发工具。.NET API与传统ObjectARX的区别主要源于在.NET环境下开发应用程序与在VC环境下开发应用程序的区别。首先,在VC环境下,程序员需要自己管理内存的申请和释放,而.NET采用了垃圾回收机制,由.NET框架自行判断内存回收的时机并实行回收,从而解决了令C++程序员头痛的内存泄漏问题。也正是由于这个特点,在.NET环境下不能象在C++环境下那样利用析构函数释放其他的资源,需要程序员在程序中显式地释放。在.NET API中,主要通过Dispose函数进行资源的释放。其次,ObjectARX中的各种反应器(Reactor).NET API中由外包类映射为各种事件(Event),可通过定义这些事件的响应函数来响应AutoCAD的各种操作。