4 后置处理
后置处理是一个文本编辑处理过程,其作用是将提取的图形信息根据指定数控机床的特点及规定的格式进行分析、判断和处理,转化为机床能够识别的NC代码并输出。图5为后置处理流程图。
图5 后置处理流程图
4.1 圆的直线拟合插补算法
圆方程的一般表示形式:
x2+y2=r2
根据拟合插补精度的要求,给定拟合误差δ=0.001,而圆经过n等分后的拟合误差δ'为
先令n=2,判断δ和δ'的关系,如果δ≥δ',满足误差要求,则不用细分;如果δ<δ',不满足拟合误差要求,则对圆进一步细分,直到满足δ≥δ'的误差要求。当n等分满足误差要求,根据等分角度可依次求出拟合线条的端点。
由于图形数据多少具有一定的不确定性,因此,在对图形数据中的特征点提取时采用动态链表的存储方式,这样每增加一组数据只需要相应申请一个链表节点就可以,而且在处理的过程中,链表也比数组更为方便一些,不需要移动数据的存储地址、改变相应指针的单元的指向就行。
4.2 优化加工路径
由于DXF文件中图形元素是以设计人员绘制图元先后顺序为依据记录的,使得对DXF解析获得的各图元信息在Clist链表中成为无序性排列,如果对得到的数据不加处理,依次将其一个个地存入链表,导致按此顺序转化进行的绘图过程中图元路径的随机性和无序性,使得工作过程中的无效行程大大增加。在数控加工的时候可能会增加很多不必要的起落刀次数。为了优化加工路径,减少起落刀次数,这里对读取的图元数据采用插入排序的设计思想。
首先,定义两个结构体类型的指针变量P1,P2,并将插入节点定义为P,且为结构体变量;
然后,令P1指向头指针,P1→next指向P2这个节点,并判断P1→next是否是NULL,如果是,结束插入排序。否则,转入执行下步操作;
最后,从链表头开始查找,然后分别比较P→x1、P→y1与P1→x2、P1→y2之间的关系,或者分别比较P→x2、P→y2与P2→x1、P2→y1之间的关系。如果相等,则将节点P插入节点P1、P2之间,如果不等,则P1→next继续比较,直到P1→next=NULL。如果没有找到起终点坐标相等的条件,则将要插入的线段数据链接在链表尾端。
5 运行效果
图6 AutocAD中绘制的图形文件
为考察该程序运行的效果是否达到预期要求,首先在AutoCAD环境下绘制如图6所示的窗格图,然后将其保存为DXF格式文件。运行该应用程序并读取AutoCAD所绘制的DXF格式图形,VC++程序窗口将NC代码加工雕刻轨迹模拟出来,图7为该程序雕刻轨迹仿真图。
图7 VC++窗口雕刻图形轨迹仿真图
同时在文件夹中生成一个nc_code.gc的文件,该文件为文本文件,通过记事本或者文本处理软件均可以打开,可以查看生成的NC代码,图8为上例生成的部分代码。
图8 生成的部分NC代码
6 结论
文中针对数控加工过程中存在的实际问题,以数控加工过程中常见的DXF文件为基础,通过读取DXF文件中直线和圆的数据信息,并对图形文件进行具体分析,然后采用小段直线拟合曲线的方式,对拟合点数据采用比较插入排序的优化算法,并将生成的数控代码送入数控机床进行加工。通过比较发现,此优化算法解决了雕刻过程中起落刀次数过于频繁、雕刻过程随机性比较强的问题,有效提高了加工效率。
(审核编辑: 智汇小新)