亚洲AV日韩AV无码污污网站_亚洲欧美国产精品久久久久久久_欧美日韩一区二区视频不卡_丰满无码人妻束缚无码区_久爱WWW成人网免费视频

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

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

    上一主題 下一主題
    離線wz82
     
    發(fā)帖
    595
    光幣
    4674
    光券
    0
    只看樓主 倒序閱讀 樓主  發(fā)表于: 2009-03-27
    關(guān)鍵詞: AutoCAD
    CAD二次開發(fā),有很多不同層次的語言和庫可供選擇。 {ERMGd6Jp  
    PlxIf  L  
    首先是VisualLisp和AutoLisp。Lisp是一門歷史悠久的函數(shù)式編程語言,很多概念和C這種過程式語言不一樣,據(jù)說他在人工智能等方面有廣泛的應(yīng)用。 _eQ-`?  
    3MBN:dbQ  
    CAD引入了這種語言,給他添加相應(yīng)的函數(shù)庫,就成了命令行使用的AutoLisp。在此基礎(chǔ)上再增加關(guān)于對(duì)話框和窗口界面的庫,就是VisualLisp,簡稱VL。VL在CAD中可以視為CAD命令的整合,是腳本語言,而且由CAD程序提供了編寫環(huán)境。因此上手相當(dāng)容易,便于編寫,調(diào)試也很方便。 DSyXr~p8  
    yI;"9G  
    不過由于是腳本語言,就有兩大缺陷。第一是速度,當(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ā)生問題。 )b4$A:  
    URTzX 2'[  
    第二大類是使用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ò)的選擇。 j;nb?;  
    #bnb ': f  
    此外,從目前的趨勢(shì)來看,AutoDesk有全面轉(zhuǎn)到.net平臺(tái)的趨勢(shì),ActiveX和VB看來也將會(huì)被他的繼任者取代,似乎是VB.net/C#和ObjectARX Managed wrapper classes的組合,具體情況觀望中。 2& LQg=O  
    5er@)p_  
    第三大類就是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程序了。 ERMa# L  
    4ne5=YY *  
    用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的彪悍,不需要再舉例子。 9^ed-h Bf  
    Qu\@Y[eia5  
    天上不會(huì)掉餡餅,這個(gè)方式的代價(jià)就是難度提高了。首先C++語言本身就很復(fù)雜(VB.net和C#也不方便到哪里去),再配上復(fù)雜度不相上下的ObjectARX庫,如果要寫出切實(shí)可用的程序,還要深入了解CAD本身的結(jié)構(gòu)。即使是開發(fā)很小的功能,也要有很多的工作要做。調(diào)試的工作,需要啟動(dòng)VC和CAD這兩個(gè)大家伙,數(shù)據(jù)量大的時(shí)候會(huì)讓你發(fā)狂的。豐厚的回報(bào)還有高風(fēng)險(xiǎn)相伴,由于已經(jīng)和CAD融為一體,ARX程序的錯(cuò)誤會(huì)直接影響到CAD。象內(nèi)存泄漏這種常見而又高危的情況,很有可能會(huì)把CAD直接搞垮。所以對(duì)于程序的安全有著更高的要求。 uGH?N  
    #2p#VQh  
    除了語言、功能、編寫和調(diào)試的難度之外,這三種方式還有CAD版本匹配的問題。Lisp程序的適合度最好,即使是為AutoCAD r12開發(fā)的程序,在CAD2007中仍然能夠使用。而ARX則正相反,為CAD2002編寫的程序就已經(jīng)不能在2004下運(yùn)行了。為舊版CAD編寫的ARX程序的源代碼可以不需要修改或修改較少,但必須連結(jié)新版本的ARX庫重新編譯,才能被新版本載入運(yùn)行。而且,不同版本的ARX庫還指定了不同版本的編譯器。譬如,CAD2000/2002版應(yīng)使用VC6,CAD2004/2005就需要使用VC.net 2002,而CAD2007則需要VC.net 2005。而VB則介于這兩者之間。這個(gè)問題往往會(huì)把新手搞糊涂,必須參閱相關(guān)開發(fā)文檔。 RYR-K^;R  
    JgfVRqm   
    開發(fā)中使用什么語言,并不完全決定于我們。規(guī)模、資金、時(shí)間甚至用戶的習(xí)慣才是考慮的關(guān)鍵。大型系統(tǒng)往往綜合運(yùn)用這三種方式,天正軟件就是一個(gè)典型。我個(gè)人建議嘗試搞CAD二次開發(fā)的人都該先好好看天正的那些東西。
     
    分享到
    離線xtqiao
    發(fā)帖
    20
    光幣
    21
    光券
    0
    只看該作者 1樓 發(fā)表于: 2009-08-16
    樓主關(guān)于AutoCAD二次開發(fā)語言論述的非常詳細(xì),不知目前真正用于實(shí)際項(xiàng)目開發(fā)的語言是哪一種?我學(xué)習(xí)二次開發(fā)一直采用lisp語言進(jìn)行的,但沒有真正做過項(xiàng)目!