切換到寬版
  • 廣告投放
  • 稿件投遞
  • 繁體中文
    • 3371閱讀
    • 1回復(fù)

    [轉(zhuǎn)載]AutoCAD二次開發(fā)語言概述 [復(fù)制鏈接]

    上一主題 下一主題
    離線wz82
     
    發(fā)帖
    595
    光幣
    4670
    光券
    0
    只看樓主 倒序閱讀 樓主  發(fā)表于: 2009-03-27
    關(guān)鍵詞: AutoCAD
    CAD二次開發(fā),有很多不同層次的語言和庫可供選擇。 2RF^s.W  
    7@.cOB`y@3  
    首先是VisualLisp和AutoLisp。Lisp是一門歷史悠久的函數(shù)式編程語言,很多概念和C這種過程式語言不一樣,據(jù)說他在人工智能等方面有廣泛的應(yīng)用。 }7{t^>;D  
    wpA`(+J  
    CAD引入了這種語言,給他添加相應(yīng)的函數(shù)庫,就成了命令行使用的AutoLisp。在此基礎(chǔ)上再增加關(guān)于對(duì)話框和窗口界面的庫,就是VisualLisp,簡稱VL。VL在CAD中可以視為CAD命令的整合,是腳本語言,而且由CAD程序提供了編寫環(huán)境。因此上手相當(dāng)容易,便于編寫,調(diào)試也很方便。 :[@ k<8<]  
    w|mb4AyL{?  
    不過由于是腳本語言,就有兩大缺陷。第一是速度,當(dāng)程序規(guī)模很大或是操作的對(duì)象數(shù)量過多時(shí),你會(huì)明顯感覺到遲鈍。第二是功能。如果有什么功能是命令本身做不到的,那VL也做不到。譬如關(guān)于自定義對(duì)象、內(nèi)存操作、數(shù)據(jù)傳遞之類,往往要通過別的方法解決。所以我個(gè)人認(rèn)為Lisp適用于把現(xiàn)有命令組合成一個(gè)新命令來使用,尤其是存在大量重復(fù)操作的時(shí)候,用來做批處理非常好。唯一讓人感到不適的是,由于Lisp語言本身的語法要使用大量的圓括弧,當(dāng)嵌套層次較深時(shí),往往會(huì)在括弧的配對(duì)上發(fā)生問題。 Q "oI])r  
    Fg$3N5*  
    第二大類是使用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與具體的編程語言無關(guān),因此理論上說可以用任何一種支持他的語言來編寫,但通常大家選擇VB語言。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語言又不想學(xué)習(xí)Lisp奇怪語法的開發(fā)者來說,這是不錯(cuò)的選擇。 _<$>*i R  
    E6Rz@"^XV  
    此外,從目前的趨勢(shì)來看,AutoDesk有全面轉(zhuǎn)到.net平臺(tái)的趨勢(shì),ActiveX和VB看來也將會(huì)被他的繼任者取代,似乎是VB.net/C#和ObjectARX Managed wrapper classes的組合,具體情況觀望中。 E^_w I>  
    IdIrI  
    第三大類就是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++語言。最終ARX進(jìn)化為ObjectARX,他完全面向?qū)ο,并且是以dll(動(dòng)態(tài)鏈接庫)的形式共享CAD的地址空間。由于先前的ARX已被包含為子集,人們也就簡稱ObjectARX為ARX。在CAD2006以前,只能使用C++語言和VC編譯器來生成ObjectARX程序。但目前已經(jīng)可以使用VB.net C# C++等語言配合VisualStudio.net編譯器來生成ARX程序了。 *xf