4 后置處理
后置處理是一個(gè)文本編輯處理過程,其作用是將提取的圖形信息根據(jù)指定數(shù)控機(jī)床的特點(diǎn)及規(guī)定的格式進(jìn)行分析、判斷和處理,轉(zhuǎn)化為機(jī)床能夠識(shí)別的NC代碼并輸出。圖5為后置處理流程圖。
圖5 后置處理流程圖
4.1 圓的直線擬合插補(bǔ)算法
圓方程的一般表示形式:
x2+y2=r2
根據(jù)擬合插補(bǔ)精度的要求,給定擬合誤差δ=0.001,而圓經(jīng)過n等分后的擬合誤差δ'為
先令n=2,判斷δ和δ'的關(guān)系,如果δ≥δ',滿足誤差要求,則不用細(xì)分;如果δ<δ',不滿足擬合誤差要求,則對(duì)圓進(jìn)一步細(xì)分,直到滿足δ≥δ'的誤差要求。當(dāng)n等分滿足誤差要求,根據(jù)等分角度可依次求出擬合線條的端點(diǎn)。
由于圖形數(shù)據(jù)多少具有一定的不確定性,因此,在對(duì)圖形數(shù)據(jù)中的特征點(diǎn)提取時(shí)采用動(dòng)態(tài)鏈表的存儲(chǔ)方式,這樣每增加一組數(shù)據(jù)只需要相應(yīng)申請(qǐng)一個(gè)鏈表節(jié)點(diǎn)就可以,而且在處理的過程中,鏈表也比數(shù)組更為方便一些,不需要移動(dòng)數(shù)據(jù)的存儲(chǔ)地址、改變相應(yīng)指針的單元的指向就行。
4.2 優(yōu)化加工路徑
由于DXF文件中圖形元素是以設(shè)計(jì)人員繪制圖元先后順序?yàn)橐罁?jù)記錄的,使得對(duì)DXF解析獲得的各圖元信息在Clist鏈表中成為無序性排列,如果對(duì)得到的數(shù)據(jù)不加處理,依次將其一個(gè)個(gè)地存入鏈表,導(dǎo)致按此順序轉(zhuǎn)化進(jìn)行的繪圖過程中圖元路徑的隨機(jī)性和無序性,使得工作過程中的無效行程大大增加。在數(shù)控加工的時(shí)候可能會(huì)增加很多不必要的起落刀次數(shù)。為了優(yōu)化加工路徑,減少起落刀次數(shù),這里對(duì)讀取的圖元數(shù)據(jù)采用插入排序的設(shè)計(jì)思想。
首先,定義兩個(gè)結(jié)構(gòu)體類型的指針變量P1,P2,并將插入節(jié)點(diǎn)定義為P,且為結(jié)構(gòu)體變量;
然后,令P1指向頭指針,P1→next指向P2這個(gè)節(jié)點(diǎn),并判斷P1→next是否是NULL,如果是,結(jié)束插入排序。否則,轉(zhuǎn)入執(zhí)行下步操作;
最后,從鏈表頭開始查找,然后分別比較P→x1、P→y1與P1→x2、P1→y2之間的關(guān)系,或者分別比較P→x2、P→y2與P2→x1、P2→y1之間的關(guān)系。如果相等,則將節(jié)點(diǎn)P插入節(jié)點(diǎn)P1、P2之間,如果不等,則P1→next繼續(xù)比較,直到P1→next=NULL。如果沒有找到起終點(diǎn)坐標(biāo)相等的條件,則將要插入的線段數(shù)據(jù)鏈接在鏈表尾端。
5 運(yùn)行效果
圖6 AutocAD中繪制的圖形文件
為考察該程序運(yùn)行的效果是否達(dá)到預(yù)期要求,首先在AutoCAD環(huán)境下繪制如圖6所示的窗格圖,然后將其保存為DXF格式文件。運(yùn)行該應(yīng)用程序并讀取AutoCAD所繪制的DXF格式圖形,VC++程序窗口將NC代碼加工雕刻軌跡模擬出來,圖7為該程序雕刻軌跡仿真圖。
圖7 VC++窗口雕刻圖形軌跡仿真圖
同時(shí)在文件夾中生成一個(gè)nc_code.gc的文件,該文件為文本文件,通過記事本或者文本處理軟件均可以打開,可以查看生成的NC代碼,圖8為上例生成的部分代碼。
圖8 生成的部分NC代碼
6 結(jié)論
文中針對(duì)數(shù)控加工過程中存在的實(shí)際問題,以數(shù)控加工過程中常見的DXF文件為基礎(chǔ),通過讀取DXF文件中直線和圓的數(shù)據(jù)信息,并對(duì)圖形文件進(jìn)行具體分析,然后采用小段直線擬合曲線的方式,對(duì)擬合點(diǎn)數(shù)據(jù)采用比較插入排序的優(yōu)化算法,并將生成的數(shù)控代碼送入數(shù)控機(jī)床進(jìn)行加工。通過比較發(fā)現(xiàn),此優(yōu)化算法解決了雕刻過程中起落刀次數(shù)過于頻繁、雕刻過程隨機(jī)性比較強(qiáng)的問題,有效提高了加工效率。
(審核編輯: 智匯小新)
分享