王弘慧 ,李建輝
(1.哈爾濱軸承集團公司 質(zhì)量管理部,黑龍江 哈爾濱 150036;2.中航工業(yè)哈爾濱軸承有限公司 研發(fā)中心,黑龍江 哈爾濱 150036)
AutoCAD是由美國Autodesk公司推出的通用繪圖設(shè)計軟件,功能強大,但其功能還僅限于幫助用戶完成CAD中的圖形顯示和繪制。AutoCAD開發(fā)性好,可以利用Autolisp進行二次開發(fā),通過接口將其余高級應用相連接,可實現(xiàn)結(jié)合造型、分析計算等功能,提高輔助設(shè)計能力。本文通過編寫Autolisp程序,實現(xiàn)AutoCAD能以參數(shù)化繪圖為基礎(chǔ)的實體參數(shù)化設(shè)計。用戶只要給出參數(shù)如直徑、長度等信息,通過檢索圖形庫,即可快速生成所需圖形。
所謂參數(shù)化繪圖,是指用戶根據(jù)參數(shù)對話框的提示,輸入相關(guān)的參數(shù),就能繪制出所需的圖樣。實質(zhì)上,就是將圖形信息記錄在程序中,圖形的描述通??煞譃椋簣D形的拓撲關(guān)系、圖形的幾何參數(shù)以及這些集合參數(shù)與圖形結(jié)構(gòu)參數(shù)之間的聯(lián)系,通常用一組變量記錄圖形的集合參數(shù)(如點的坐標),用一系列的賦值語句表達幾何參數(shù)與及結(jié)構(gòu)參數(shù)(如圖形的長、寬等)之間的關(guān)系,然后用一系列的調(diào)用語句來描述圖形的拓撲關(guān)系。對于一般的參數(shù)化繪圖的程序設(shè)計,可以遵循以下步驟:
(1)分析結(jié)構(gòu)特征,確定繪圖參數(shù)。通常繪制一個零件圖樣,需要很多尺寸,但是不可能把所有尺寸都做參數(shù)化。這時就需要我們分析這個零件,確定既能體現(xiàn)零件的結(jié)構(gòu)特征,又能推導出其他尺寸的基本尺寸作為繪圖參數(shù),參數(shù)越少越好。
(2)按照圖形要求,編寫繪圖程序。在工程設(shè)計中,所有圖形都可以分解為點、直線、圓弧、圓這四種基本圖元。在二維圖形中,集合信息表示為圖形元素的關(guān)鍵點,例如點的坐標、直線的起點和終點、圓弧的起點和終點和圓的圓心,基本圖元用多種參數(shù)表示,將這些拓撲關(guān)系及控制變量信息編制成程序,設(shè)計出一組在形狀和結(jié)構(gòu)上具有相似性的產(chǎn)品模型,當修改圖形數(shù)據(jù)庫中的參數(shù)時即可生成不同尺寸的圖形。
Autolisp語言是嵌套于AutoCAD內(nèi)部,是AutoCAD開放式設(shè)計的具體表現(xiàn)。使用Autolisp可直接調(diào)用幾乎所有AutoCAD命令,Autolisp語言既具有一般高級語言的基本結(jié)構(gòu)和功能,又具有一般高級語言所沒有的強大的圖形處理功能,是當今世界上cad軟件廣泛應用的語言之一。
Autolisp語言的一個最大特點是語法較為簡單易懂,廣泛地應用于AutoCAD的二次開發(fā)上。此外,Autolisp語言還能夠利用pdb函數(shù)驅(qū)動dcl(dialog control language)文件創(chuàng)建自己的對話框,實現(xiàn)自定義的交互式參數(shù)設(shè)定對話模式,實現(xiàn)個性化圖形設(shè)計。
編制參數(shù)化繪制深溝球軸承的Autolisp程序,各坐標點如圖1 所示。
圖1 深溝球軸承示例圖
(defun c:test_exmaple()
(setvar "cmdecho" 0)
(setqD_out (getreal " 輸入軸承外徑尺寸D:")
d_in (getreal " 輸入軸承內(nèi)徑尺寸d:")
T_all (getreal " 輸入軸承裝配高T:")
D2_out (getreal " 輸入軸承外圈擋邊徑尺寸D2:")
d2_in (getreal " 輸入軸承內(nèi)圈擋邊徑尺寸d2:")
P0(getreal " 輸入軸承中心徑尺寸P0:")
Dw(getreal " 輸入軸承配套鋼球直徑Dw:")
draw0_pt_0 '(0.0 0.0))
(sub_draw01 draw0_pt_0)
(sub_draw02 draw0_pt_0)
(sub_draw04 draw0_pt_0)
(sub_trim circle_draw04_pt0_1 draw01_pt_4_5 draw02_pt_4_5)
(sub_trim circle_draw04_pt0_2 draw01_pt_6_7 draw02_pt_6_7))
(defun sub_draw01(draw0_pt_0) ;此處為子程序"sub_draw01 "的開始。
(setq draw01_pt_0 (polar draw0_pt_0 (* pi 0.5) (/D_out 2.0))
draw01_pt_1 (polar draw01_pt_0 0.0T_all)
draw01_pt_3 (polar draw01_pt_0 (* pi 1.5)D_out)
draw01_pt_4 (polar draw0_pt_0 (* pi 0.5) (/D2_out 2.0))
draw01_pt_4_5 (polar draw01_pt_4 0.0 (/T_all 2.0))
draw01_pt_7 (polar draw0_pt_0 (* pi 1.5) (/D2_out 2.0))
draw01_pt_6_7 (polar draw01_pt_7 0.0 (/T_all 2.0)))
(command "line" draw01_pt_0 draw01_pt_1 "")
(setq line01_0_1 (entlast))
(command "line" draw01_pt_3 draw01_pt_0 "")
(setq line01_0_3 (entlast))) ;此處為子程序"sub_draw01 "的結(jié)束。
……"sub_draw01"為第一個子程序,負責計算"draw01_pt_0"與 "draw01_pt_1"的坐標并繪畫出兩點間的直線,其余的子程序"sub_draw02"、"sub_draw04"、" sub_trim "因篇幅較長且彼此相似,故將其省略。
程序編制完畢保存后,在AutoCAD下方的輸入欄中輸入"(load "test_exmaple")命令,按“回車鍵”將看到狀態(tài)欄中顯示提示"test_exmaple",再次在輸入欄中輸入"test_exmaple"命令,將看到輸入欄提示"輸入軸承外徑尺寸D: ",在冒號后輸入外徑尺寸例如:100,然后按回車,將看到輸入欄提示"輸入軸承內(nèi)徑尺寸d: ",然后依次根據(jù)提示的文字內(nèi)容輸入d,T,D2,d2,P0,Dw等軸承參數(shù)所對應的數(shù)據(jù)。輸入完畢后,AutoCAD自動進行各坐標點的計算并繪制出示意圖,雙擊鼠標中鍵,將看到按照用戶輸入尺寸所繪制的軸承示意圖。
實踐表明,與傳統(tǒng)的交互式繪圖相比,應用AutoCAD中內(nèi)嵌的Autolisp進行參數(shù)化繪圖的方法,可以實現(xiàn)復雜、繁瑣、重復性繪圖的“一鍵化”操作,這將大大減少工程設(shè)計人員不必要的 重復繪圖勞動,明顯提高設(shè)計效率和準確性。此外,不僅僅在二維圖中可以進行參數(shù)化繪圖,而且在三維立體圖中也同樣可以進行廣泛的應用。