你當(dāng)前的位置>>主頁(yè)>>AutoCAD知識(shí)>>AutoCAD二次開(kāi)發(fā)
 
           AutoCAD二次開(kāi)發(fā)工具概述及特點(diǎn)

1)Visual LISP

適于描述人機(jī)交互操作的過(guò)程,善于編寫(xiě)模擬設(shè)計(jì)師思路的專業(yè)設(shè)計(jì)程序。對(duì)于各種用戶輸入的接收、錯(cuò)誤識(shí)別與恢復(fù)等操作具有相當(dāng)優(yōu)秀的功能,尤其是善于充分發(fā)揮CAGD功能的巨大作用。

過(guò)去AutoLISP 最大的不足是不能編譯,現(xiàn)在已經(jīng)被 VLISP 圓滿解決了,編譯成VLX 的老的AutoLISP 程序,其效率比解釋運(yùn)行條件下提高了5~8倍。

2)ADS

曾經(jīng)是在 AutoLISP 之后的一種用戶程序,在 R14 之前的AutoLISP 程序雖然是解釋運(yùn)行,仍比 ADS 程序快一些,因?yàn)閷?shí)際上ADS是用AutoLISP與AutoCAD交互。自AutoCAD R14已經(jīng)不再支持和發(fā)展 ADS程序設(shè)計(jì)模式,同時(shí)卻增加了Visual LISP,以進(jìn)一步提高AutoLISP 的整體性能。

3)VBA

自 R14開(kāi)始嵌套在AutoCAD 之中的程序設(shè)計(jì)方法,VBA是根據(jù)微軟公司的規(guī)則,在每一個(gè) Windows 下的應(yīng)用 都必須具有的功能。

其優(yōu)點(diǎn)是可以很容易地使用 Windows 系統(tǒng)資源,使AutoCAD能容易地與其他Windows下的應(yīng)用 交互。VBA 對(duì)話框設(shè)計(jì)能力比 DCL 好得多,多圖檔環(huán)境下的應(yīng)用程序也比也比VLISP提供了更多的支持。由于它是使用ActiveX與AutoCAD交互,程序設(shè)計(jì)比較復(fù)雜。會(huì)成為與VLISP并列的另一種專業(yè)用戶程序設(shè)計(jì)語(yǔ)言,不太容易學(xué)會(huì)。

在設(shè)計(jì)過(guò)程模擬類的程序設(shè)計(jì)中,VBA明顯不如 AutoLISP那樣順利,畢竟 AutoLISP 脫胎于人工智能語(yǔ)言。另外,如果 VBA 作者因?yàn)椤笆韬觥,沒(méi)有提供相應(yīng)的方法和屬性,老的AutoLISP能夠訪問(wèn)的對(duì)象數(shù)據(jù)、能夠激活的某些AutoCAD對(duì)話框,VBA卻不能。VBA雖然不是編譯運(yùn)行,數(shù)據(jù)結(jié)構(gòu)和程序?qū)懛▍s像ARX一樣相當(dāng)嚴(yán)格,這對(duì)于工程師來(lái)說(shuō),需要有一個(gè)適應(yīng)過(guò)程,你只能按照VBA的可能去組織自己的數(shù)據(jù),而不能像VLISP那樣按照專業(yè)設(shè)計(jì)要求去創(chuàng)建數(shù)據(jù)結(jié)構(gòu)。

