西安航空動(dòng)力控制科技有限公司 西安 710077
在繪制系列化產(chǎn)品設(shè)計(jì)圖樣時(shí),因?yàn)榘S多形狀結(jié)構(gòu)相似但參數(shù)不同的零件,使設(shè)計(jì)人員不可避免地要進(jìn)行大量重復(fù)性繪圖工作,導(dǎo)致工作效率低下。要解決這個(gè)問題,可以在AutoCAD軟件平臺(tái)上應(yīng)用其內(nèi)嵌的AutoLISP語言進(jìn)行編程二次開發(fā),依據(jù)國(guó)家標(biāo)準(zhǔn)和行業(yè)標(biāo)準(zhǔn),結(jié)合企業(yè)自身特點(diǎn),自定義繪圖命令,實(shí)現(xiàn)參數(shù)化繪圖設(shè)計(jì)。
AutoCAD作為Autodesk公司推出的一種通用的計(jì)算機(jī)輔助設(shè)計(jì)和圖形處理軟件,具有易于掌握、使用方便、繪圖精確和體系結(jié)構(gòu)開放等優(yōu)點(diǎn)。AutoCAD以強(qiáng)大的繪圖功能和便利的交互式操作風(fēng)格深受廣大科技人員的青睞,是現(xiàn)在普遍使用的計(jì)算機(jī)輔助設(shè)計(jì)軟件,已廣泛應(yīng)用于機(jī)械、建筑、電子、化工、航空、航天等領(lǐng)域。AutoCAD的缺點(diǎn)是專業(yè)性、針對(duì)性不強(qiáng),因此Autodesk公司在AutoCAD 2.18版及之后的版本中內(nèi)嵌了AutoLISP語言編程開發(fā)工具[1-3]。
AutoLISP是LISP語言的一個(gè)分支,具有很強(qiáng)的數(shù)據(jù)表格處理功能,它與AutoCAD繪圖命令相結(jié)合,可以存取和修改AutoCAD圖形實(shí)體數(shù)據(jù),存取AutoCAD的塊表、層表、視圖表、字體表及線型表,控制AutoCAD圖形屏幕和設(shè)備輸入等,并可直接調(diào)用全部的AutoCAD命令[4]。相比其它編程語言,AutoLISP語言簡(jiǎn)便易學(xué),既具有一般高級(jí)語言的基本結(jié)構(gòu)和功能,又具有一般高級(jí)語言所沒有的強(qiáng)大圖形處理功能,是應(yīng)用AutoCAD的一種重要手段[5]。
所謂參數(shù)化繪圖設(shè)計(jì),是指繪圖平臺(tái)能夠根據(jù)用戶輸入的相關(guān)參數(shù)信息,自動(dòng)生成所需的圖樣,要求設(shè)計(jì)或開發(fā)人員事先根據(jù)所要繪制的零件結(jié)構(gòu)及圖樣進(jìn)行相應(yīng)的程序設(shè)計(jì)。參數(shù)化繪圖設(shè)計(jì)可以遵循以下步驟。
(1)分析結(jié)構(gòu)特征,確定繪圖參數(shù),將既能體現(xiàn)零件結(jié)構(gòu)特征,又能推導(dǎo)出其它尺寸的基本尺寸確定為繪圖參數(shù),參數(shù)應(yīng)簡(jiǎn)潔明了[6]。
(2)輸入繪圖參數(shù),應(yīng)用DCL語言設(shè)計(jì)對(duì)話框。對(duì)話框主要考慮繪圖參數(shù)的輸入和相關(guān)布局,可在對(duì)話框中用幻燈片文件來顯示各繪圖參數(shù)的含義。應(yīng)用DCL語言定義對(duì)話框?qū)儆诮缑婷枋?,不能?dú)立運(yùn)行,需要以PDB函數(shù)為基礎(chǔ)的LISP程序來驅(qū)動(dòng),這樣才能實(shí)現(xiàn)指定的功能,獲取繪圖參數(shù)[7]。
(3)按照繪圖需要,編寫繪圖程序。根據(jù)獲取的繪圖參數(shù),按照繪圖需要,進(jìn)行相關(guān)坐標(biāo)轉(zhuǎn)換,編寫相應(yīng)的圖形繪制程序。程序編寫完成后保存為.LISP格式文件,類型名為L(zhǎng)SP。
(4)裝載相關(guān)程序,繪制所需圖形。在編輯器中編輯好的LISP程序,必須經(jīng)過加載方能使用。加載LISP程序有以下幾種方式。
① 命令行方式。在“command”提示下輸入“l(fā)oad"驅(qū)動(dòng)器:\路徑\文件名"”,用Load函數(shù)裝載。
②對(duì)話框方式。在 “command”提示下輸入“Appload”, 或選擇下拉菜單 “工具”→“AutoLISP”→“加載”選項(xiàng),在出現(xiàn)“加載/卸載應(yīng)用程序”對(duì)話框后,選擇所編寫的LISP程序進(jìn)行加載即可。
③自動(dòng)加載。在AutoCAD工作目錄下有一個(gè)ACADLISP文件,它是AutoCAD啟動(dòng)時(shí)自動(dòng)加載的AutoLISP程序。用戶想要在AutoCAD啟動(dòng)時(shí)自動(dòng)加載自己定義的程序,在這個(gè)ACADLISP文件中加入“l(fā)oad"驅(qū)動(dòng)器:\路徑 \文件名"”即可[8]。
④添加用戶工具按鈕。用以上幾種方法加載LISP程序,用戶只能在當(dāng)前圖形文件中執(zhí)行,如果退出當(dāng)前圖形文件并打開另一圖形文件,原來已加載的LISP程序?qū)?huì)自動(dòng)從內(nèi)存中清除,必須再次加載才能使用。這個(gè)缺陷可以通過添加用戶工具按鈕的方法予以解決。限于篇幅原因,這一方法的具體操作在此不作介紹。
(5)參數(shù)化繪圖。在AutoCAD環(huán)境中,LISP程序被加載后就可以運(yùn)行了。運(yùn)行時(shí),在“command”提示符下鍵入defun定義的函數(shù)名,就會(huì)出現(xiàn)相應(yīng)的對(duì)話框,輸入相關(guān)參數(shù)后點(diǎn)擊“確定”按鈕,根據(jù)提示進(jìn)行相應(yīng)輸入后,就可以繪制所需的圖形[9-10]。
筆者在工作中經(jīng)常需要繪制定位銷圖樣,所繪制的定位銷大多數(shù)形狀相同,但尺寸不一樣。盡管計(jì)算機(jī)硬盤上存有以前繪制的圖樣,可以通過更改尺寸標(biāo)注的方法或是用塊插入命令方式實(shí)現(xiàn)繪圖,但這些方法的缺點(diǎn)是輸出的圖樣與所設(shè)計(jì)的零件實(shí)際形狀不成比例,存在視覺誤差。若采用AutoLISP編程,實(shí)現(xiàn)參數(shù)化繪圖設(shè)計(jì),不但可以縮短繪圖時(shí)間,而且可以使圖形繪制得準(zhǔn)確、美觀。以下以圖1所示定位銷的參數(shù)化繪圖設(shè)計(jì)為例,介紹其實(shí)現(xiàn)過程。
(1)根據(jù)定位銷結(jié)構(gòu)特征進(jìn)行分析,確定定位銷的直徑d1、d2、D和長(zhǎng)度L、L1為繪圖參數(shù)。
(2)為了使編制的程序用起來更加方便,輸入定位銷繪圖參數(shù)時(shí)采用對(duì)話框形式,應(yīng)用DCL語言編寫一個(gè)對(duì)話框文件,在對(duì)話框中增加一個(gè)圖像按鈕,用幻燈片文件來顯示各繪圖參數(shù)的含義。對(duì)話框界面如圖2所示。
(3)根據(jù)輸入的繪圖參數(shù),確定其它參數(shù),換算繪圖坐標(biāo),用LISP語言編寫定位銷的參數(shù)化繪圖程序。主程序流程如圖3所示。
▲圖1 定位銷
(4) 在 AutoCAD環(huán)境中,相關(guān)程序被加載后就可以運(yùn)行了。運(yùn)行時(shí),在“command”提示符下鍵入文件函數(shù)名,就會(huì)出現(xiàn)對(duì)話框。輸入相關(guān)繪圖參數(shù)后,若點(diǎn)擊“取消”按鈕,則將退出此程序;若點(diǎn)擊“確定”按鈕,則對(duì)話框?qū)㈥P(guān)閉,并提示輸入繪圖基點(diǎn)。選取合適的繪圖基點(diǎn)后,就可以繪出定位銷圖形了。
如果是實(shí)心定位銷,在對(duì)話框中輸入D=0,就可以繪制出如圖4所示的圖形。
▲圖2 對(duì)話框界面
▲圖3 主程序流程
▲圖4 實(shí)心定位銷
上述定位銷參數(shù)化繪圖設(shè)計(jì)實(shí)例較簡(jiǎn)單,目的是介紹應(yīng)用AutoLISP語言在AutoCAD平臺(tái)上實(shí)現(xiàn)參數(shù)化繪圖設(shè)計(jì)的思路和方法。在理解和掌握方法的基礎(chǔ)上,對(duì)于較為復(fù)雜的問題,可以逐步分解為簡(jiǎn)單問題來處理。
從應(yīng)用實(shí)例可以看出,與直接利用AutoCAD命令進(jìn)行交互式繪圖相比,采用基于AutoCAD內(nèi)嵌的AutoLISP語言進(jìn)行參數(shù)化繪圖設(shè)計(jì),可以大大減少工程設(shè)計(jì)人員不必要的重復(fù)繪圖,提高設(shè)計(jì)效率。因此,可以說自從AutoCAD嵌入AutoLISP之后,使作為交互式圖形編輯軟件的AutoCAD發(fā)展為真正意義上進(jìn)行計(jì)算機(jī)輔助設(shè)計(jì)、繪圖的軟件。AutoLISP語言程序可以在現(xiàn)今流行的各個(gè)版本AutoCAD中使用,它的許多新增功能和優(yōu)點(diǎn)有待進(jìn)一步學(xué)習(xí)和開發(fā)。