楊曉龍,嵇寧,張金龍,賀健琪,劉曉婷
(西安航空學(xué)院 a. 機械學(xué)院, b. 航空工程系,陜西 西安 710077)
AutoCAD環(huán)境下數(shù)控編程數(shù)據(jù)的重構(gòu)
楊曉龍a,嵇寧b,張金龍a,賀健琪a,劉曉婷a
(西安航空學(xué)院 a. 機械學(xué)院, b. 航空工程系,陜西 西安 710077)
介紹了使用AutoLISP語言編程,實現(xiàn)數(shù)控加工過程中對象排序和數(shù)據(jù)重構(gòu)的方法。通過對圖元對象信息的分析,論述了該方法的原理和實現(xiàn)流程,給出了應(yīng)用實例以及數(shù)據(jù)重構(gòu)后的結(jié)果。采用AutoLISP語言進行二次開發(fā),方便了技術(shù)人員在數(shù)控編程中直接得到所需要的數(shù)據(jù),提高了數(shù)控編程的效率。
數(shù)控加工; AutoCAD;對象屬性;數(shù)據(jù)重構(gòu)
對AutoCAD軟件進行二次開發(fā),實現(xiàn)數(shù)控加工的自動編程,這不僅能充分利用現(xiàn)有的工程圖[1],而且還能夠滿足企業(yè)對數(shù)控編程系統(tǒng)具有高效、廉價性能的需求[2]。根據(jù)AutoCAD軟件和數(shù)控加工系統(tǒng)對零件幾何信息描述方式的不同,所以提出了在AutoCAD環(huán)境下利用AutoLISP語言完成零件在數(shù)控加工時所需編程數(shù)據(jù)的重構(gòu)方法,即由技術(shù)人員從編程原點出發(fā),按照加工路線順序,依次選擇待走刀零件的輪廓,通過讀取加工對象的屬性信息,經(jīng)過相關(guān)數(shù)學(xué)計算和數(shù)據(jù)排序處理,得到數(shù)控加工編程所需要的幾何數(shù)據(jù)。
在AutoCAD中所繪制和編輯的每一個圖元對象(如LINE,CIRCLE,ARC,TEXT,BLOCK,POLYLINE,DIMENSION……)都有其專屬的屬性列表,這包括:圖元名、對象類別、處理碼、子類別、模型空間、圖層名稱等。例如,通過調(diào)用相關(guān)的LISP函數(shù),提取圖形上的某個圓弧,得到如下的屬性列表:
((-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))
該表中與自動編程有關(guān)的信息是:(……(0.“ARC”)……(10 225.0 160.0 0.0) (40.25.0)……(50. 0.0) (51.2.2143))。其中,群碼0對應(yīng)“對象類別”,這里指圓??;群碼10對應(yīng)“圓心坐標(biāo)”,后面的數(shù)字描述其具體位置;群碼40對應(yīng)“圓弧半徑”,后面的數(shù)字代表半徑大?。蝗捍a50對應(yīng)“圓弧起點角度”,后面的數(shù)字為具體值;群碼51對應(yīng)“圓弧終點角度”,后面的數(shù)字為具體值。
AutoLISP語言是AutoCAD軟件的二次開發(fā)工具之一,內(nèi)嵌于其中,具有良好的編輯環(huán)境和程序調(diào)試方便等特點,操作人員利用它二次開發(fā),不但能較容易地識別圖元對象,而且還滿足工程技術(shù)人員數(shù)控現(xiàn)場編程的需求[3]。通過上面的分析,調(diào)用相關(guān)LISP函數(shù)可以清除掉諸如圖元對象中的圖元名、處理碼、子類別、模型空間、圖層等屬性信息,保留對象類別信息和相關(guān)幾何信息。
因為數(shù)控系統(tǒng)一般都具有直線、圓弧插補的功能,在數(shù)控機床上加工的零件輪廓都可看成是由直線、圓弧等線條構(gòu)成的[4]。數(shù)控加工圖形軌跡所需要的屬性信息如表1所示。
表1 數(shù)控加工所需的圖元屬性信息
由于用戶不是按照加工對象的順序繪制和設(shè)計零件,所以在數(shù)控編程時不但需對加工的圖元對象進行重新排序,而且還要對加工所需的起點和終點進行處理(圖元對象屬性點中的起點和終點不一定是對象在實際加工中所需的起點和終點),以滿足加工順序的要求。但完全通過軟件進行如上所述的自動判別操作是不容易的,此時需人工干預(yù)。
方法如下:首先,用戶設(shè)置編程原點(通過自定義UCS坐標(biāo)原點到加工起始對象的某個端點上),這個編程原點實際上就是對刀點,目的是為了編程方便和減少加工誤差,該點通常選在工件上容易找正且便于檢查的位置上;然后,用戶從加工起始對象(編程原點必須在其端點上)出發(fā)進行選擇,按加工順序,依次選擇其他要加工的圖形單元;每當(dāng)選擇有效的加工對象時,程序會同步處理所選對象的屬性信息,并將對象類別信息和處理后的幾何數(shù)據(jù)按加工路線表中對象結(jié)構(gòu)的定義格式逐條寫入到該文件中去,同時更改所選加工對象的顏色(在屏幕上直接顯示出來,方便技術(shù)人員的操作);當(dāng)所有的加工對象選擇完畢后,程序就生成了一個加工順序路線表的文件,使數(shù)控加工數(shù)據(jù)的有序性得到了保證?;谏鲜龇治?,用AutoLISP語言編寫程序,流程如圖1所示,其中,當(dāng)前節(jié)點的作用是保證加工對象的首尾連接。
圖1 程序流程圖
在加工順序路線表文件中,所有加工對象的排序表示為:(entity_1,entity_2,…,entity_i),其中entity_i(i=1,2,…,n)是每個加工對象所需的信息表,其具體結(jié)構(gòu)如下:
直線:(“LINE”( start_x start_y end_x end_y))
逆時針圓?。?“ARC”( start_x start_y end_x end_y) (center_x center_y) r)
順時針圓?。?“NARC”( start_x start_y end_x end_y) (center_x center_y) r)
其中,start_x和start_y、end_x和end_y分別是對象在實際加工中所需的起點坐標(biāo)和終點坐標(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ù)的具體用法詳見文獻[5],文中就不再詳述。
數(shù)據(jù)處理,是根據(jù)所選的圖元對象,從其屬性的對應(yīng)群碼中讀取其群碼值,并經(jīng)過數(shù)學(xué)運算得到加工所需的數(shù)據(jù),以便于后續(xù)NC代碼的自動生成。對于直線,可直接獲得其屬性點中的端點坐標(biāo)列表;對于圓弧,可直接獲得其屬性中的圓心坐標(biāo)列表和半徑以及起始角和終止角,但其端點坐標(biāo)列表需經(jīng)過相關(guān)的計算獲得。由于在AutoCAD中圓弧是按逆時針方向生成的,所以當(dāng)圓弧屬性點中的起點和當(dāng)前節(jié)點重合,則該圓弧按逆時針方向加工;當(dāng)圓弧屬性點中的終點和當(dāng)前節(jié)點重合,則該圓弧按順時針方向加工,此時標(biāo)記“NARC”信息,對調(diào)起終點的值,這樣就為NC代碼的自動生成提供順時針圓弧加工或逆時針圓弧加工的信息。對于多段線,可以先將其進行分解,然后按直線或圓弧進行數(shù)據(jù)處理。
部分源程序如下所示:
( progn
( setq startpt (cdr ( assoc 10 en_data))) ;讀取直線起點坐標(biāo)列表
( setqendpt (cdr ( assoc 11 en_data))) ;讀取直線終點坐標(biāo)列表
)
)
( if ( = style “ARC”);圓弧屬性點的數(shù)據(jù)處理
試驗地設(shè)在黑龍江省佳木斯市郊區(qū)蓮江口鎮(zhèn)蓮花泡,試驗地面積666m2,土質(zhì)為黑壤土。試驗田平整,排灌方便,管理水平較高,試驗地未施用任何其他藥劑。
( progn
( setqcenter ( cdr ( assoc 10 en_data))) ;讀取圓弧圓心坐標(biāo)列表
( setqr ( cdr ( assoc 40 en_data))) ;讀取圓弧半徑
( setq startdeg ( cdr ( assoc 50 en_data))) ;讀取圓弧起點角度
( setq enddeg ( cdr ( assoc 51 en_data))) ;讀取圓弧終點角度
;生成圓弧起點、終點坐標(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))
)
;定義加工所需的起點和終點,其中point是當(dāng)前節(jié)點
(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)識該圓弧為順時針加工的圓弧
))
)
如圖2所示,該圖形輪廓形狀由7條直線和3段圓弧組成,若將O點定義為編程原點(即X=0,Y=0),以O(shè)A線段為起始對象,依次選擇完其他的對象,則得到加工路線表文件中的內(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)))
從該表中可看出所有對象是按照加工順序排列且首尾相連,同時對圓弧的加工順序信息進行了區(qū)分,即“ARC”是按照逆時針加工,“NARC”是按照順時針方向加工,那么對于下一步的數(shù)控自動編程也就方便的多了。
圖2 待加工的某零件輪廓
程序解決了在數(shù)控編程過程中加工對象的數(shù)據(jù)處理和重構(gòu)等問題,相對于文獻[6]方法,采用AutoLISP語言進行開發(fā),方便了用戶的操作,即在繪制出零件圖后運行該程序可直接得到數(shù)控自動編程所需的加工數(shù)據(jù),數(shù)值全部由計算機完成,降低了出錯概率,為從AutoCAD圖形直接生成NC程序奠定了基礎(chǔ)。
[1] 楊曉龍,晁曉菲. 利用二維工程圖重建三維實體模型[J]. 鑄造技術(shù),2011,(7):1034.
[2]卜波. 經(jīng)濟型圖形數(shù)控編程系統(tǒng)的開發(fā)[J]. 制造業(yè)自動化,2009,(12):149-151.
[3] 姚壯,馬躍,張富彥. 一種新的數(shù)控現(xiàn)場自動編程方法[J]. 小型微型計算機系統(tǒng),2011,(1):61-65.
[4] 李躍武. 二維輪廓數(shù)控編程節(jié)點計算CAD法[J]. 現(xiàn)代制造工程,2005,(6):22-23.
[5] 吳永進,林美櫻. AutoCAD完全應(yīng)用指南[M ]. 北京:科學(xué)出版社, 2011.
[6] 吳勝強,趙曉東,蒲筠果. 利用CAD/CAM軟件確定數(shù)控編程中未知點的坐標(biāo)[J]. 工程圖學(xué)學(xué)報,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é)研究項目(12XP102)
楊曉龍(1976-),男,陜西咸陽人,講師,碩士,主要研究方向:CAD/CAM、創(chuàng)新設(shè)計。
TH164
A
1671-5276(2015)05-0113-03
2014-03-04