楊曉龍,嵇寧,張金龍,賀健琪,劉曉婷
(西安航空學(xué)院 a. 機(jī)械學(xué)院, b. 航空工程系,陜西 西安 710077)
AutoCAD環(huán)境下數(shù)控編程數(shù)據(jù)的重構(gòu)
楊曉龍a,嵇寧b,張金龍a,賀健琪a,劉曉婷a
(西安航空學(xué)院 a. 機(jī)械學(xué)院, b. 航空工程系,陜西 西安 710077)
介紹了使用AutoLISP語言編程,實(shí)現(xiàn)數(shù)控加工過程中對(duì)象排序和數(shù)據(jù)重構(gòu)的方法。通過對(duì)圖元對(duì)象信息的分析,論述了該方法的原理和實(shí)現(xiàn)流程,給出了應(yīng)用實(shí)例以及數(shù)據(jù)重構(gòu)后的結(jié)果。采用AutoLISP語言進(jìn)行二次開發(fā),方便了技術(shù)人員在數(shù)控編程中直接得到所需要的數(shù)據(jù),提高了數(shù)控編程的效率。
數(shù)控加工; AutoCAD;對(duì)象屬性;數(shù)據(jù)重構(gòu)
對(duì)AutoCAD軟件進(jìn)行二次開發(fā),實(shí)現(xiàn)數(shù)控加工的自動(dòng)編程,這不僅能充分利用現(xiàn)有的工程圖[1],而且還能夠滿足企業(yè)對(duì)數(shù)控編程系統(tǒng)具有高效、廉價(jià)性能的需求[2]。根據(jù)AutoCAD軟件和數(shù)控加工系統(tǒng)對(duì)零件幾何信息描述方式的不同,所以提出了在AutoCAD環(huán)境下利用AutoLISP語言完成零件在數(shù)控加工時(shí)所需編程數(shù)據(jù)的重構(gòu)方法,即由技術(shù)人員從編程原點(diǎn)出發(fā),按照加工路線順序,依次選擇待走刀零件的輪廓,通過讀取加工對(duì)象的屬性信息,經(jīng)過相關(guān)數(shù)學(xué)計(jì)算和數(shù)據(jù)排序處理,得到數(shù)控加工編程所需要的幾何數(shù)據(jù)。
在AutoCAD中所繪制和編輯的每一個(gè)圖元對(duì)象(如LINE,CIRCLE,ARC,TEXT,BLOCK,POLYLINE,DIMENSION……)都有其專屬的屬性列表,這包括:圖元名、對(duì)象類別、處理碼、子類別、模型空間、圖層名稱等。例如,通過調(diào)用相關(guān)的LISP函數(shù),提取圖形上的某個(gè)圓弧,得到如下的屬性列表:
((-1. <圖元名: 7ef4fd70>) (0.“ARC”) (330.<圖元名: 7ef4fd08>) (5.“2E”) (100.“AcDbEntity”) (67.0) (410.“Model”)
(8.“0”) (100.“AcDbCircle”)(10 225.0 160.0 0.0) (40.25.0) (210 0.0 0.0 1.0) (100.“AcDbArc”) (50.0.0) (51.2.2143))
該表中與自動(dòng)編程有關(guān)的信息是:(……(0.“ARC”)……(10 225.0 160.0 0.0) (40.25.0)……(50. 0.0) (51.2.2143))。其中,群碼0對(duì)應(yīng)“對(duì)象類別”,這里指圓弧;群碼10對(duì)應(yīng)“圓心坐標(biāo)”,后面的數(shù)字描述其具體位置;群碼40對(duì)應(yīng)“圓弧半徑”,后面的數(shù)字代表半徑大??;群碼50對(duì)應(yīng)“圓弧起點(diǎn)角度”,后面的數(shù)字為具體值;群碼51對(duì)應(yīng)“圓弧終點(diǎn)角度”,后面的數(shù)字為具體值。
AutoLISP語言是AutoCAD軟件的二次開發(fā)工具之一,內(nèi)嵌于其中,具有良好的編輯環(huán)境和程序調(diào)試方便等特點(diǎn),操作人員利用它二次開發(fā),不但能較容易地識(shí)別圖元對(duì)象,而且還滿足工程技術(shù)人員數(shù)控現(xiàn)場(chǎng)編程的需求[3]。通過上面的分析,調(diào)用相關(guān)LISP函數(shù)可以清除掉諸如圖元對(duì)象中的圖元名、處理碼、子類別、模型空間、圖層等屬性信息,保留對(duì)象類別信息和相關(guān)幾何信息。
因?yàn)閿?shù)控系統(tǒng)一般都具有直線、圓弧插補(bǔ)的功能,在數(shù)控機(jī)床上加工的零件輪廓都可看成是由直線、圓弧等線條構(gòu)成的[4]。數(shù)控加工圖形軌跡所需要的屬性信息如表1所示。
表1 數(shù)控加工所需的圖元屬性信息
由于用戶不是按照加工對(duì)象的順序繪制和設(shè)計(jì)零件,所以在數(shù)控編程時(shí)不但需對(duì)加工的圖元對(duì)象進(jìn)行重新排序,而且還要對(duì)加工所需的起點(diǎn)和終點(diǎn)進(jìn)行處理(圖元對(duì)象屬性點(diǎn)中的起點(diǎn)和終點(diǎn)不一定是對(duì)象在實(shí)際加工中所需的起點(diǎn)和終點(diǎn)),以滿足加工順序的要求。但完全通過軟件進(jìn)行如上所述的自動(dòng)判別操作是不容易的,此時(shí)需人工干預(yù)。
方法如下:首先,用戶設(shè)置編程原點(diǎn)(通過自定義UCS坐標(biāo)原點(diǎn)到加工起始對(duì)象的某個(gè)端點(diǎn)上),這個(gè)編程原點(diǎn)實(shí)際上就是對(duì)刀點(diǎn),目的是為了編程方便和減少加工誤差,該點(diǎn)通常選在工件上容易找正且便于檢查的位置上;然后,用戶從加工起始對(duì)象(編程原點(diǎn)必須在其端點(diǎn)上)出發(fā)進(jìn)行選擇,按加工順序,依次選擇其他要加工的圖形單元;每當(dāng)選擇有效的加工對(duì)象時(shí),程序會(huì)同步處理所選對(duì)象的屬性信息,并將對(duì)象類別信息和處理后的幾何數(shù)據(jù)按加工路線表中對(duì)象結(jié)構(gòu)的定義格式逐條寫入到該文件中去,同時(shí)更改所選加工對(duì)象的顏色(在屏幕上直接顯示出來,方便技術(shù)人員的操作);當(dāng)所有的加工對(duì)象選擇完畢后,程序就生成了一個(gè)加工順序路線表的文件,使數(shù)控加工數(shù)據(jù)的有序性得到了保證?;谏鲜龇治?,用AutoLISP語言編寫程序,流程如圖1所示,其中,當(dāng)前節(jié)點(diǎn)的作用是保證加工對(duì)象的首尾連接。
圖1 程序流程圖
在加工順序路線表文件中,所有加工對(duì)象的排序表示為:(entity_1,entity_2,…,entity_i),其中entity_i(i=1,2,…,n)是每個(gè)加工對(duì)象所需的信息表,其具體結(jié)構(gòu)如下:
直線:(“LINE”( start_x start_y end_x end_y))
逆時(shí)針圓?。?“ARC”( start_x start_y end_x end_y) (center_x center_y) r)
順時(shí)針圓弧:(“NARC”( start_x start_y end_x end_y) (center_x center_y) r)
其中,start_x和start_y、end_x和end_y分別是對(duì)象在實(shí)際加工中所需的起點(diǎn)坐標(biāo)和終點(diǎn)坐標(biāo);center_x和center_y是圓弧圓心坐標(biāo);r是圓弧的半徑。
在編寫程序中,主要用到的LISP功能函數(shù)諸如:setq,entsel,entget,entdel,assoc,entmod,cdr,car,cadr,subst,cons,progn,open等函數(shù)的具體用法詳見文獻(xiàn)[5],文中就不再詳述。
數(shù)據(jù)處理,是根據(jù)所選的圖元對(duì)象,從其屬性的對(duì)應(yīng)群碼中讀取其群碼值,并經(jīng)過數(shù)學(xué)運(yùn)算得到加工所需的數(shù)據(jù),以便于后續(xù)NC代碼的自動(dòng)生成。對(duì)于直線,可直接獲得其屬性點(diǎn)中的端點(diǎn)坐標(biāo)列表;對(duì)于圓弧,可直接獲得其屬性中的圓心坐標(biāo)列表和半徑以及起始角和終止角,但其端點(diǎn)坐標(biāo)列表需經(jīng)過相關(guān)的計(jì)算獲得。由于在AutoCAD中圓弧是按逆時(shí)針方向生成的,所以當(dāng)圓弧屬性點(diǎn)中的起點(diǎn)和當(dāng)前節(jié)點(diǎn)重合,則該圓弧按逆時(shí)針方向加工;當(dāng)圓弧屬性點(diǎn)中的終點(diǎn)和當(dāng)前節(jié)點(diǎn)重合,則該圓弧按順時(shí)針方向加工,此時(shí)標(biāo)記“NARC”信息,對(duì)調(diào)起終點(diǎn)的值,這樣就為NC代碼的自動(dòng)生成提供順時(shí)針圓弧加工或逆時(shí)針圓弧加工的信息。對(duì)于多段線,可以先將其進(jìn)行分解,然后按直線或圓弧進(jìn)行數(shù)據(jù)處理。
部分源程序如下所示:
( progn
( setq startpt (cdr ( assoc 10 en_data))) ;讀取直線起點(diǎn)坐標(biāo)列表
( setqendpt (cdr ( assoc 11 en_data))) ;讀取直線終點(diǎn)坐標(biāo)列表
)
)
( if ( = style “ARC”);圓弧屬性點(diǎn)的數(shù)據(jù)處理
試驗(yàn)地設(shè)在黑龍江省佳木斯市郊區(qū)蓮江口鎮(zhèn)蓮花泡,試驗(yàn)地面積666m2,土質(zhì)為黑壤土。試驗(yàn)田平整,排灌方便,管理水平較高,試驗(yàn)地未施用任何其他藥劑。
( progn
( setqcenter ( cdr ( assoc 10 en_data))) ;讀取圓弧圓心坐標(biāo)列表
( setqr ( cdr ( assoc 40 en_data))) ;讀取圓弧半徑
( setq startdeg ( cdr ( assoc 50 en_data))) ;讀取圓弧起點(diǎn)角度
( setq enddeg ( cdr ( assoc 51 en_data))) ;讀取圓弧終點(diǎn)角度
;生成圓弧起點(diǎn)、終點(diǎn)坐標(biāo)列表
( setq startpt ( list ( + (car center) (* r (cos startdeg))) ( + (cadr center) (* r (sin startdeg))) 0.0))
( setq endpt ( list ( + ( car center) (* r (cos enddeg))) ( + (cadr center) (* r (sin enddeg))) 0.0))
)
;定義加工所需的起點(diǎn)和終點(diǎn),其中point是當(dāng)前節(jié)點(diǎn)
(cond (( equal point startpt)
( progn
( setq start_x ( car point))
( setq start_y ( cadr point))
( setq end_x ( car endpt))
( setq end_y ( cadr endpt))
))
(( equal point endpt)
( progn
( setq start_x ( car point))
( setq start_y ( cadr point))
( setq end_x ( car startpt))
( setq end_y ( cadr startpt))
(if ( = style “ARC”)(setq style “NARC”));標(biāo)識(shí)該圓弧為順時(shí)針加工的圓弧
))
)
如圖2所示,該圖形輪廓形狀由7條直線和3段圓弧組成,若將O點(diǎn)定義為編程原點(diǎn)(即X=0,Y=0),以O(shè)A線段為起始對(duì)象,依次選擇完其他的對(duì)象,則得到加工路線表文件中的內(nèi)容是:
((“LINE”(0.0 0.0 0.0 20.0)) (“LINE”(0.0 20.0 25.9808 65.0)) (“NARC”(25.9808 65.0 39.0503 68.9754)(31.6410 60.0) 10) (“LINE”(39.0503 68.9754 75.5907 51.0246)) (“ARC”(75.5907 51.0246 90.0 60.0)(80.0 60.0) 10) (“LINE”(90.0 60.0 90.0 75.0)) (“NARC”(90.0 75.0 140.0 55.0)(120.0 55.0) 20) (“LINE”(140.0 55.0 140.0 0.0)) (“LINE”(140.0 0.0 0.0 0.0)))
從該表中可看出所有對(duì)象是按照加工順序排列且首尾相連,同時(shí)對(duì)圓弧的加工順序信息進(jìn)行了區(qū)分,即“ARC”是按照逆時(shí)針加工,“NARC”是按照順時(shí)針方向加工,那么對(duì)于下一步的數(shù)控自動(dòng)編程也就方便的多了。
圖2 待加工的某零件輪廓
程序解決了在數(shù)控編程過程中加工對(duì)象的數(shù)據(jù)處理和重構(gòu)等問題,相對(duì)于文獻(xiàn)[6]方法,采用AutoLISP語言進(jìn)行開發(fā),方便了用戶的操作,即在繪制出零件圖后運(yùn)行該程序可直接得到數(shù)控自動(dòng)編程所需的加工數(shù)據(jù),數(shù)值全部由計(jì)算機(jī)完成,降低了出錯(cuò)概率,為從AutoCAD圖形直接生成NC程序奠定了基礎(chǔ)。
[1] 楊曉龍,晁曉菲. 利用二維工程圖重建三維實(shí)體模型[J]. 鑄造技術(shù),2011,(7):1034.
[2]卜波. 經(jīng)濟(jì)型圖形數(shù)控編程系統(tǒng)的開發(fā)[J]. 制造業(yè)自動(dòng)化,2009,(12):149-151.
[3] 姚壯,馬躍,張富彥. 一種新的數(shù)控現(xiàn)場(chǎng)自動(dòng)編程方法[J]. 小型微型計(jì)算機(jī)系統(tǒng),2011,(1):61-65.
[4] 李躍武. 二維輪廓數(shù)控編程節(jié)點(diǎn)計(jì)算CAD法[J]. 現(xiàn)代制造工程,2005,(6):22-23.
[5] 吳永進(jìn),林美櫻. AutoCAD完全應(yīng)用指南[M ]. 北京:科學(xué)出版社, 2011.
[6] 吳勝?gòu)?qiáng),趙曉東,蒲筠果. 利用CAD/CAM軟件確定數(shù)控編程中未知點(diǎn)的坐標(biāo)[J]. 工程圖學(xué)學(xué)報(bào),2010,(3):197-199.
Data Reconstruction of Numerical Control Programming with AutoCAD
YANG Xiaolonga, JI Ningb,ZHANG Jinlonga,HE Jianqia,LIU Xiaotinga
(a. School of Mechanical Engineering, b. School of AeronauticalEngineering, Xi’an Aeronautical University, Xi’an 710077, China)
This paper presents the method to solve the problems of objects sorting and data reconstruction during the NC machining process by AutoLISP programming, describes the principle and programming flow by the information analysis of graphic element and give out the application example as well as the results. AutoLISP language is used to do the secondary development. This makes getting the date for NC-programming convenient for the technologists. so that its efficiency is improved greatly.
NC-machining; autoCAD; object properties; reconstruction of data
西安航空學(xué)院2012 年科學(xué)研究項(xiàng)目(12XP102)
楊曉龍(1976-),男,陜西咸陽(yáng)人,講師,碩士,主要研究方向:CAD/CAM、創(chuàng)新設(shè)計(jì)。
TH164
A
1671-5276(2015)05-0113-03
2014-03-04