新闻资讯
看你所看,想你所想

autocad二次开发

autocad二次开发

autocad二次开发

AutoCAD(Auto Computer Aided Design)是美国Autodesk公司研製开发的一款计算机辅助设计软体,它不是一款简单的绘图工具,而是一个複杂的计算机辅助设计系统。我们可以根据他灵活的开放性对其进行二次开发定製,让它更加适用于某一具体的设计领域。

基本介绍

  • 中文名:AutoCAD 二次开发
  • 外文名:AutoCAD Development System
  • 目的:提高效率建立适合本行业的平台
  • ADS:已经淘汰的一种开发AutoCAD环境
  • AutoLISP: 语言的优点是语法规则简单
  • VisualLISP:引入面向对象的LISP开发环境
从1986年发布AutoLISP以来到现在的三十余年来,Autodesk公司推出了AutoLISP、ADS、VBA、ARX、ObjectARX、VisualLISP、ObjectARX.NET、JavaScript等开发方式。本章就是对上述开发方式进行讨论分析从而找到高效开发AutoCAD的一种方式。

为什幺要对AutoCAD进行二次开发

AutoCAD是目前在Windows和MAC系统中套用最为广泛、使用人数最多的CAD软体。但它只给我们提供了基础的CAD功能,如果我们想完成具体项目设计,就必须根据数据一笔笔绘製出图形,这样一旦在设计完成之后,要更改局部图形则需要重複原来的全部内容。造成了大量工作量的浪费。
如果使用AutoCAD的开发系统,我们就可以将以上的过程用程式编制出来,在需要设计时,只需一个命令就可以运行这个程式,自动完成绘图过程。显而易见,这不仅大大提高了设计效率,而且,还可以通过定製来完成某些专业化的模组,甚至大型设计软体,比如测绘行业的南方CASS软体、建筑行业的天正CAD软体等均是用AutoCAD开发系统实现的。
因此,要想让AutoCAD真正使用于某一具体领域,或让其经常完成一些重複性的工作,则必须利用AutoCAD的开发系统对其进行二次开发.

怎样对AutoCAD进行二次开发

从AutoCAD 2.18开始推出AutoLISP开始到现在,我们所能使用的开发工具主要有:AutoLISP、VisualLISP、VBA、COM外部接口、ObjectARX、ObjectARX.NET等开发方式供用户选择。下面开始对上述开发方式进行简要介绍:

AutoLISP和Visual LISP

AutoLISP是进行对AutoCAD二次开发最早的API,它是人工智慧语言LISP的一个分支.主要用来自动完成重複性任务,进行客户化开发和编制AutoCAD选单以及通过简单机制为AutoCAD扩充命令,能够有机的和AutoCAD结合在一起,它语法简单容易上手,到目前仍有很多的活跃开发用户。但是由于它是解释型API而不是面向对象的程式语言,使它的效率低下,由于执行的是原始码档案所以导致保密性能不高很难用它开发大型的应用程式。
在AutoCAD R14.01中,Autodesk公司首次提供了一种新的LISP编程工具:Visual LISP,它是一种面向对象的开发环境,是AutoLISP的扩展和延伸。
在AutoCAD2000中,Visual LISP被集成到了AutoCAD环境之中。Visual LISP是一种半编译的API。由于可以被编译所以大大提高了运行效率和安全性。同时它又与AutoLISP完全兼容,又提供了AutoLISP的所有功能,同时它又能够访问AutoCAD的多文档环境,以及对COM/ActiveX技术的支持和反应器等。VisualLISP
IDE同时提供了完整的编辑环境使得用户可以对代码进行调试跟蹤、源码语法检查、括弧匹配、函式提示等工具,方便创建和调试LISP程式。由于VLISP集成于AutoCAD内部,而且随AutoCAD升级而升级所以兼容性比较好,这也是LISP深受广大编程爱好者使用的原因。
但在进行大数据的计算处理方面,Visual LISP不能很好的胜任这项任务,这使得开发大型数据运算的程式仍有一定困难。

ADS、ARX和ObjectARX

