APP下载

基于Linux的图形交互线切割加工CAM软件关键技术

2010-06-27范益民赵万生

电加工与模具 2010年2期
关键词:图元代码指令

曹 琨,范益民,罗 凌,赵万生

(上海交通大学机械与动力工程学院机械系统与振动国家重点实验室,上海200240)

随着计算机和数控技术的飞速发展,CAM软件已成为企业实现高度自动化设计及加工的重要手段。据统计,我国制造类企业每年采购三维CAD/CAM软件的金额高达几十亿元,且还以每年20%的速度递增,这对国内制造企业是一个巨大的压力,也存在信息和知识产权隐患[1]。因此,深化开发应用CAD/CAM软件具有重要意义。线切割机床由于采用金属线作为加工工具,其加工对象多为直壁平面图形,最复杂的加工当属上下异形直纹面。而即使是对于上下异形的工件加工,也可通过二维的编程来实现[2]。用二维CAD/CAM软件实现线切割加工的生产设计自动化,无疑将降低企业的成本,提高产品的竞争力。

目前,国内较为常用的二维线切割CAM软件有YH型线切割软件、CAXA、WTCAM,前者只能用于DOS系统中,后两者目前也支持Windows系统,同时后两者还开发了专有的CAD模块,因此能实现较强大的图形交互CAM过程。而国内许多高校也都有针对线切割加工的计算机辅助制造系统解决方案的研究,如基于Windows操作系统,利用Visual C++6.0和OpenGL,开发了专用的空间曲面电火花线切割CAD/CAM 软件[3];基于AutoCAD平台,实现了线切割数控自动编程[4]。近年来,基于 Linux的线切割加工数控系统以其优越的安全性,图形界面的友好性,极好的稳定性以及开源性,正在赢得越来越多的开发者和厂商的青睐。随着该类型数控系统在加工制造业中的迅速发展,相信其在今后一定会迸发出更为强大的竞争力。而目前尚缺乏与之配套的较为成熟的线切割CAM软件,本文针对基于Linux的线切割数控系统,设计开发了一套图形交互线切割加工计算机辅助制造系统解决方案。

1 图形交互线切割CAM软件系统结构

本文所介绍的线切割CAM软件系统的整体结构如图1所示,主要包括二维图形数据DXF文件接口模块、CAD图形矢量化显示模块、线切割CAM模块、ISO格式数控代码输出模块和轨迹仿真模块。

图1 软件整体结构

该软件特点:

(1)标准的图形文件接采用口,自定义开发的数据类,数据操作独立且高效实用。

(2)强大的 Graphics View Framework,提供了完善的CAD图形矢量化显示和高效的图元管理模块。

(3)针对用户操作习惯设计的人机交互环境和更为优越的图元链选取及排序算法,为生成符合用户需求的数控代码提供了保证。

(4)能对复杂的零件,例如上下异形体零件进行CAM数控代码生成。

(5)针对ISO标准数控代码设计的格式化输出模块,保证了输出代码的规范性和数据精确性。

(6)界面友好、简洁,用户操作简单。

2 二维图形DXF文件接口模块

DXF是Autodesk公司开发的用于AutoCAD与其他软件之间进行数据交换的CAD数据文件格式,是一种基于矢量的ASCII文本文件。因为Auto-CAD是最流行的CAD系统,所以DXF被广泛使用,成为事实上的数据交换工业标准。

调用QFileDialog类的成员函数getOpen-FileName,用户可自定义选择所需加载的DXF文件。通过对AutoCAD二维图形DXF文件组码的解析,可获取文件中各个图元的实体信息。为了能有效地分离数据处理和图形显示,保证数据处理的高速和准确,同时方便CAM模块的设计开发,基于Qt中Model/View的思想[5],作者开发了独立的KData类,用于存储DXF文件中各图元的数据信息,并实现了多个函数以对这些数据进行分析、计算与处理。

3 CAD图形矢量化显示模块

由于线切割异形面的CAM涉及到用户对上下表面的单个图元的拾取操作,而单纯的CAD图形位图显示并不能满足软件对这一功能的需求,因此需开发 CAD图形矢量化显示模块。基于Qt的Graphics View Framework[6],作者实现了包括KGraphicView,KEntity,KEntityContainer的CAD图形矢量化显示模块。该模块基于Qt的 Model/View结构,实现了对大量图元的高效管理,同时提供了坐标系间矩阵变换、图元实体与用户点击位置间的碰撞检测等多种功能。

如图1所示,将KData对象传递给KEntity的构造函数,建立单个图元的KEntity对象,与Dennis Crain在Hit Testing Lines and Curves一文中提到的对直线和曲线的鼠标选中相比[7],KEntity类提供了更方便的碰撞检测,以实现用户对单个图元实体的鼠标点击选中。另外,在KEntity类中,作者还实现了图元实体对不同状态的响应函数。如:实体被选中时,该图元的线型和颜色都将发生改变。KEntityContainer对象用于管理之前创建的各个KEnity对象,在依次添加这些KEntity对象后,它负责控制各个图元的状态和相互位置关系。KGraphicView则是一个显示窗口部件,负责物化显示KEntity-Container中的各个图元,同时它还提供了窗口滚动条,方便用户移动图形,提供了图形放大、缩小和旋转的接口,方便用户查看大小不同的图形和观察图形细节。

