AutoCAD 中利用AutoLisp語言的二次開發(fā)
AutoCAD 中利用AutoLisp
語言的二次開發(fā)
李善鋒 王 佳 吉林鐵道職業(yè)技術(shù)學(xué)院汽車工程系 吉林 132200
吉林省教育廳“十二五”科學(xué)技術(shù)研究項(xiàng)目( 吉教科合字[2011] 第419 號
【文章摘要】
采用AutoCAD 內(nèi)置二次開發(fā)工具AutoLISP 語言以及DCL 語言,以一個機(jī)械標(biāo)準(zhǔn)件——螺母為例,開發(fā)一個新的AutoCAD 命令,實(shí)現(xiàn)機(jī)械設(shè)計的參數(shù)化繪圖,避免大量重復(fù)性繪制工作,減少失誤,提高作圖效率.對許多企業(yè)已形成標(biāo)準(zhǔn)化、系列化的產(chǎn)品也同樣可以大幅度提高作圖效率.
【關(guān)鍵詞】
機(jī)械設(shè)計;計算機(jī)輔助設(shè)計;二次開發(fā);參數(shù)化繪圖
0 引言
AutoCAD 是目前國內(nèi)外使用最為普遍的繪圖軟件之一,由美國Autodesk 公司研制開發(fā)。隨著版本的不斷更新,其功能越來越強(qiáng),又因?yàn)槠渲С值钠脚_多、外設(shè)廣、性能價格比好、易學(xué)易用,使用越來越方便,因而得到了廣泛的應(yīng)用。更重要的是它具有開放的體系結(jié)構(gòu),允許用戶和開發(fā)者對其進(jìn)行擴(kuò)充和修改,能最大限度地滿足用戶的特殊要求。它廣泛應(yīng)用于機(jī)械、電氣、建筑、造船、航空航天、冶金、輕工、電子、土木工程、石油化工、地質(zhì)、氣象、紡織等領(lǐng)域。
AutoCAD 這種面向大多數(shù)用戶的優(yōu)點(diǎn),同時也導(dǎo)致了其專業(yè)性、針對性不強(qiáng)的缺憾。Autodesk 公司的本意是把AutoCAD 作為一個提供基本功能和可以進(jìn)行再次開發(fā)的軟件平臺推出的,因此, AutoCAD 不主動提供包括機(jī)械在內(nèi)的各個行業(yè)所需要的一些特殊功能,但是提供了開發(fā)這些功能的工具,由使用者自行開發(fā)。同樣,對許多企業(yè)已形成系列化的產(chǎn)品,在其機(jī)械工程圖樣中,往往包含著許多形狀相似但參數(shù)不同的各類零件以及許多形狀相似但參數(shù)不同的各類標(biāo)準(zhǔn)件和常用件,這使得設(shè)計中不可避免地要進(jìn)行大量重復(fù)性繪制工作,導(dǎo)致繪圖效率降低,并容易出錯。
采用AutoCAD 內(nèi)置二次開發(fā)工具AutoLISP 語言、DCL 語言,結(jié)合國家標(biāo)準(zhǔn), 開發(fā)一個新的AutoCAD 平臺上的命令,就可以實(shí)現(xiàn)機(jī)械產(chǎn)品設(shè)計的參數(shù)化;對已形成系列化的產(chǎn)品,設(shè)計人員只需調(diào)用該命令,在彈出的對話框中輸入相應(yīng)的參數(shù), 即可自動繪出該產(chǎn)品的圖形,從而節(jié)約設(shè)計人員的繪圖時間,提高作圖效率.
1 參數(shù)化繪圖命令的建立
1.1 AutoLISP 語言、DCL 語言概述
LISP(1ist processing language) 是人工智能領(lǐng)域廣泛采用的一種程序設(shè)計語言,主要用于人工智能、機(jī)器人、專家系統(tǒng)、博弈、定理證明等領(lǐng)域。LISP 在它15 多年的發(fā)展過程中產(chǎn)生了多種版本。AutoLISP 語言是嵌套在AutoCAD 內(nèi)部、將LISP 語言與AutoCAD 有機(jī)結(jié)合的產(chǎn)物。使用AutoLISP 可以直接調(diào)用幾乎所有的AutoCAD 命令。AutoLISP 語言既具備一般高級語言的基本結(jié)構(gòu)和功能,又具有一般高級語言所沒有的強(qiáng)大的圖形處理功能,是目前世界上CAD 軟件中被廣泛采用的語言之一。美國Autodesk 公司在AutoCAD 中內(nèi)部嵌入AutoLISP 語言的目的是使用戶充分利用AutoCAD 進(jìn)行二次開發(fā),實(shí)現(xiàn)直接增加和修改AutoCAD 命令,隨意擴(kuò)大圖形編輯功能,建立圖形庫和數(shù)據(jù)庫并對當(dāng)前圖形進(jìn)行直接訪問和修改,開發(fā)CAD 軟件包等。
AutoLISP 嵌入AutoCAD 之后,使僅僅作為交互圖形編輯軟件的AutoCAD 通過編程能真正成為進(jìn)行計算機(jī)輔助設(shè)計、繪圖的CAD 軟件。LISP 靈活多變、易于學(xué)習(xí)和使用,因而使AutoCAD 成為功能強(qiáng)大的工具性軟件。
為使開發(fā)程序與用戶友好交流數(shù)據(jù), 讓不懂編程的用戶方便地使用,設(shè)計對話框就成為程序開發(fā)不可或缺的工作。AutoCAD 有自己的一套對話框設(shè)計語言,稱為對話框控制語言(DCL,dialogue control language),DCL 語言文件形式定義對話框,對話框中的各種元素( 如按鈕、列表框和編輯框等) 稱為控件,其布局、外觀和動作由控件的屬性指定。用戶只需要提供最基本的位置信息,AutoCAD 就可以自動確定對話框的大小和控件的布局.
1.2 命令開發(fā)
本文采用AutoCAD 內(nèi)置二次開發(fā)工具AutoLISP 語言以及DCL 語言,以一個機(jī)械標(biāo)準(zhǔn)件——螺母為例,開發(fā)一個新的AutoCAD 命令,實(shí)現(xiàn)機(jī)械設(shè)計的參數(shù)化繪圖。程序框圖如圖1 所示。
圖1 命令程序框圖
本命令分為三個模塊,主程序模塊和處理輸入數(shù)據(jù)的子程序模塊以及繪圖子程序模塊。各個模塊之間是相對獨(dú)立的; 在編寫主程序之前就可以先做好兩個子程序。在主程序中首先編制調(diào)入對話框的代碼,給出動態(tài)文本框以及命令按鈕等組件,以用于用戶輸入需要繪制的螺母的各項(xiàng)參數(shù)。在輸人各項(xiàng)參數(shù)以后,可單擊命令按鈕,一方面結(jié)束參數(shù)輸入,另一方面啟動響應(yīng)命令按鈕,處理輸入數(shù)據(jù)的子程序;再編寫啟動和卸載對話框的代碼,最后添加調(diào)用繪圖子程序的代碼。
確保Load_luomu.lsp 文件和C_ luomu.dcl 文件都保存在\AutoCAD\support 子目錄下。在AutoCAD 中選擇加載應(yīng)用程序命令導(dǎo)入Load_luomu.1sp 文件,就可以像使用任何一個AutoCAD 命令一樣,在命令行輸入“Load_luomu”來繪制一個螺母。
輸入命令后,會彈出參數(shù)對話框,用戶可以在該對話框中給定各參數(shù)。單擊確定按鈕后,AutoCAD 會按給定的參數(shù)自行繪制零件圖形。如圖2 所示。
圖2 編程繪制的螺母正視圖
2 結(jié)語
本文采用AutoCAD 內(nèi)置二次開發(fā)工具AutoLISP 語言以及DCL 語言,以一個機(jī)械標(biāo)準(zhǔn)件——螺母為例,開發(fā)一個新的AutoCAD 命令,實(shí)現(xiàn)機(jī)械設(shè)計參數(shù)化繪圖。
【參考文獻(xiàn)】
[1] 徐慧娟,夏治,李恭瓊.淺議AutoCAD[J].國家制造業(yè)信息化, 2004,33(11) :97—99.
[2] 李善鋒,姜東華,姜勇.AutoCAD 應(yīng)用教程(第2 版)[M].北京:人民郵電出版社,2013.
[3] 李善鋒,孫志剛.計算機(jī)輔助設(shè)計——AutoCAD2012 中文版基礎(chǔ)教程(第2 版)[M].北京:人民郵電出版社,2013.
[4] 李善鋒,王小艷.計算機(jī)輔助設(shè)計——AutoCAD2008 中文版基礎(chǔ)教程(第2 版)[M].北京:人民郵電出版社,2013.
[5] 張班.AutoCAD 二次開發(fā)探討:對話框設(shè)計的可視化實(shí)現(xiàn)[J].當(dāng)代建設(shè),2002,1(4) :43.44.
[6] 谷芳,王洪海.雙錐密封的參數(shù)化繪圖[J].石油化工設(shè)備技術(shù),2001, 22(5) :41—43.
[7] 譚妹.參數(shù)化設(shè)計繪圖系統(tǒng)[J].機(jī)械設(shè)計與制造,2005,1(8) :66— 68.062
本站論文資源均為來自網(wǎng)絡(luò)轉(zhuǎn)載,免費(fèi)提供給廣大作者參考,不進(jìn)行任何贏利,如有版權(quán)問題,請聯(lián)系管理員刪除! 快速論文發(fā)表網(wǎng)(www.455685.com)本中心和國內(nèi)數(shù)百家期刊雜志社有良好的合作關(guān)系,可以幫客戶代發(fā)論文投稿.
投稿郵箱:ksfbw@126.com
客服Q Q:
82702382
聯(lián)系電話:15295038833
本站論文資源均為來自網(wǎng)絡(luò)轉(zhuǎn)載,免費(fèi)提供給廣大作者參考,不進(jìn)行任何贏利,如有版權(quán)問題,請聯(lián)系管理員刪除!