ADS(AutoCAD Development System)是Autodesk公司最早在AutoCAD R11中提供的C语言编程环境。ADS除可使用标準C的函式外,又增加了一组专用于对AutoCAD进行操作的函式。由于ADS程式具有C语言的一切优点,因而它曾是开发AutoCAD R11、AutoCAD R12应用程式的主要工具。用C写就的ADS程式,可在所有支持AutoCAD平台上进行原始码移植。只需使用普通的C语言编译器就可以编译生成ADS模组,与ADS库和标準C库连结后生成执行档,装入AutoCAD后即可运行。但是ADS和AutoLISP一样,内在结构不是面向对象的,用AutoLISP解释器载入和调用,利用IPC与AutoCAD通讯。
ARX(AutoCAD Runtime eXtension)是在ADS基础上发展起来的一种面向对象的C语言编程环境。由ADS到ARX的变迁就像C到C++的转变。ARX与老式的ADS及AutoLISP的最大差异在于ARX应用程式是动态程式库,共享AutoCAD地址空间,可以对AutoCAD进行直接函式调用,避免了IPC的系统开销和由此引起的性
能下降。因此那些频繁与AutoCAD通讯的应用程式在ARX环境下的运行效率明显优于老式ADS或AutoLISP环境。
ARX最早是在AutoCAD R13中提供的,但在AutoCAD R14中,ARX就被ObjectARX所代替。同时原来的ADS库函式全部被包含在ObjectARX中,将ADS函式合为单一的库就形成了ADSRX。ADSRX库已纳入到AutoCAD的总体结构中,因此它与其他ObjectARX库一样,能共享AutoCAD地址空间。
到了新世纪,传统意义上的ADS开发环境的概念已经不复存在,且ADSRX已成为了ObjectARX的一个子集,因此,ObjectARX是包含了ADS、ARX和ADSRX的一种综合的C/C++开发环境。ObjectARX的最大特点是引入了面向对象的编程机制,用户可以根据规则定製实体也是ObjectARX的一大亮点。

利用微软的ActiveX技术

自AutoCAD R14起,提供了ActiveX Automation形式的API。ActiveX技术可将各种二进制应用程式组件集成一体。它可採用多种编程方式例如:VBA构造一种或多种与应用程式独立的宏编程。提供Automation服务的软体组件通过标準接口能够对外开放它的特定功能。
正是由于AutoCAD拥有ActiveX接口,因此,用户可以容易的用各种AciveX程式语言来定製开发AutoCAD。
AutoCAD包含的VBA能在进程内访问AutoCAD的对象模型。亦可以通过独立
的VB进行编程,但是VB与ActiveX的接口需要通过IPC驱动AutoCAD,所以作为ActiveX控制项的VBA比VB具有明显的性能优势。
特别要强调的是,ActiveX与AutoCAD互动操作很慢,若需要在外部程式中一边运算一边互动操作的重複叠代,将耗费大量时间,如同当机
值得注意的是,从AutoCAD 2010版本开始,VBA不在随AutoCAD一起安装。如果想要在机器中运行VBA程式必须登录下面的网址进行下载方可运行。

利用ObjectARX.NET进行开发

在AutoCAD 2005 版本中Autodesk公司推出了用.NET开发AutoCAD的编程接口。它的实质是通过Managed C++/CLR技术对VC++的ObjectARX进行封装。到目前的AutoCAD 2015十年来Autodesk公司已经完成对大部分ObjectARX编程接口的封装。这种编程方式难度适中,能够访问大部分的编程接口(除了自定义实体);但是,由于AutoCAD的.NET接口是在不断的完善过程中导致了在低版本上不能够使用新增的功能。

AutoCAD二次开发各编程接口的比较及选用

比较各种开发AutoCAD的编程接口,需要从以下几个方面进行考虑:
1. 速度:直接与AutoCAD通讯的API比利用IPC进行通讯的API在速度方面要快。编译型的API比解释型的API速度要快。因此,ObjectARX的速度最快,Com接口开发的外部程式速度最慢。
2. 稳定性:运行稳定性反映出因程式可能出现的严重错误所导致的危险。採用LISP开发的程式一旦失败或崩溃,并不危害AutoCAD自身进程;而由于ObjectARX应用程式共享AutoCAD的地址空间,所以其一旦运行失败,AutoCAD进程随之崩溃。
3. 性能:ObjectARX的应用程式能在运行期间实时扩展AutoCAD,共享AutoCAD地址空间,甚至为所欲为,因此性能无比强大,以至于AutoCAD自身的许多功能模组都是由ObjectARX进行製作。相反,解释型API如AutoLISP仅被限用于使用静态的AutoCAD命令集提供结构化函式馆
4. 技术难度:AutoLISP和VBA均是解释型语言,方便易学,开发周期短。许多程式设计师或一些技术人员都在使用它们。相比之下ObjectARX依赖于C++语言,它必须经过严格控制的编译、连结才能生成应用程式。这就需要编程人员需要积累经验,这样才能去发现问题从而解决问题。
5. 保密性:编译型程式要比解释型保密性要好,保护了开发人员的着作权,解释型语言往往保密性能不高。导致用户误操作源码造成不应有的错误。
另外:虽然.NET开发出来的DLL档案是编译后的程式,但是由于其程式可以反编译回源码造成了代码的保密性差,也是不容忽视的问题。
相比之下,如果以前已熟悉使用LISP语言的朋友,则可选用VisualLISP。
如果用户只想利用开发一些简单的周期性短的应用程式,则可以依个人爱好和经验选择Visual Basic和VisualLISP。若用户有较好的C++基础和AutoLISP函式基础,同时又要开发速度和性能要求都很高的应用程式或大型CAD套用软体,则要使用ObjectARX。

转载请注明出处安可林文章网 » autocad二次开发

相关推荐

    声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:fendou3451@163.com