4 线切割CAM模块

CAM模块的基本结构见图1,由CAM参数设置界面、人机交互环境、图元链选取及排序算法组成。

在该软件的参数设置界面,用户可设置线切割加工的加工方式、电极丝切入方式、切入点和切出点的坐标等(图2)。

图2 参数设置界面

基于多线程技术,作者建立了CAM的人机交互环境,由二维线切割加工和上下异形体线切割加工两部分组成。它能使程序在机器的提示和用户的反馈中获得符合用户需求的数控插补轨迹和数控代码,该环境的工作流程如图3所示。

图3 人机交互环境

由于在使用AutoCAD之类的CAD软件进行机械制图时,其DXF文件中保存的图元数据信息都是按设计人员的制图顺序排列的,因此如果直接由DXF文件生成数控ISO代码,可能会生成序列混乱的轨迹和数控代码。图4是按此种方法生成的轨迹与真实轨迹之间的比较,其中图4a中的轨迹为真实准确的加工轨迹,图4b中的轨迹为直接由DXF文件生成的轨迹,很显然,它在制图时间连续但空间不连续的两段图元之间分别生成了3条不符合用户要求的轨迹。

为避免此现象的出现,基于自定义的KData类,作者设计了该软件的CAM算法,包括图元链选取算法及图元排序算法(图5)。其中data为用户选中的第一段图元的数据对象,dataVector为所有图元数据对象的集合,sortedData为经过排序选择后的图元数据对象的集合。通过遍历dataVector中的图元数据对象,并和前一段图元的数据对象进行比较,可获取首尾相连的各段图元数据对象。通过对相邻的两个图元数据对象的位置关系和用户拾取的切割方向的判断,可将这些数据对象进行排序并最终获得所需数据对象链表。bool型isEqual(a,b)函数用于比较两个data对象是否等同,如等同就返回true,否则返回false。bool型 isNext(a,b)函数用于比较两个data对象是否相邻,如果对象b为对象a紧邻的下一个图元对象就返回true,否则返回false。

5 ISO数控代码输出及轨迹仿真模块

依据之前CAM过程生成的sortedData,同时考虑各段图元起始点的位置关系,作者利用QString[5]提供的格式化字符串函数生成了各段图元的数控ISO代码,并通过QFile[5]将各段代码输出到.iso文件中。该文件包含了多种基本线切割准备功能指令:“G00 X Y”直线快速进给指令,“G01 X Y”直线插补指令,“G02 X Y I J”顺时针圆弧插补指令,“G03 X Y I J”逆时针圆弧插补指令,在此基础上,作者扩展了多种4轴加工指令:“G01 X Y;G01 U V”4轴直线插补指令,“G02 X Y I J;G02 U V I J”4轴顺时针圆弧插补指令,“G03 X Y I J;G03 U V I J”4轴逆时针圆弧插补指令,“G01 X Y;G02 U V I J” 、“G01 X Y;G03 U V I J”4 轴上下异形插补指令等。另外,还可扩展多种辅助功能指令。如图6为对一上下异形体的CAM,其中,从原点到方形右下角的直线部分为切入切出轨迹,圆弧部分为上平面加工轨迹,方形部分为下平面加工轨迹。

图6 数控ISO代码格式化输出及加工轨迹

为了方便用户检查最终生成的数控代码是否准确,作者开发了数控代码的轨迹仿真模块。通过对前面生成的数控加工代码的解释,计算机根据各段加工代码生成相应轨迹,并依次在图形窗口中显示(图 7)。

图7 数控代码的轨迹仿真

6 结束语

本文立足于对国内线切割数控系统发展的展望,以性能优良、价格低廉为目标,开发了一套基于Linux操作系统的图形交互线切割CAM软件。由于该软件开发了基于通用二维CAD图形交换的DXF文件接口模块,所以该软件的使用并不受限于用户所使用的CAD软件,这样可增强该软件的独立性和可移植性。

[1]国产三维CAD/CAM 技术研讨会在京举行——开发核心基础软件,支持制造业创新发展[J].中国制造业信息化,2009(5):35-35.

[2]郭艳玲,赵万生.用二维编程实现线切割机床的三维型面加工[J].大连理工大学学报,2001,41(3):325-329.

[3]任福君,姜永成.空间曲面电火花线切割CAD/CAM 系统[J].机械工程学报,2007,43(5):214-218.

[4]章勇,谷安,项甫根.基于DXF文件的低速走丝线切割加工自动编程系统的开发[J].电加工与模具,2007(5):9-11.

[5]Blanchette J,Summerfield M.C++GUI programming with Qt4[M].Prentice Hall,2006.

[6]Troll Tech.Qt Reference Documentation:The Graphics View Framework.2007.

[7]Crain D.Hit testing lines and curves.http://msdn.microsoft.com/en-us/library/ms969920.aspx.1994.02.

猜你喜欢

图元代码指令
学术出版物插图的编排要求(一):图注
联锁表自动生成软件的设计与实现
ARINC661显控指令快速验证方法
创世代码
创世代码
创世代码
创世代码
杀毒软件中指令虚拟机的脆弱性分析
基于Qt绘图系统的图形应用优化研究与实现
中断与跳转操作对指令串的影响