1 原理
1.1 3B指令代码的格式
格式为:B XY B YY B J G Z
其中,B是分隔符。XY和YY:①加工直线时,是直线的终点坐标(原点处于直线的起点);②加工圆弧时,是其起点坐标(原点处于圆弧的圆心)。J和G:G是计数方向,有X、Y两个方向,分别是Gx和Gy,如图1所示,对于直线,当线处在阴影区域时,G取Gy,否则G取Gx;若圆孤的终点处于阴影区,G取Gx,否则取Gy。J则是加工轨迹(直线或圆弧)在计数方向上的投影线长度或投影长度之和; Z是加工指令,共有12种(如图2)。
1.2 Auto CAD实体选择集及实体组码
在Auto CAD中,每个图形元素都可做为独立的实体来处理,还可以用ssget()函数来构造需要的实体选择集。每个实体的数据,都可查找其实体组码来获得。每个实体都有一个实体名,用组码-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()函数创建一个NC文件(该文件以.3B为扩展名),然后用ssget()函数定义实体选择集(由用户依加工顺序选取),经解碎后成为“Line”和“Arc”两种类型(经研究发现,对v12.0,图形实体解碎到最后均为Line和Arc,如Fit拟合的pline解碎后为Arc,spline拟合的pline解碎后为line等等),因此程序的核心以line和Arc为对象。程序调入下一个实体,判断其是line还是Arc,分流后按line或Arc的组码提取几何数据进行计算,最后形成一字符串“B XX B YY B J G Z”,将这行字符添加到NC文件中去,然后再调入一个实体进行循环计算,这样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时)