比較明顯的幾個(gè)缺憾是:VBA中不能像VLISP那樣幾乎隨心所欲地使用AutoCAD命令,只能象腳本文件的模式,以字串方式向AutoCAD命令行發(fā)送一串響應(yīng),這個(gè)字串的內(nèi)容也只好在自己的程序中生成和進(jìn)行數(shù)據(jù)轉(zhuǎn)換。另外,由于VBA是以對(duì)象作為數(shù)據(jù)處理的基本單元,在VLISP中堪稱特色的CAGD程序編法,VBA則很難實(shí)現(xiàn)。因此像Trim、Extend、Dim-Diameter之類的命令都不能真正實(shí)施,要想完成這樣的操作,相關(guān)數(shù)據(jù)只能在程序中自己計(jì)算。這樣,程序設(shè)計(jì)就不能充分利用AutoCAD的操作技巧,必然復(fù)雜和羅嗦。放著AutoCAD優(yōu)秀的數(shù)據(jù)庫(kù),卻不能充分發(fā)揮它的作用,本來(lái)能用AutoCAD完成的動(dòng)作,卻要自己編程實(shí)現(xiàn)。這就是VBA最大的缺憾。VBA 另外的問(wèn)題是不能編譯,源程序始終以相當(dāng)容易接近的方式,暴露在最終用戶面前。很容易由于用戶的誤操作,使曾經(jīng)正常的應(yīng)用程序出錯(cuò)甚至崩潰。這正好是老的 AutoLISP 的致命缺點(diǎn),使用 VLISP 2000的程序包編譯功能,目前還不能將 VBA 包裝進(jìn)去之后解決源代碼加密的問(wèn)題。VBA的源代碼加密目前只有使用 PassWord。另外,VBA與Visual LISP 之間僅有比較簡(jiǎn)單的內(nèi)部數(shù)據(jù)通道,例如處理簡(jiǎn)單的點(diǎn)位表。從這方面說(shuō),VBA的作者好像不太了解AutoCAD的特色功能和用戶們將會(huì)怎樣使用AutoCAD進(jìn)行自己的設(shè)計(jì)。

擴(kuò)充VBA的功能可以用 VC++ / ARX 程序,但是相當(dāng)復(fù)雜,對(duì)于一般工程師來(lái)說(shuō),很難掌握。對(duì)VBA的完善和擴(kuò)充,只能等待Autodesk的工作結(jié)果。

4)ObjectARX

一般是在Autodesk內(nèi)部或增值 開(kāi)發(fā)商中使用。由于ARX是使用Visual C++作為基本程序設(shè)計(jì)語(yǔ)言,無(wú)論其效率、數(shù)據(jù)處理和軟硬件的控制能力都是最好的,是唯一圓滿地針對(duì)多圖檔環(huán)境的程序設(shè)計(jì)方法。是從根本上擴(kuò)展 VLISP / VBA 的程序設(shè)計(jì)方法。

但是,與AutoCAD命令交互的功能,ARX與VBA并沒(méi)有實(shí)質(zhì)性的區(qū)別,就是說(shuō),同樣很難借用AutoCAD強(qiáng)大的CAGD功能。另外,要想真正發(fā)揮這種開(kāi)發(fā)模式的作用,對(duì)于程序設(shè)計(jì)者的要求(計(jì)算機(jī)專業(yè)知識(shí)、 專業(yè)知識(shí)等等)也較高,而且程序運(yùn)行風(fēng)險(xiǎn)較大。要求程序自己做好各種數(shù)據(jù)的測(cè)試,自己設(shè)計(jì)好各種條件下的出錯(cuò)處理和恢復(fù),否則ARX 程序的崩潰常常會(huì)連帶 AutoCAD、甚至Windows9x一起崩潰。因此,這種開(kāi)發(fā)模式不適于在專業(yè)設(shè)計(jì)工程師中間普及。
粗略地說(shuō):ARX/VBA的特點(diǎn)在于以對(duì)象為基本操作數(shù)據(jù),適合于充當(dāng)“編寫(xiě)”ACAD的工具,而VLISP則是靈活而充分地使用AutoCAD的現(xiàn)有功能,適合于充當(dāng)“使用”ACAD的工具。

作為 CAD 系統(tǒng),通常由三個(gè)層次的 組合而成:

a)設(shè)計(jì) 的底臺(tái):提供界面、環(huán)境、核心算法、數(shù)據(jù)庫(kù)等基礎(chǔ)設(shè)施。現(xiàn)在我們是在 AutoCAD 2000這個(gè)底臺(tái)上進(jìn)行工作。

b)設(shè)計(jì)支持 ,提供與設(shè)計(jì)需要相關(guān)的,比較專業(yè)的支持 :國(guó)標(biāo)圖庫(kù)、通用設(shè)計(jì)工具、設(shè)計(jì)手冊(cè)等等。這些 多數(shù)是由增值 開(kāi)發(fā)商完成的。

c)專業(yè)設(shè)計(jì) ,提供窄范圍、大深度的專業(yè)設(shè)計(jì)自動(dòng)化或者輔助系統(tǒng):例如:發(fā)動(dòng)機(jī)裝配工具設(shè)計(jì)、膠印機(jī)控制凸輪設(shè)計(jì)、組合機(jī)主軸箱設(shè)計(jì)等等。
民眾工作室.制作      版權(quán)所有