系統(tǒng)原理及關(guān)鍵技術(shù)對(duì)數(shù)控自動(dòng)編程來說,主要的環(huán)節(jié)就是從CAD圖形中提取加工軌跡所需要的幾何信息,并對(duì)幾何信息進(jìn)行整理和路徑優(yōu)化,得到合理的加工路徑,*后再數(shù)控加工技術(shù)得到加工程序。
AutoCAD二維圖形中有較多的內(nèi),給描述零件輪廓的圖形實(shí)體以特定的相關(guān)聯(lián)的共同性質(zhì),可以有以下的方法:1)將描述零件輪廓的圖形實(shí)體放在特定的同一層;2)將描述零件輪廓的圖形實(shí)體設(shè)置為特定的統(tǒng)一顏色;3)將描述零件輪廓的圖形實(shí)體指定為特定的組;4)將描述零件輪廓的圖形實(shí)體連接為一條polyline(多段線)。
對(duì)上述方法比較的結(jié)果,為不規(guī)則曲線時(shí)顯得十分方便,同時(shí)還可通過逼近算法來調(diào)節(jié)逼近精度。(3)polyline中各直線段和圓弧段是依次首尾相接的,有起點(diǎn),有終點(diǎn),這便于確定加工刀具的運(yùn)動(dòng)方向。(4)polyline雖然包含線段與圓弧,但仍然為單一實(shí)體,便于選擇拾取。
鑒于以上考慮,把描述零件輪廓的圖線連成一條多段線,多段線的起始點(diǎn)就是刀具的起點(diǎn),加工過程中所需要的終點(diǎn)坐標(biāo)均可由多段線各頂點(diǎn)的數(shù)據(jù)確定,根據(jù)這些數(shù)據(jù)即可生成數(shù)控代碼。
數(shù)控代碼的生成實(shí)體的選擇和判斷選擇實(shí)體時(shí),首先使用了函數(shù)acedEntSel<3>,原形為:acedEntSel;此函數(shù)使AutoCAD暫停,并在命令行中提示用戶選擇實(shí)體,如果成功返回RTNORM和得到實(shí)體的ADS名。否則返回RTERROR.然后用acdbOpenObject在圖形數(shù)據(jù)庫中打開所選實(shí)體,函數(shù)原形為:acdbOpenObject;*后判斷所選擇的實(shí)體是否為.
圖形實(shí)體類常稱為輕量Polyline,它能比AcDb2DPolyline更有效率地分配內(nèi)存空間。本身含有很多有用的函數(shù),如ArcSegA,tArea,BulgeAt等。利用它們可以輕易地取得此類圖形的數(shù)據(jù),有以下函數(shù)<5>:取得PLINE的節(jié)點(diǎn)數(shù)。
StartPoint取得PLINE的起始點(diǎn)。在生成數(shù)控代碼時(shí),刀具的快速定位指令G00需要用到起始點(diǎn)的數(shù)據(jù)。PointAt按指定序號(hào)取得相應(yīng)頂點(diǎn)坐標(biāo)。
BulgeAt按指定序號(hào)取相應(yīng)頂點(diǎn)后的弧段的凸度。凸度表示圓弧的彎曲程度。它等于該圓弧所含角度的四分之一的正切值。AutoCAD中約定:凸度為零時(shí)表示直線,凸度為正數(shù)時(shí)表示逆時(shí)針圓弧,凸度為負(fù)數(shù)表示順時(shí)針圓弧,凸度絕對(duì)值小于1時(shí)表示圓弧包角小于180,凸度絕對(duì)值大于1時(shí)表示圓弧包角大于180.使用此函數(shù)可判斷出下一數(shù)控指令是直線插補(bǔ)指令G01還是圓弧插補(bǔ)指令G02、G03.
ArcSegAt按指定序號(hào)取得相應(yīng)圓弧。該函數(shù)的輸出為AcGeCircArc2d,即2D圓弧類。得到這個(gè)圓弧就能夠用圓弧類的函數(shù)得到圓心坐標(biāo)和半徑,免去復(fù)雜的計(jì)算。
輸出數(shù)控代碼本程序的數(shù)控代碼全部存儲(chǔ)在CString字符串類中,并且直接生成數(shù)控代碼文件。應(yīng)用CString類有很多好處:可直接向它加入字符串,而無需擔(dān)心內(nèi)存的分配問題;可直接與編輯框聯(lián)系,隨時(shí)更新其內(nèi)容等等。某工件在加工中運(yùn)用本系統(tǒng)自動(dòng)生成數(shù)控代碼的實(shí)例。
仿真加工的實(shí)現(xiàn)在真實(shí)數(shù)控加工前通過虛擬的加工過程實(shí)驗(yàn)演示,確認(rèn)排序、加工路線走向、換刀安排等一系列環(huán)節(jié)準(zhǔn)確性是十分必要的。為此,本系統(tǒng)運(yùn)用動(dòng)態(tài)仿真原理和計(jì)算機(jī)動(dòng)畫技術(shù),開發(fā)了虛擬加工過程。所用方法是在AutoCAD中生成三維實(shí)體表示刀具和毛坯,利用布爾運(yùn)算讓刀具和毛坯不斷進(jìn)行布爾差,實(shí)現(xiàn)加工過程的慮擬化。具體方法如下<6,7>:1)分別定義表示毛坯和加工刀具的AcDb3dSolid類指針;2)調(diào)用AcDb3dSolid類的成員函數(shù)構(gòu)造零件毛坯和刀具;3)利用三維幾何變換將刀具移動(dòng)到零件毛坯的加工位置上;4)調(diào)用booleanOper函數(shù)進(jìn)行差運(yùn)算,在零件毛坯上去除被加工的部分;5)用循環(huán)結(jié)構(gòu)和三維幾何變換矩陣改變刀具和零件毛坯的位置,重復(fù)進(jìn)行差運(yùn)算,并重新生成圖形產(chǎn)生動(dòng)畫效果,直到完成加工。
要將刀具在CNC程序的控制下,沿規(guī)定的軌跡以規(guī)定的速度約束移動(dòng)的動(dòng)態(tài)過程顯示在計(jì)算機(jī)屏幕上,只要以足夠小的時(shí)間間隔連續(xù)不斷地顯示出來即可,但在點(diǎn)(xi,yi)處顯示之前必須先將點(diǎn)(xi1,yi1)處顯示圖像擦除。本系統(tǒng)利用Windows中定時(shí)器發(fā)出的WM_TIMER消息,定時(shí)長(zhǎng)短可由用戶設(shè)定,同時(shí),為響應(yīng)該消息設(shè)置了一映射函數(shù),由該函數(shù)實(shí)現(xiàn)圖像的擦除與重畫。