第六章、刀具轨迹编辑
对于复杂曲面零件的数控加工来说,刀具轨迹计算完成之后,一般需要对刀具轨迹进行一定的编辑与修改。这是因为:对于很多复杂曲面零件及模具来说,为了生成刀具轨迹,往往需要对待加工表面极其约束面进行一定的延伸,并构造一些辅助曲面,这时生成的刀具轨迹一般都超出加工表面的范围,需要进行适当的裁剪和编辑;另外,曲面造型所用的原始数据在很多情况下使生成的曲面并不是很光顺,这时生成得到局轨迹可能在某些刀位点处有异常现象,比如突然出现一个尖点或不连续等现象,需要对个别刀位点进行修改;其次,早刀具轨迹计算中,采用的走刀方式经刀位验证或实际加工检验不合理,需要改变走刀方式或走刀方向;再说,生成的刀具轨迹上刀位点可能过密或过疏,需要对刀具轨迹进行一定的匀化处理,等等,所有这些都要用到刀具轨迹编辑功能。 第一节、刀具轨迹编辑系统的功能
一般来说,刀具轨迹编辑系统允许用户通过图形窗口显示和其他对话窗口对一生成的刀具轨迹进行修正或修改,同时将修改的刀具轨迹显示出来。
刀具轨迹的快速图形显示 刀具轨迹文本显示和修改 刀具轨迹的删除 刀具轨迹的拷贝 刀具轨迹的粘贴 刀具轨迹的插入 刀具轨迹的恢复 刀具轨迹的移动 刀具轨迹的延伸 刀具轨迹的修剪 刀具轨迹的转置 刀具轨迹的反向 刀具轨迹的几何变换 刀具轨迹上刀位点的匀化 刀具轨迹的编排 刀具轨迹的加载与存储
第二节、刀具轨迹编辑系统的数据结构
刀具轨迹的编辑需要将刀具轨迹中的所有数据有规则的存放在一个数据结构中,该数据结构设计是否合理,直接影响刀具轨迹的编辑。下面从CAD/CAM集成系统中的刀具轨迹编辑系统的要求出发,以西北工业大学CAD/CAM研究中心开发的交互式图形数控编程系统NPU/GNCP/SS中的刀具轨迹编辑系统为例,介绍一种基本的刀具轨迹编辑系统的数据
结构。
2.1、几个基本概念
刀具轨迹编辑系统的数据结构一般分为五个(也有的分为四个)层次进行管理,最上层为刀具轨迹层,一个完整的数控加工刀具轨迹由若干切削块构成,切削块是刀具轨迹中若干相邻切削行构成的子集,而切削行则由一个或多个切削段构成,一个切削段则由连续的刀位点构成,即:
刀具轨迹=切削块|切削行|切削段|刀位点 刀具轨迹=刀具轨迹缓冲区中的切削行集合 切削块=刀具轨迹中相邻切削行构成的子集 切削行=一个或多个切削段
切削段=切削行中同一曲面上相邻刀位点构成的子集 刀位点=刀心+刀轴矢量+摆刀平面法向矢量
2.2、基本数据结构定义
下面以C语言的格式定义以上几个基本数据结构 (1)刀位点的数据结构 typedef struct {
Ppoint3 Vvector3 Vvector3
PASTLC; PASTLA; PASTLN;
/*刀心 /*刀轴矢量 /*摆刀平面法向矢量
}CLDATA;
其中,Ppoint3和Vvector3分别为三维点的数据结构和三维矢量的数据结构,分别定义为:
typedef struct {
double double double
x; y; z;
/*点的x坐标 /*点的y坐标 /*点的z坐标
}Ppoint3; typedef struct {
double double double
x; y; z;
/*矢量在x轴上的投影分量 /*矢量在y轴上的投影分量 /*矢量在z轴上的投影分量
}Vvector3;
(2)切削行索引表的数据结构 typedef struct {
CLDATA *PASADR; Int BEGPTR; Int ENDPTR;
/*切削行刀位点基地址指针,首地址-1
Int PASLEN; /*切削行原始长度
/*切削行首点相对地址(相对于基地址) /*切削行末点相对地址(相对于基地址)
/*切削行首端外延(插值)点绝对地址指针 /*切削行末端外延(插值)点绝对地址指针
/*切削行索引表的后继链表指针
CLDATA BEGPNT; CLDATA ENDPNT;
PASINDEX PASLNK;
}PASINDEX;
(3)刀具轨迹编辑控制模块的数据结构 typedef struct {
int KPASS; /*缓冲工作区中的原始切削行数目 int NUMPASS; /*切削行索引表数目 CLDATA *KPMSG; Int KPSLEN;
/*自由刀位点缓冲区首地址指针
/*当前切削行索引表指针
PASINDEX KPASNO;
/*当前切削行刀位点数目
}Editcont;
(4)原始切削行缓冲区、当前切削行刀位点缓冲区及自由刀位点缓冲区定义 CLDATA CLDATA CLDATA
*INIBUF; /*原始切削行缓冲区 *PASBUF; /*当前切削行刀位点缓冲区 FREEBUF; /*自由刀位点缓冲区
2.3、系统数据结构的操作说明
进行刀具轨迹编辑之前,首先打开待编辑的刀具轨迹所在的刀位文件,然后根据编辑对象数据量的大小动态申请分配原始切削行缓冲区INIBUF,并将编辑对象装入原始切削行缓冲区,同时建立切削行索引表的初始状态:PASADR=INIBUF-1,PASLEN=原始切削行刀位点数目,BEGPTR=1,ENDPTR=PASLEN,BEGPNT=NULL,ENDPNT=NULL,PASLNK=指向下一个切削行索引表的首地址,依次类推,直至装完全部待编辑的刀具轨迹为止,最后一个切削行索引表的PASLNK=NULL。
切削行索引表的初始化完成之后,动态申请分配当前切削行刀位点缓冲区PASBUF[MAXBUF]及自由刀位点缓冲区FREEBUF[MAXFRE],并填写刀具轨迹编辑控制模块数据结构Editcont的有关记录。MAXBUF和MAXFRE的大小可由系统默认一个值,用户也可以根据需要进行修改。
对切削行进行编辑之前,将当前切削行(待编辑的切削行)调入当前切削行刀位点缓冲区PASBUF中,以便参与求教等算法过程,并填写刀具轨迹编辑控制模块数据结构Editcont的有关记录。
对切削行进行删除操作时,在切削行索引表中,将ENDPTR的符号变成“-”号,即表示将该切削行删除。因此要恢复被删除的切削行,只要将ENDPTR的符号变成“+”号即可。
对切削行进行裁剪操作时,在切削行索引表中,用BEGPTR,ENDPTR和BEGPNT、ENDPNT表示切削行被裁剪后的有效部分——切削段在原切削行上的映象。其中BEGPTR和ENDPTR分别指向远切削行经裁剪后剩余部分的首、末点;而BEGPNT和ENDPNT则分别指向切削行与裁剪边界面的交点(切削段的段端点)。因此,无论经过多少次裁剪,原始切削行上的点都只被引用而不改变。同一原始切削行可以被分割成多个切削段,通过指针引用。因此,裁剪后的切削行可以被恢复到原始切削行的状态。
每个切削段上只能在两端插入与边界面的交点,并用BEGPNT和ENDPNT指出其存储地址。如果经过裁剪后,原切削行被分成多个有效部分,则每出现一个新的有效部分(不包括第一个有效部分),就建立一个新的切削段索引。新的切削段与原始切削行之间通过PASLNK相链接。
裁剪过程中求交生成的交点(切削段的段端点),顺序地放在自由刀位点缓冲区中,通过指针引用。
第三节、数控加工的进刀与退刀刀具轨迹生成与编辑
对于一个CAD/CAM集成系统来说,刀具轨迹的生成与编辑往往是结合在一起的。进刀(engage)和退刀(retract)是刀具轨迹生成与编辑系统中的一个重要组成部分,用于确定刀具移动进入切削运动或退出切削运动方式。图所示为UGII CAD/CAM系统中采用的一种典型的进/退刀方式。
1、切入点(Engage point)——进刀过程中位于零件毛坯之外进入切削状态之前的某个位置;
2、初始切削点(Initial cut position)——刀具与零件表面的第一个切触点; 3、切入距离(Engage distance)——切入点与初始切削点之间的距离;
4、切入进刀矢量(Engage vector)——切入点到初始切削点之间的单位方向矢量; 5、进给速度(Feed)
接近速度(Approaching speed)——指从起刀点到切入点之间的进给速度; 切入速度(Engage speed)——指从切入点到初始切削点之间的进给速度; 正常切削速度(Cut speed)——指在一个切削段内的进给速度;
Zig-zag方式下的跨越速度(Stepover speed)——一般应小于正常切削速度; 横越速度(Traversal speed)——指抬刀横越岛屿或单向切削需要抬刀的横越速度,可以采用快速移动,但大多数情况下采用5倍左右的正常切削速度。横越时的抬刀高度可以定义,为了提高加工效率,横越抬刀高度一般略高于岛屿高度即可。刀具抬起时可以采用横越速度,但进刀时应该采用一种前面定义的进刀方式和进刀速度。退刀过程比进刀简单,而且退刀速度往往是进刀速度的若干倍。
第四节、刀具轨迹生成与编辑系统的总体结构
根据刀具轨迹生成和刀具轨迹编辑系统的功能要求,刀具轨迹编辑系统的总体结构如下图所示。