CAD二次開發(fā),有很多不同層次的語(yǔ)言和庫(kù)可供選擇。
: C b&v07 5*E#*H 首先是VisualLisp和AutoLisp。Lisp是一門歷史悠久的函數(shù)式
編程語(yǔ)言,很多概念和C這種過程式語(yǔ)言不一樣,據(jù)說他在人工智能等方面有廣泛的應(yīng)用。
549jWG E[O<S B
I CAD引入了這種語(yǔ)言,給他添加相應(yīng)的函數(shù)庫(kù),就成了命令行使用的AutoLisp。在此基礎(chǔ)上再增加關(guān)于對(duì)話框和窗口界面的庫(kù),就是VisualLisp,簡(jiǎn)稱VL。VL在CAD中可以視為CAD命令的整合,是腳本語(yǔ)言,而且由CAD程序提供了編寫環(huán)境。因此上手相當(dāng)容易,便于編寫,調(diào)試也很方便。
K{ \;2M b:R-mg.VT{ 不過由于是腳本語(yǔ)言,就有兩大缺陷。第一是速度,當(dāng)程序規(guī)模很大或是操作的對(duì)象數(shù)量過多時(shí),你會(huì)明顯感覺到遲鈍。第二是功能。如果有什么功能是命令本身做不到的,那VL也做不到。譬如關(guān)于自定義對(duì)象、內(nèi)存操作、數(shù)據(jù)傳遞之類,往往要通過別的方法解決。所以我個(gè)人認(rèn)為L(zhǎng)isp適用于把現(xiàn)有命令組合成一個(gè)新命令來使用,尤其是存在大量重復(fù)操作的時(shí)候,用來做批處理非常好。唯一讓人感到不適的是,由于Lisp語(yǔ)言本身的語(yǔ)法要使用大量的圓括弧,當(dāng)嵌套層次較深時(shí),往往會(huì)在括弧的配對(duì)上發(fā)生問題。
{@<J_A <L{(Mj%Z 第二大類是使用ActiveX和VB。ActiveX是Microsoft提出的一組使用COM(Component Object Model,部件對(duì)象模型)使得軟件部件在網(wǎng)絡(luò)環(huán)境中進(jìn)行交互的技術(shù)集。ACAD使用Acitvex把數(shù)據(jù)傳送給ActiveX程序,程序處理后再傳回ACAD。這個(gè)過程有點(diǎn)像瀏覽器瀏覽動(dòng)態(tài)網(wǎng)站。AcitveX與具體的編程語(yǔ)言無關(guān),因此理論上說可以用任何一種支持他的語(yǔ)言來編寫,但通常大家選擇VB語(yǔ)言。VBA是VB的特殊形式,他將VB植入到應(yīng)用程序中。ACAD包含的VBA能夠和CAD共享地址空間,而獨(dú)立的VB則需要通過接口完成。這種方法在編寫上比Lisp復(fù)雜,調(diào)試也困難。但速度快,功能更強(qiáng)勁。但是在某些對(duì)速度要求相當(dāng)高的運(yùn)算和涉及CAD內(nèi)部的應(yīng)用上仍然會(huì)顯得力不從心。對(duì)于熟悉VB語(yǔ)言又不想學(xué)習(xí)Lisp奇怪語(yǔ)法的開發(fā)者來說,這是不錯(cuò)的選擇。
@^;j)%F} u5~Ns&o&N 此外,從目前的趨勢(shì)來看,AutoDesk有全面轉(zhuǎn)到.net平臺(tái)的趨勢(shì),ActiveX和VB看來也將會(huì)被他的繼任者取代,似乎是VB.net/C#和ObjectARX Managed wrapper classes的組合,具體情況觀望中。
Z0`T\ay ?7M.o 第三大類就是ADS ARX 和ObjectARX。ADS是AutoDesk從ACAD R11開始提供的C編程環(huán)境。它具有C的一切優(yōu)點(diǎn),又能操作CAD。但他和ActiveX類似是通過管道通訊的。ARX(
AutoCAD Runtime eXtension)是在ADS基礎(chǔ)上發(fā)展的面向?qū)ο蟮沫h(huán)境,使用C++語(yǔ)言。最終ARX進(jìn)化為ObjectARX,他完全面向?qū)ο,并且是以dll(動(dòng)態(tài)鏈接庫(kù))的形式共享CAD的地址空間。由于先前的ARX已被包含為子集,人們也就簡(jiǎn)稱ObjectARX為ARX。在CAD2006以前,只能使用C++語(yǔ)言和VC編譯器來生成ObjectARX程序。但目前已經(jīng)可以使用VB.net C# C++等語(yǔ)言配合VisualStudio.net編譯器來生成ARX程序了。
I+!:K|^ 3Wwj p 用ARX所編出的程序,在載入后就與ACAD在同一代碼區(qū),共享全部數(shù)據(jù)區(qū),能夠直接對(duì)CAD內(nèi)部的數(shù)據(jù)做任何的操作,因此具有極高的執(zhí)行效率和強(qiáng)大的功能。即使AutoCAD系列軟件自身,在編制完成了程序的基本功能之后,其他大量的內(nèi)部命令其實(shí)也是用ARX實(shí)現(xiàn)的。你可以通過察看安裝好的CAD程序目錄中的那些數(shù)目眾多的arx文件來領(lǐng)會(huì)這一點(diǎn)。這就充分說明了ARX的彪悍,不需要再舉例子。
OiAJ[L -tnQCwq#