欢迎来到论文网! 识人者智,自知者明,通过生日认识自己! 生日公历:
网站地图 | Tags标签 | RSS
论文网 论文网8200余万篇毕业论文、各种论文格式和论文范文以及9千多种期刊杂志的论文征稿及论文投稿信息,是论文写作、论文投稿和论文发表的论文参考网站,也是科研人员论文检测和发表论文的理想平台。lunwenf@yeah.net。
您当前的位置:首页 > 科技论文 > 计算机论文

综述AutoCAD二次开发工具

时间:2011-04-23  作者:秩名

论文导读:美国Autodesk公司是目前世界上比较成功的CAD领域的开发商,其开发的AutoCAD一直是CAD市场中的主流产品,随着AutoCAD的日益普及,在其上进行二次开发的工具也相继由该公司推出。企业购进AutoCAD软件,并非只能用作代替“图板”,只有真正地在其上实现了二次开发,才能充分发挥AutoCAD作用。
关键词:AutoCAD,二次开发
 

随着计算机技术的发展,计算机软件在工程设计领域的应用越来越广。在机械、电子、建筑等行业,应用计算机软件进行产品设计的CAD软件也非常丰富,世界和国产的各种优秀CAD软件正以前所未有的速度进入机械、电子、建筑等行业的各个领域,使产品设计人员能够高效率地进行各自领域的产品分析、设计等工作。美国Autodesk公司是目前世界上比较成功的CAD领域的开发商,其开发的AutoCAD一直是CAD市场中的主流产品,随着AutoCAD的日益普及,在其上进行二次开发的工具也相继由该公司推出。企业购进AutoCAD软件,并非只能用作代替“图板”,只有真正地在其上实现了二次开发,才能充分发挥AutoCAD作用。CAD二次开发,有很多不同层次的语言和库可供选择。本文就此向大家分别做一介绍。

第一大类: AutoLisp和VisuaLisp

Lisp是一种计算机的表处理语言,是在人工智能学科领域广泛应用的一种程序设计语言。AutoLisp语言完全嵌套在ACAD内部,同ACAD有机地结合成一体。它既具备一般高级语言的基本结构和功能,又具备一般高级语言所没有的强大的图形处理能力。论文大全。AutoLisp可直接调用几乎全部ACAD的命令,从而进行ACAD的二次开发。利用AutoLisp开发ACAD的一个典型例子就是实现参数化绘图的程序设计。

AutoLisp具有如下优点:

1.AutoLisp是一种表处理语言,是被解释执行的,任何一个语句键入后就能马上执行,它对于交互式的程序开发非常方便。在ACAD的开发工具中,它是唯一的一种不需要专门的编译工具,直接调用其编写的函数,就可以实现目标操作的语言。

2.AutoLisp语言中的一切成分都是以函数形式给出的,它没有语句概念和其他语法结构。执行AutoLisp程序就是执行一些函数,再调用其他函数。

3.AutoLisp把数据和程序统一表达为表结构,即S-表达式,使数据和程序融为一体。

4.AutoLisp语言中的程序运行过程就是对函数的求值过程,是在对函数求值的过程中实现函数的功能。

5.AutoLisp语言的主要控制结构采用递归方式,使程序简单易懂。

VisuaLisp是AutoLisp的扩展,是为加速AutoLisp程序开发而设计的软件工具。VisualLisp已经被完整地集成到ACAD中,为开发者提供了增强的集成开发环境,这样开发者可以直接使用ACAD中的对象,进行更底层的开发。用它开发AutoLISP程序的时间被大大地缩短,而且原始代码能被保密,以防被他人更改;同时利用可视化的编程环境,大大地减小了学习难度。作为脚本语言的VisuaLisp程序,同样存在两大不可避免的缺陷。第一是当程序规模很大或是操作的对象数量过多时,运行速度慢,让你明显感觉到它的迟钝。第二是ACAD命令本身做不到的功能,它也是无能为力。譬如关于自定义对象、内存操作、数据传递之类,只能依赖其他办法来解决了。所以我个人认为Lisp适用于把现有命令组合成一个新命令来使用,尤其是存在大量重复操作的时候,用来做批处理非常好。唯一让人感到不适的是,由于Lisp语言本身的语法要使用大量的圆括弧,当嵌套层次较深时,往往会在括弧的配对上发生问题。

