切換到寬版
  • 廣告投放
  • 稿件投遞
  • 繁體中文
  • AutoCAD開發(fā)工具介紹

    作者:佚名 來源:網(wǎng)絡(luò) 時間:2011-03-14 16:14 閱讀:3956 [投稿]
    到目前為止,Autodesk公司提供了4種主要的二次開發(fā)工具:AutoLisp(VisuaLisp)、ADS、ObjectARX及VBA(VB)。本文就此向大家分別做一介紹。
    隨著CAD技術(shù)的發(fā)展,CAD領(lǐng)域的支掙軟件也越來越多,國內(nèi)外許多公司相繼推出了其主導(dǎo)產(chǎn)品,Autodesk公司是目前世界上比較成功的CAD領(lǐng)域的開發(fā)商,其開發(fā)的AutoCAD一直是CAD市場中的主流產(chǎn)品,隨著AutoCAD的日益普及,在其上進(jìn)行二次開發(fā)的工具也相繼由該公司推出。許多企業(yè)購進(jìn)AutoCAD軟件,并非只是用作“代替圖板”。只有真正地在其上實(shí)現(xiàn)了二次開發(fā),才能充分發(fā)揮AutoCAD作用。到目前為止,Autodesk公司提供了4種主要的二次開發(fā)工具:AutoLisp(VisuaLisp)、ADS、ObjectARX及VBA(VB)。本文就此向大家分別做一介紹。 
    1.AutoLisp語言
    Lisp語言是一種表處理語言,是廣泛應(yīng)用于人工智能的語言。AutoLisp語言完全嵌套在AutoCAD內(nèi)部,同AutoCAD有機(jī)地結(jié)合成一體它既具備一般高級語言的基本結(jié)構(gòu)和功能,又具備一般高級語言所沒有的圖形處理能力AutoLisp可直接調(diào)用幾乎全部AutoCAD的命令,從而進(jìn)行AutoCAD的二次開發(fā)。利用AutoLisp開發(fā)AutoCAD的一個典型例子就是實(shí)現(xiàn)參數(shù)化繪圖的程序設(shè)計(jì)。 
    AutoLisp具有如下特點(diǎn): 
    AutoLisp語言是一種以解釋方式運(yùn)行于AutoCAD內(nèi)部的解釋性程序設(shè)計(jì)語言。 
    AutoLisp沒有語句概念或其他語法結(jié)構(gòu),程序非常簡明。它的所有成分都是以函數(shù)形式給出的。執(zhí)行AutoLisp程序就是執(zhí)行一些函數(shù),然后再調(diào)用其他函數(shù)。 
    AutoLisp把數(shù)據(jù)和程序統(tǒng)一表達(dá)為表結(jié)構(gòu),故可把程序當(dāng)作數(shù)據(jù)來處理,也可把數(shù)據(jù)當(dāng)作程序來執(zhí)行。 
    AutoLisp語言中的程序運(yùn)行過程就是對函數(shù)的求值過程,在對函數(shù)求值的過程中實(shí)現(xiàn)函數(shù)的功能。 
    AutoLisp語言的主要控制結(jié)構(gòu)采用遞歸方式。遞歸方式的使用,使程序簡單易懂。
    VisuaLisp是AutoLisp的發(fā)展,它利用可視化的編程環(huán)境為學(xué)習(xí)減小難度。它的特點(diǎn)可以歸納出十幾條,但基本上是可視化與Autolisp的結(jié)合,不再列出。 
    這里給出用AutoLisp繪制鍵槽的一個小程序,可以看出其簡明性: 
    (defun C:LWX()
    (setq a(getrcal "a="))
    (setq b(getreal "b="))
    (setq pO(getpoint "Enter start point:"))
    (setq r(getreal "r="))
    (setq x(car p0) y(cadr p0))
    (setq xe(- x (/ a 2.0)))
    (setq ye(+ y (sqrt(- (* r r) (*a a 0.25)))))
    (sctq ce(list xe ye))
    (setq p1(list(- x a) y))
    (setq p2(list(- x a)(- y b)))
    (setq p3(list x (- y b)))
    (command "pline" p0 "a" "ce" ce p1 "1" p2 p3 "c")

    執(zhí)行這段程序,輸入a,b,r的值,即可繪出鍵槽。
     
    2.ADS(AutoCAD Development System)開發(fā)系統(tǒng)
    ADS是從AutoCAD R11開始引入的基于C語言開發(fā)應(yīng)用程序的系統(tǒng)。ADS不是C語言的一個子集,也不是基于C而編制的專用語言(如Microstation的MDL),但它包括了C的全部功能。它對開發(fā)人員C語言要求較高,C是編譯型語言,功能強(qiáng)大,因此ADS很輕易地克服了AutoLisp所固有的許多缺點(diǎn)而具有速度快,安全性高的特點(diǎn)。ADS不包含于AutoCAD內(nèi)部,而是作為一組AutoLisp外部函數(shù)由AutoLisp解釋器裝入、解釋并請求AutoCAD運(yùn)行。其特點(diǎn)如下: 
    ADS程序是一個可執(zhí)行文件,需要通過AutoLisp和AutoCAD進(jìn)行通訊。 
    ADS程序更“絕緣”,ADS程序是一系列獨(dú)立的過程,程序崩潰并不一定導(dǎo)致AutoCAD系統(tǒng)崩潰(盡管并不總是如此)。 
    ADS程序是不可重復(fù)加載的。 
    ADS程序的運(yùn)行過程類似于宏(macro)。ADS中的函數(shù)(如ads_command)以及與AutoLisp的通訊使ADS程序的工作過程類似于自動作用的宏。 
    ADS仍然只能使用傳統(tǒng)的C語言進(jìn)行編程,只能采用傳統(tǒng)的結(jié)構(gòu)化編程方式。
    早期國內(nèi)常見的應(yīng)用軟件多是用ADS進(jìn)行開發(fā)的,但ADS程序必須經(jīng)過AutoLisp解釋加載,因此ADS的各方面性能受到限制。同時,隨著網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,面向過程的ADS己有些力不從心了,所以,在AutoCADR13中提供了面向?qū)ο蟮拈_發(fā)工具ARX。有關(guān)ADS的實(shí)例代碼,因與ARX類似(比如ADS中的對象名稱ads_name就和ARX中的AcDbObjectld是等價的)這里不再給出。 
    分享到:
    掃一掃,關(guān)注光行天下的微信訂閱號!
    【溫馨提示】本頻道長期接受投稿,內(nèi)容可以是:
    1.行業(yè)新聞、市場分析。 2.新品新技術(shù)(最新研發(fā)出來的產(chǎn)品技術(shù)介紹,包括產(chǎn)品性能參數(shù)、作用、應(yīng)用領(lǐng)域及圖片); 3.解決方案/專業(yè)論文(針對問題及需求,提出一個解決問題的執(zhí)行方案); 4.技術(shù)文章、白皮書,光學(xué)軟件運(yùn)用技術(shù)(光電行業(yè)內(nèi)技術(shù)文檔);
    如果想要將你的內(nèi)容出現(xiàn)在這里,歡迎聯(lián)系我們,投稿郵箱:service@opticsky.cn
    文章點(diǎn)評