胡 珺,王洪九,王漢林(江漢大學(xué) 機(jī)電與建筑工程學(xué)院,湖北 武漢 430056)
基于AutoLISP的離子氮化爐爐體組件模塊開發(fā)
胡珺,王洪九,王漢林
(江漢大學(xué)機(jī)電與建筑工程學(xué)院,湖北武漢430056)
摘要:研究了AutoCAD環(huán)境下實(shí)現(xiàn)離子氮化爐爐體設(shè)計(jì)的參數(shù)化繪圖開發(fā)。提供了基于AutoLISP技術(shù)進(jìn)行爐體組件模塊的開發(fā)設(shè)計(jì)方案,并以爐體下進(jìn)水管座為具體對象給出相關(guān)程序。該方法對開發(fā)其他定型機(jī)械產(chǎn)品CAD系統(tǒng)具有借鑒價(jià)值。
關(guān)鍵詞:AutoCAD;離子氮化爐;AutoLISP
傳統(tǒng)人機(jī)交互繪圖是以生成精確固定尺寸圖形為目的,對于新產(chǎn)品設(shè)計(jì)及相似性結(jié)構(gòu)圖形繪制則可通過二次開發(fā)參數(shù)化繪圖程序完成。參數(shù)化繪圖設(shè)計(jì)具有很強(qiáng)的草圖設(shè)計(jì)和尺寸驅(qū)動(dòng)功能,通過約束參數(shù)修改達(dá)到系列產(chǎn)品圖形生成和開發(fā)的目的。
AutoCAD軟件是目前工程設(shè)計(jì)中應(yīng)用最廣的軟件,它是由美國Autodesk公司開發(fā)的通用計(jì)算機(jī)輔助設(shè)計(jì)軟件。AutoCAD二次開發(fā)環(huán)境主要有:AutoLISP、VisualLISP、VBA、ObjectARX、DCL等。用戶可以利用這些內(nèi)嵌式編程語言進(jìn)行二次開發(fā)從而擴(kuò)充AutoCAD的功能,提高產(chǎn)品設(shè)計(jì)品質(zhì)和效率。
AutoLISP是AutoCAD二次開發(fā)的主要工具之一,是內(nèi)嵌的基礎(chǔ)性開發(fā)工具。AutoLISP是一種解釋性表結(jié)構(gòu)處理語言,具有算術(shù)運(yùn)算、關(guān)系運(yùn)算與邏輯運(yùn)算、字符處理、表處理、輸入輸出等常用功能,語法簡潔,程序控制結(jié)構(gòu)靈活,并能直接調(diào)用AutoCAD實(shí)體繪圖命令,實(shí)現(xiàn)對屏幕圖形數(shù)據(jù)庫進(jìn)行直接訪問與修改,程序文件所需存儲(chǔ)空間小、通用性強(qiáng)、開發(fā)周期短。同時(shí),AutoLISP也是人工智能領(lǐng)域中應(yīng)用最廣泛的程序設(shè)計(jì)語言,便于教學(xué)使用,以達(dá)到掌握人工智能繪圖語言的目的[1-2]。本文通過離子氮化爐爐體組件模塊開發(fā)為例說明解決實(shí)際工程類標(biāo)準(zhǔn)件自動(dòng)繪制問題的方法。
1.1參數(shù)化繪圖
參數(shù)化繪圖適用于圖形結(jié)構(gòu)具有相似性而結(jié)構(gòu)尺寸參數(shù)為變量的系列圖形生成。任意AutoCAD二維圖形可以分解為點(diǎn)、直線、圓弧、圓共4種基本圖元。基本圖元幾何信息由圖元關(guān)鍵點(diǎn)確定,圖形描述分為圖形的拓?fù)潢P(guān)系、圖形的幾何參數(shù)、幾何參數(shù)與結(jié)構(gòu)參數(shù)間聯(lián)系。將圖元間拓?fù)潢P(guān)系及約束變量信息生成程序,用賦值語句表達(dá)幾何參數(shù)與結(jié)構(gòu)參數(shù)間關(guān)系,用調(diào)用語句描述圖形拓?fù)潢P(guān)系,即可實(shí)現(xiàn)設(shè)計(jì)相似結(jié)構(gòu)通用系列產(chǎn)品模型,通過修改圖形數(shù)據(jù)庫參數(shù)即可生成尺寸參數(shù)為變量的系列相似圖形[3]。
如圖1所示“回”形紋樣,幾何參數(shù)為8個(gè)點(diǎn)坐標(biāo)(x1,y1)、(x2,y2)、(x3,y3)、(x4,y4)、(x5,y5)、(x6,y6)、(x7,y7)、(x8,y8),結(jié)構(gòu)參數(shù)為4個(gè)尺寸a、b、c、d。輸入?yún)?shù)為(x1,y1,a,b,c,d),由程序自動(dòng)確定其余各節(jié)點(diǎn)參數(shù),圖形中對邊平行、鄰邊垂直等拓?fù)潢P(guān)系直接由程序保證。
圖1 AutoCAD圖形描述Fig. 1 Description of AutoCAD drawing
1.2離子氮化爐爐體組件設(shè)計(jì)及自動(dòng)繪制
一個(gè)實(shí)際的工程實(shí)際運(yùn)用為應(yīng)機(jī)床廠設(shè)計(jì)所需,對離子氮化爐爐體部件進(jìn)行設(shè)計(jì)和參數(shù)化繪圖。設(shè)計(jì)要求利用AutoLISP程序語言進(jìn)行離子氮化爐部件的參數(shù)化繪圖設(shè)計(jì)及圖形輸出。離子氮化爐的設(shè)計(jì)繪制工作比較復(fù)雜,其爐體零部件包括爐體下進(jìn)水管座、底盤襯套、底盤抽氣襯套、下陰極托座法蘭、下陰極托座、爐底盤組件等,繪制過程基本相似,這里僅以爐體下進(jìn)水管座設(shè)計(jì)作為具體程序編制對象。
1.2.1算法設(shè)計(jì)爐體下進(jìn)水管座算法設(shè)計(jì)流程圖如圖2所示,首先輸入初始參數(shù)并判定輸入正確性,然后根據(jù)圖形拓?fù)浼s束關(guān)系由初始參數(shù)計(jì)算各點(diǎn),并調(diào)用實(shí)體繪圖命令繪制圖形,最后給出尺寸樣式參數(shù)設(shè)定并進(jìn)行尺寸標(biāo)注。圖形參數(shù)和幾何關(guān)系如圖3所示,其中a為柱高,?d為小徑,?c為大徑,Ra為表面粗糙度。初始參數(shù)點(diǎn)p0定于圖形中心線與外輪廓線相交處,順序各點(diǎn)為p1,p2,…,p20。
1.2.2初始環(huán)境設(shè)置模塊初始環(huán)境設(shè)置模塊主要是對參數(shù)化繪圖環(huán)境進(jìn)行設(shè)置,以便于所有對環(huán)境參數(shù)的引用保持相同。主要包括幅面、視圖、圖層、線型、比例、顏色、尺寸參數(shù)設(shè)置,初始化程序部分程序如下。
;;初始化
(defun hcch()
(command "limits"′(0 0)′(210 297));幅面定義
(command "zoom" "all")
(command "layer" "n" 1 "c" "white" 1 "l" "continuous" 1 "");定義連續(xù)實(shí)線層
(command "layer" "n" 2 "c" "red" 2 "l" "acad_iso10w100" 2 "")
(command "layer" "n" 3 "c" "green" 3 "l" "continuous" 3 "")
(command "layer" "n" 4 "c" "yellow" 4 "l" "continuous" 4 "")
(command "layer" "n" 5 "c" "blue" 5 "l" "continuous" 5 "")
(command "dimaso" "0");尺寸樣式參數(shù)定義
(command "dimasz" "2.5")
(command "dimdli" "8")
(command "dimexe" "2.5")
(command "dimexo" "0")
(command "dimgap" "0.5")
(command "dimrnd" "1")
(command "dimtad" "1")
(command "dimtih" "0")
(command "dimtix" "0")
(command "dimtoh" "0")
(command "dimtol" "0")
(command "dimtxt" "2" "dimtfac" "0.5"))
圖2 系統(tǒng)流程圖Fig. 2 System fow chart
圖3 圖形參數(shù)與幾何圖Fig. 3 Drawing parameters and geometric diagram
1.2.3圖形描述與繪制模塊圖形描述和繪制模塊是程序的主要部分。在實(shí)現(xiàn)參數(shù)化繪圖功能后,可以自定義人機(jī)交互界面,運(yùn)用對話框控制模塊從用戶處獲取初始參數(shù),對話窗體驅(qū)動(dòng)一般包括加載對話框、顯示對話框、設(shè)置相關(guān)初始參數(shù)、處理用戶操作、卸載對話框,通過定義實(shí)現(xiàn)對話框內(nèi)特定處理功能。同時(shí)通過自定義界面編輯實(shí)現(xiàn)在幫助菜單后添加用戶下拉菜單及子菜單項(xiàng),從而實(shí)現(xiàn)整個(gè)系統(tǒng)的開發(fā)運(yùn)行。自定義下拉菜單如圖4所示。
圖4 應(yīng)用系統(tǒng)自定義菜單Fig. 4 Customizing menu of the application system
圖形繪制模塊根據(jù)初始參數(shù)計(jì)算獲得的數(shù)據(jù)計(jì)算圖形繪制所需的參數(shù),從而確定各基本圖元關(guān)鍵值。利用這些參數(shù)確定三維的點(diǎn)和向量,經(jīng)運(yùn)算得出繪圖所需的三維點(diǎn)。利用創(chuàng)建的函數(shù)將新創(chuàng)建的實(shí)體設(shè)置到相應(yīng)的圖層,并關(guān)閉實(shí)體。這時(shí)在用戶指定的位置、以用戶指定的角度顯示圖形。圖形繪制模塊具體設(shè)計(jì)過程如下。
(1)坐標(biāo)基點(diǎn)選定。
將各視圖坐標(biāo)基點(diǎn)選定在幅面內(nèi)適當(dāng)位置,各視圖主要節(jié)點(diǎn)相對位置根據(jù)圖形拓?fù)涮卣鞔_定。
(2)圖形描述。
以p0為基準(zhǔn)點(diǎn),根據(jù)拓?fù)潢P(guān)系計(jì)算各節(jié)點(diǎn)位置值[4]。圖形描述部分程序如下:
(setq p0′(80 170)
e(- a b)
f(/ d 2)
g(/ c 2)
h(- g 1)
i(- a 1)
pz01(list(-(car p0)3)(cadr p0));中心線端點(diǎn)
p1(list(car p0)(-(cadr p0)f));基點(diǎn)計(jì)算得到p1
p2(list(+(car p0)e)(-(cadr p0)f))
p3(list(+(car p0)e)(-(cadr p0)g))
p4(list(+(car p0)i)(-(cadr p0)g))
p5(list(+(car p0)a)(-(cadr p0)h))
p6(list(+(car p0)a)(+(cadr p0)h))
p7(list(+(car p0)i)(+(cadr p0)g))
p8(list(+(car p0)e)(+(cadr p0)g))
p9…)
(3)圖形繪制。
根據(jù)圖形描述完成圖形繪制、標(biāo)注、圖框標(biāo)題欄[5]。
;;畫輪廓線
(command "layer" "s" "1" "")
(command "pline" p1 "w" "0.5" "" p2 "");多義線命令繪輪廓
(setq e1(entlast))
(command "pline" p2 "w" "0.5" "" p3 "")
(setq e2(entlast))
(command "pline" p3 "w" "0.5" "" p4 "")
(setq e3(entlast))
(command "pline" p4 "w" "0.5" "" p5 "")
(setq e4(entlast))
……
;;標(biāo)注
(command "layer" "s" "4" "")
(command "dim" "hor" p1 p5 "@0,-20" "")
(command "hor" p3 p5 "@0,-8" "")
(command "ver" p4 p7 "@12,0" "" "exit")
(command "dimse2" "on")
(command "dim" "ver" p15 "@0,21" "@6,0" "G1/2" "exit")
(command "dimse2" "off")
(command "dimtol" "on")
(command "dimtm" 0.1 "")
(command "dim" "ver" p1 p10 "@-6,0" "%%c<>" "exit")
;;畫剖面線
(command "layer" "s" "3" "")
(command "hatch" "u" 45 3 "" e1 e2 e3 e4 e5 e6 e7 e8 e9 "")
(command "layer" "s" "5" "")
(command "insert" "··/ ku/czd7" pc "0.5" "0.5" 90);插入自定義庫內(nèi)粗糙度符號
(command "block" "aa" p0 "all" "")
(command "insert" "aa" p0 "2" "" "")
(command "layer" "s" "1" "")
(command "insert" "··/ ku/tk4"′(0 0)"" "" "");插入自定義庫內(nèi)A4圖框
(command "insert" "··/ku/btl4"′(200 10)"" "" "");插入自定義庫內(nèi)標(biāo)題欄
;;寫入
(command "layer" "s" "5" "")
(command "style" "style2" "simfang.ttf" "" "" "" "" "");定義字體類型為仿宋
(command "text"′(106 49)4 0 "爐體下進(jìn)水管座LD-30KW")
(command "text"′(105 35)6 0 " 35 1 ")
(command "text"′(167 40)4 0 " 20301/2 ")
(command "text"′(157 32)4 0 "0.1 2:1")
(command "text"′(145.5 15)5.5 0 "武漢XX機(jī)床廠")
(command "insert" "··/ku/czd7"′(175 260)"0.8" "0.8" "")
(command "style" "style1" "txt.shx" "" "" "" "" "" "")
(command "text"′(172 250)4.5 0 "未注倒角c1"))
在AutoCAD中點(diǎn)擊下拉菜單項(xiàng)后彈出一個(gè)參數(shù)輸入對話框,輸入?yún)?shù)后進(jìn)行計(jì)算得出結(jié)果,點(diǎn)擊生成圖紙和生成圖形,最終生成離子氮化爐CAD圖形。典型界面如圖5和圖6所示。
圖5 應(yīng)用系統(tǒng)自定義界面Fig. 5 Customizing interface of the application system
圖6 參數(shù)化繪圖全圖Fig. 6 Total graph of the parametric drawing
本文所述模塊已在Windows XP、AutoCAD 2008上調(diào)試通過,取得較為滿意的效果。該模塊開發(fā)采用AutoLISP,此方法開發(fā)速度快、周期短。通過實(shí)例介紹運(yùn)用二次開發(fā)技術(shù)在機(jī)械工程上的應(yīng)用,對推廣計(jì)算機(jī)輔助設(shè)計(jì)在參數(shù)化設(shè)計(jì)方面的應(yīng)用有較強(qiáng)現(xiàn)實(shí)意義,其方法對開發(fā)其他已定型的機(jī)械產(chǎn)品CAD系統(tǒng)也具有推廣價(jià)值。
參考文獻(xiàn)(References)
[1]李堯,王少愚.機(jī)械類專業(yè)的實(shí)踐教學(xué)及其擴(kuò)展[J].教育與職業(yè),2008(26):163-164.
[2]鄧興龍. AutoCAD 2008實(shí)例教程[M].廣州:華南理工大學(xué)出版社,2009.
[3]蔣先剛,涂曉斌. AutoCAD 2008工程繪圖及應(yīng)用開發(fā)[M].成都:西南交通大學(xué)出版社,2008.
[4]趙天嬋,胡珺.機(jī)械工程專業(yè)實(shí)驗(yàn)教學(xué)平臺(tái)綜合實(shí)驗(yàn)項(xiàng)目設(shè)計(jì)[J].延邊大學(xué)學(xué)報(bào):自然科學(xué)版,2008,34(1):68-71.
[5]胡珺,萬宇杰.淺談CAD綜合實(shí)驗(yàn)的設(shè)計(jì)[J].職業(yè)教育研究,2007(12):128.
(責(zé)任編輯:范建鳳)
Model Development of Ionic Nitriding Furnace Based on AutoLISP
HU Jun,WANG Hongjiu,WANG Hanlin
(School of Electromechanical and Architectural Engineering,Jianghan University,Wuhan 430056,Hubei,China)
Abstract:Studies the parametric drawing development of ionic nitriding furnace body under AutoCAD environment. Presents developing and designing scheme of the furnace body module based on AutoLISP,and gives out relative program taking water inlet as concrete object. The method has reference value for CAD system of other mechanical products.
Keywords:AutoCAD;ionic nitriding furnace;AutoLISP
作者簡介:胡珺(1973—),女,高級實(shí)驗(yàn)師,碩士,研究方向:CAD及圖形學(xué)。
基金項(xiàng)目:江漢大學(xué)機(jī)電與建筑工程學(xué)院院級科研專項(xiàng)資助項(xiàng)目(SY003[2013])
收稿日期:2014-05-20
DOI:10.16389/j.cnki.cn42-1737/n.2015.01.011
中圖分類號:TP391.72
文獻(xiàn)標(biāo)志碼:A
文章編號:1673-0143(2015)01-0065-05