第二大类:ADS(AutoCAD Development System)、ARX(AutoCAD Runtime eXtension)和ObjectARX (AutoCAD Runtime Extension)

ADS是从AutoCADR11开始引入的基于C语言开发应用程序的系统。ADS不是C语言的一个子集,也不是基于C而编制的专用语言(如Microstation的MDL),但它包括了C的全部功能。它具有C的一切优点,又能操作CAD。它对开发人员C语言要求较高。C是编译型语言,功能强大,因此ADS很轻易地克服了AutoLisp所固有的许多缺点而具有速度快,安全性高的特点。ADS不包含于ACAD内部,而是作为一组AutoLisp外部函数由AutoLisp解释器装入、解释并请求ACAD运行。其特点如下:

1.ADS程序是将应用程序编译成可执行的文件,通过AutoLisp和ACAD进行通讯。

2.ADS程序更“绝缘”,ADS程序是一系列独立的过程,程序崩溃并不一定导致AutoCAD系统崩溃(尽管并不总是如此)。

3.ADS程序是不可重复加载的。

4.ADS程序具有保密性好,运行速度快的特点,因而很适合于编写计算量大或需要与主机环境交互的应用程序。

5.ADS只能使用传统的C语言进行编程,采用传统结构化的编程体系。

早期国内常见的应用软件多是用ADS进行开发的,但ADS程序必须经过AutoLisp解释加载,因此ADS的各方面性能受到限制。同时,随着网络技术的迅速发展,面向过程的ADS已有些力不从心了,所以,在AutoCADR13开始推出的一个全新的面向对象的开发工具ARX。ARX是在ADS基础上发展的面向对象的环境,使用C++语言。最终ARX进化为ObjectARX。

ObjectARX是一种崭新的开发AutoCAD应用程序的工具,提供了以C++为基础的面向对象的开发环境及应用程序接口,能真正快速访问ACAD图形、数据库,同时能使用户方便快捷地开发出高效简洁的ACAD应用程序。ObjectARX开发的应用程序速度更快、集成度更高、稳定性更强,同时向下兼容ADS。它的特点是很明显的:

1.ObjectARX与ADS程序和AutoLisp程序都不相同。从本质上讲,是一种特定的C++编程环境,它包括一组动态链接库(DLL),这些库与ACAD在同一地址空间运行并能直接利用ACAD核心数据结构和代码。在ObjectARX中,每个命令都有独立的入口。ObjectARX程序还可以创建新的类,这些类可以为其他程序所共享,从而充分利用面向对象的编程的优点。

2.对于需要经常和ACAD通讯的应用程序来说,ObjectARX程序比ADS程序运行速度更快,这里的运行速度主要指是访问ACAD数据库的速度。

3.相比之下,ObjectARX程序是比宏更基本的程序。主程序(ACAD)可调用每个由ObjectARX程序注册的命令。

4.ObjectARX程序具有ADS程序和AutoLisp程序所不具备的访问和控制ACAD的能力。ObjectARX程序可以监控和处理ACAD各种事件,可以定义ACAD命令,包括可以透明执行的命令。论文大全。这些命令可以像ACAD自身的命令一样被AutoLisp和ADS所调用。

