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