1)Visual LISP

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

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

2)ADS

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

3)VBA

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

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

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

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

擴充VBA的功能可以用 VC++ / ARX 程序,但是相當復雜,對于一般工程師來說,很難掌握。對VBA的完善和擴充,只能等待Autodesk的工作結(jié)果。

4)ObjectARX

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

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

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

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

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

c)專業(yè)設計軟件,提供窄范圍、大深度的專業(yè)設計自動化或者輔助系統(tǒng):例如:發(fā)動機裝配工具設計、膠印機控制凸輪設計、組合機主軸箱設計等等。

實際上,CAD系統(tǒng)能否真正體現(xiàn)出它的存在價值,最明顯的標志就是上述專業(yè)設計軟件。這些軟件真正起到了“設計”的作用。實踐證明,在某個專業(yè)性很強的設計上,它確實能夠替代工程師!
對于a)和b),可以由一些不必很了解設計,而軟件知識較多的人來寫。當然,應當由現(xiàn)場工程師進行測評,防止寫成“學院派”的設計支持軟件。而對于c),就只能由設計師自己來寫,這樣的題目范圍較小,幾乎是開發(fā)商永遠的“盲區(qū)”。由于專業(yè)性太強,知識結(jié)構(gòu)太偏,對于工科大學畢業(yè),沒有在這個行業(yè)里,做過幾個真正的設計的人,很難聽懂專業(yè)設計師的敘述,要求他完成這個程序,就太過分了。
可見,必須有一個能夠被專業(yè)設計師所掌握,又能夠發(fā)揮他們的長處(熟悉設計),避開他們的短處(軟件知識較少)的開發(fā)方法。這就是AutoLISP。

可以在AutoLISP程序中引用AutoCAD的幾乎所有的功能,進行圖形處理的自動化,尤其是較深層的應用~對象數(shù)據(jù)庫的操作。

在Visual LISP的協(xié)助下,從對AutoCAD進行操作的功能上討論,僅比ARX少幾個功能:自定義AutoCAD對象、多圖檔的深入管理等。從目前的情況看,AutoLISP是AutoCAD中幾乎所有的應用程序的“總管、大管家”,而且目前只有AutoLISP 表達式,才能以添加在腳本文件、對話框程序、菜單、甚至VBA程序的ThisDrawing.SendCommand …中,更可以直接用在AutoCAD的命令行中響應幾乎所有的命令。

5)其它性能

AutoLISP是典型的結(jié)構(gòu)化程序設計語言,AutoLISP是解釋運行,源程序保密性差,巨量數(shù)據(jù)的復雜運算效率較低,文件管理功能簡單,但可以在絕大多數(shù)源程序內(nèi)容不變的條件下,用Visual LISP將其編譯成VLX程序包或者FAS程序,這樣處理之后的AutoLISP程序,將具有與ARX程序相同的高保密性能,也將具有比解釋運行明顯提高的運行效率。而且,AutoLISP程序設計的復雜程度和運行風險大大低與ARX,絕少在程序崩潰后連帶AutoCAD崩潰。