基于以上优点就充分说明了ObjectARX的彪悍。天上不会掉馅饼,这个方式的代价就是难度提高了。对于ObjectARX编程,Autodesk公司建议使用Visual C++4.2及以上版本的开发环境,这一点就要求开发者具有较高的起点,对语言的学习程度要求较高,对广大用户来说相当不易掌握。(在CAD2006以前,只能使用C++语言和VC编译器来生成ObjectARX程序,但目前已经可以使用VB.net C# C++等语言配合VisualStudio.net编译器来生成ObjectARX程序了。)C++语言本身就很复杂(VB.net和C#也不方便到哪里去),再配上复杂度不相上下的ObjectARX库,如果要写出切实可用的程序,还要深入了解ACAD本身的结构。ObjectARX最致命的缺点,由于已经和ACAD融为一体,和AutoCAD共享进程空间,ObjectARX程序崩溃通常会导致ACAD系统的崩溃。

第三大类:ActiveX和VBA(VisualBasic for Application)

ActiveX是Microsoft提出的一组使用COM(ComponentObject Model,部件对象模型)使得软件部件在网络环境中进行交互的技术集。AcitveX与具体的编程语言无关,可以用任何一种支持他的语言来编写,但大家习惯选择简单易用的VB语言。

Autodesk公司从R14开始内置了VBA开发工具,同时提供了适于VBA(VB)开发的ActiveX Automation对象模型,对于熟悉VB语言又不想学习Lisp奇怪语法的开发者来说,这是不错的选择。VBA(VB)的主要特点如下:

1.VBA最早是内嵌在Office97中的一种编程语言,它易学易用,功能强大。所以Autodesk公司从R14之后把它也嵌入了AutoCAD中。

2.VBA和AutoCAD 2000中强大的ActiveX自动化对象模型的结合,代表了一种新型的定制AutoCAD的模式构架。通过VBA,我们可以操作AutoCAD,控制ActiveX和其它一些应用程序,使之相互之间发生互易活动。

3.VBA(VB)数据类型丰富、界面友好。

4.VBA是内嵌在AutoCAD中的一种编程语言,对平台有依赖性,但VB对此有改善。

5.利用VBA(VB)开发AutoCAD,以要求开发者熟悉VB语言为基础。

就当前AutoCAD的主要二次开发工具:VisualLisp、VBA和ObjectARX而言, VisualLisp与VBA较为简单,特别是VBA,使用方便且开发速度较快,但其功能相比ObjectARX有所不足,尤其是对面向对象的功能支持不好。而ObjectARX基于VC平台,在C++的支持下,其功能非常强大,可以很好地运用各种面向对象技术,但其缺点是发开速度比较慢,同时对开发人员的能力要求较高。

基于以上原因,微软新推出的ACAD二次开发平台——.NET API,它具有众多优点。在新推出的AutoCAD 2006中,Autodesk为其开发增加了.NET API。论文大全。.NET与ObjectARX一样,基于VC平台,拥有与C++相匹配的强大功能,同时,具备VB方便易用的特点,似乎是VB.net/C#和ObjectARX Managed wrapper classes的组合,实为较理想的ACAD二次开发工具。从目前的趋势来看,AutoDesk有全面转到.net平台的趋势,有可能完全取代ObjectARX和VB,具体情况仍在观望中。

总之,通过以上分析可以看出,AutoLisp仍然是ACAD的基本开发手段,它适于一般开发者用于较为简单交互性程序的开发。因为除了语言、功能、编写和调试的难度之外,还有CAD版本匹配的问题。AutoLisp程序的适合度最好,即使是为AutoCAD R12开发的程序,在CAD2007中仍然能够使用。ADS将逐步被更为完善的ObjectARX所取代,而ObjectARX与AutoLisp正相反,为CAD2002编写的程序就已经不能在2004下运行了。为老版本ACAD编写的ObjectARX程序的源代码虽然可以不需要修改或较少的修改,但必须链结新版本的ObjectARX库进行重新编译,才能被新版本所运行。而且,不同版本的ObjectARX库还指定了不同版本的编译器。譬如,CAD2000/2002版应使用VC6,CAD2004/2005就需要使用VC.net 2002,而CAD2007则需要VC.net 2005。而作为ACAD用户二次开发的另一支生力军VBA则介于二者之间。Autodesk新推出的 .NET API二次开发平台除了涉及到版本兼容性的问题外,同时,遗憾的是目前的.NETAPI版本还不支持卸载,若要卸载只能关闭ACAD。

Autodesk提供的众多二次开发手段往往会把新手搞糊涂,开发中到底使用什么语言,应根据本身所熟悉的ACAD的版本,以及所熟悉的开发环境,另外,企业规模、资金,也是考虑的关键。总之,众多二次开发工具让各类开发者都能找到适合于自己的开发工具。


参考文献:《AutoLISP机械设计高级应用实例》 胡仁喜 胡星 史青录等编著
 

 

查看相关论文专题
加入收藏  打印本文
上一篇论文:自适应梯度权值的TV图像修复
下一篇论文:邹城市气象局网页的设计与探讨
科技论文分类
科技小论文 数学建模论文
数学论文 节能减排论文
数学小论文 低碳生活论文
物理论文 建筑工程论文
网站设计论文 农业论文
图书情报 环境保护论文
计算机论文 化学论文
机电一体化论文 生物论文
网络安全论文 机械论文
水利论文 地质论文
交通论文
相关计算机论文
最新计算机论文
读者推荐的计算机论文