1 原理
1.1 3B指令代碼的格式
格式為:B XY B YY B J G Z
其中,B是分隔符。XY和YY:①加工直線時(shí),是直線的終點(diǎn)坐標(biāo)(原點(diǎn)處于直線的起點(diǎn));②加工圓弧時(shí),是其起點(diǎn)坐標(biāo)(原點(diǎn)處于圓弧的圓心)。J和G:G是計(jì)數(shù)方向,有X、Y兩個(gè)方向,分別是Gx和Gy,如圖1所示,對于直線,當(dāng)線處在陰影區(qū)域時(shí),G取Gy,否則G取Gx;若圓孤的終點(diǎn)處于陰影區(qū),G取Gx,否則取Gy。J則是加工軌跡(直線或圓弧)在計(jì)數(shù)方向上的投影線長度或投影長度之和; Z是加工指令,共有12種(如圖2)。
1.2 Auto CAD實(shí)體選擇集及實(shí)體組碼
在Auto CAD中,每個(gè)圖形元素都可做為獨(dú)立的實(shí)體來處理,還可以用ssget()函數(shù)來構(gòu)造需要的實(shí)體選擇集。每個(gè)實(shí)體的數(shù)據(jù),都可查找其實(shí)體組碼來獲得。每個(gè)實(shí)體都有一個(gè)實(shí)體名,用組碼-1表示,還有一個(gè)實(shí)體類型,如Line、Arc、Pline等,用組碼0表示,其他組碼關(guān)系見下表。
下面是一段線的實(shí)體組碼:
(-1.<Entity name: 60000014>)
(0.”LINE”)
(8.”0”)
(10 1.0 2.0 0.0)
(11 6.0 6.0 0.0)
表 部分組碼
組 碼 |
直 線 |
圓 弧 |
8 |
層名 |
層名 |
10 |
起點(diǎn)坐標(biāo) |
圓心坐標(biāo) |
11 |
終點(diǎn)坐標(biāo) |
……… |
40 |
……… |
半徑 |
50 |
……… |
起始角度 |
51 |
……… |
終止角度 |
210 |
延伸方向 |
延伸方向 |
2 程序設(shè)計(jì)的方法
程序首先調(diào)用gettfiled()函數(shù)創(chuàng)建一個(gè)NC文件(該文件以.3B為擴(kuò)展名),然后用ssget()函數(shù)定義實(shí)體選擇集(由用戶依加工順序選取),經(jīng)解碎后成為“Line”和“Arc”兩種類型(經(jīng)研究發(fā)現(xiàn),對v12.0,圖形實(shí)體解碎到最后均為Line和Arc,如Fit擬合的pline解碎后為Arc,spline擬合的pline解碎后為line等等),因此程序的核心以line和Arc為對象。程序調(diào)入下一個(gè)實(shí)體,判斷其是line還是Arc,分流后按line或Arc的組碼提取幾何數(shù)據(jù)進(jìn)行計(jì)算,最后形成一字符串“B XX B YY B J G Z”,將這行字符添加到NC文件中去,然后再調(diào)入一個(gè)實(shí)體進(jìn)行循環(huán)計(jì)算,這樣NC文件就一行一行地增加,直到實(shí)體被編輯完畢。
對于直線,可用10和11組碼提取其起點(diǎn)和終點(diǎn)坐標(biāo),然后將原點(diǎn)換到起點(diǎn),此時(shí)XX和YY就是終點(diǎn)坐標(biāo)。令dx1和dx2分別是XX、YY的絕對值,則當(dāng)dx1>dy1時(shí),G=Gx、J=dx1,否則,G=Gy、J=dy1。對于圓弧,可用10、40、50、51組碼提取圓心、半徑、起始角度、終止角度。圓弧的問題之一是對投影長度J的計(jì)算,如圖3所示。
圓弧的J計(jì)算分成3種情況(圖3),對于①J=|Qx-Zhx|或J=|Qy-Zhy|(Q:起點(diǎn),Zh:終點(diǎn))。對于②將原點(diǎn)移到Q點(diǎn),此時(shí)J=|Qx+Zhx|或J=|Qy+Zhy|。對于③將原點(diǎn)分別移到Q1、Q2來計(jì)算Q1A’和Q2B’:Q1A’=|Qx|或|Qy|、Q2B’=
|Zhx|或|Zhy|,則J=Q1A’+Q2B’+D。
圖3 圓弧投影長度J計(jì)算(左為G=Gx時(shí),右為G=Gy時(shí))