基于ObjectARX 的切割轨迹自动编程系统的设计与实现

2014-06-29 10:17刘德刚李佳星赵静赟
组合机床与自动化加工技术 2014年8期
关键词:图层轮廓代码

刘德刚,李佳星,赵静赟

(中国地质大学(武汉)机械与电子信息学院,武汉 430074)

0 引言

目前的切割轨迹自动生成系统开发模式主要有参数图库、专用系统以及基于CAD 的二次开发系统等。参数化图库利用通用编程语言实现常用基本切割图形的参数化定制[3]。此种方式开发工作量小,系统使用简单,但是图库内容有限,不能满足实际复杂需求。专用系统也采用通用编程语言开发,实现了图形编辑、套料以及G 代码生成等功能。此种方式开发工作量大,开发难度高,系统使用复杂,价格高,代表软件为Fast-CAM[4-5]。基于CAD 的二次开发系统则可以综合前两种方式,既能使用CAD 原有的强大图形设计编辑功能,又可以降低开发及使用难度。

AutoCAD 应用广泛,提供了面向对象的开发库ObjectARX[6]。基于ObjectARX 已成功开发出了众多CAM 系统[7-10]。本系统也基于ObjectARX 开发,论文对系统的设计与实现进行阐述。

1 系统架构设计

自动编程系统的最终用户为工厂的CAM 设计人员或一线工人,他们熟悉切割业务,但计算机知识往往掌握得较少。针对这种情况,系统的主设计目标为“傻瓜化”,将复杂的处理逻辑尽量封装在算法内部,用户只需几个简单的操作就可以完成G 代码的生成,提高系统的实用性。

自动编程系统的动态运行是典型的数据流处理过程。切割图形作为原始数据输入,此图形经过多个处理环节,每个环节都对输入数据进行专业加工,输出加工后的数据,最终输出为G 代码。系统基本数据流图如图1 所示。

图1 基本数据流图

原始设计图可以利用AutoCAD 强大的设计功能绘制,经过图形规范化处理后,加入切割工艺相关描述信息。工艺编译根据用户输入的工艺参数,将规范后的图形进行编译,包括追踪封闭轮廓以及进行割缝补偿等。编译后的图形可以进行自动或手动排序。有了排序信息,系统就可以遍历切割图形,将其输出为加工G 代码。数据处理流程贯彻了“傻瓜化”的设计目标,步骤简单。

基于数据流图的设计模式,流程节点可以设计为单独的数据处理模块,实现输入—处理—输出的算法模式。各模块最终注册为AutoCAD 中的新命令组,通过键入命令或者点击菜单来调用。系统的功能架构设计如图2 所示。

图2 系统功能架构

工艺编译中包含多个子模块,用来实现多个处理逻辑。基于“傻瓜化”的设计目标,最终用户只需要使用“工艺编译”一个命令,工艺编译会自动调用子模块的处理逻辑完成图形的全部编译工作。

由于专业培养目标的不同,对于非计算机专业而言,其在Access数据库方面的教学呈现一种不够科学严谨的特点。主要体现为:

系统的设计采用面向对象技术,各个模块都利用类来实现。还设计了CBaseARX 基础类,该类封装了ObjectARX 的复杂接口,用简单的C++函数提供基本的CAD 数据操作功能,如标注、直线、多段线、图层的添加、删除、修改等基本函数,以及改变多段线方向、判断多段线的顺逆、轮廓缩放等复杂函数。上层模块需要时直接调用此类中的函数,从而简化了上层模块的复杂度,实现了代码重用。

2 主要模块设计

2.1 专业图层生成

AutoCAD 具有强大的图形设计功能,但设计出的图形并没有包含切割工艺相关的信息,比如一条多段线是属于外轮廓还是内轮廓,一条直线是空移线还是引入线等。普通的AutoCAD 图形中增加了这些专业切割信息后就变成了规范化的切割图形。

切割附属信息可以利用图元的扩展属性进行描述,但这种方式操作复杂,可视化效果差,当图元进行合并、打断等处理后,需要重新设置,所以不是一种好的方案。

经过研究,利用AutoCAD 的图层属性来完成切割信息描述。相同类型的图元放在同一层,每个图层设置不同的颜色,用户通过颜色就能直接判断图元切割属性,内部算法也可以根据图层进行查找与计算。主要的切割图层如表1 所示。

表1 主要切割用图层

前五个层与切割轮廓相关,描述了内外、顺逆、是否封闭等信息。切割顺序号层中放置切割顺序标注数字。

基于“傻瓜化”的设计目标,打开或者新建图形时,插件自动创建切割专用图层,不需要用户输入命令或者点击菜单。重载AcRxArxApp 类的On_kLoad-DwgMsg 函数,在其中调用切割图层创建函数,即可实现此效果。

2.2 工艺编译

工艺编译是系统的核心模块,内部实现了多个子处理功能,算法基本流程图如图3 所示。

图3 工艺编译算法基本流程图

工艺编译首先进行图形数据预处理,包括统一转换图形为世界坐标系,将图形左下角平移到原点,转换椭圆为多段线等。因为G 代码中只支持直线和圆弧,椭圆须转换为多段线。算法实现原理为利用Object-ARX 设置为折线绘制模式,自动重画椭圆,画出的椭圆即为多短线,然后删除原始椭圆。样条曲线可以利用AutoCAD Express Tools 中的flatten 命令转换为多段线。

轮廓追踪算法取出图层信息,以此对五个轮廓相关层进行处理。首先是将轮廓层中的图元自动转换为多段线,通过ObjectARX 获取图层范围,自动执行pedit 命令,自动设置转换参数,完成多段线的转换。多段线转换完成后,计算出多段线的顺逆,再根据所属图层判断是否需要进行多段线方向反转。由于系统可以自动追踪出多段线并调整方向,用户绘图的时候就没有额外限制,可以按照自己的习惯进行设计。封闭轮廓中的多段线如果不能闭合,系统会提示错误信息。

由于设计原因或者一些转换软件的算法原因,切割图形中有时存在过多点坐标,导致切割效率严重下降,甚至不能正常切割。删除多余点算法根据用户设置的允许误差,对轮廓坐标进行判断,删除多余的点坐标。

由于割炬存在宽度,需要对轮廓进行补偿,根据补偿值放大外轮廓,缩小内轮廓。补偿算法通过Object-ARX 调用AutoCAD 所提供的offset 函数,通过图层取出顺逆属性,计算出偏移的正确参数,完成偏移操作。

引入线生成算法对依次对轮廓层进行遍历,得到多段线坐标,根据引入线长度参数,自动生成引入线。引入线的终点坐标与轮廓的首点坐标重合,通过坐标位置建立拓扑关系。不封闭轮廓的引入线可以是轮廓本身的一部分或者额外添加引入线,由用户在切割工艺参数中设置。

2.3 排序与G 代码输出

自动排序功能未集成在工艺编译模块中,是为了用户可以调整引入线,比如可以改变引入线的引入位置或者使用圆弧引入线等。

引入线符合要求后,可以利用系统提供的自动排序算法自动编排切割顺序。算法的基本原则是先切割内轮廓,再切割外轮廓,切割的总路径最短。系统采用LK 算法[11]进行最优路径的寻找。切割顺序以数字标注形式放置于切割顺序号图层。标注的内容为轮廓切割的顺序,标注的坐标与引入线的坐标开始坐标重合,通过坐标建立顺序标注与引入线之间的拓扑关系。

系统还提供了手动排序功能,根据用户点击轮廓的向后顺序进行排序。排序完成后,还可以进行排序号的调整。利用MFC 开发图形界面对话框,用户设置需要调整的序号。

排序完成后,就可以遍历图形输出G 代码。通过图层属性以及坐标拓扑属性可以完成轮廓的寻找,空移线可以自动生成。G 代码输出算法的基本流程图如图4 所示。

图4 G 代码输出算法基本流程图

3 系统实现与运行情况

本插件系统支持AutoCAD2004 至AutoCAD2014各个版本,提供中英两种语言版本。由于ObjectARX的版本较多,与开发环境关系密切,在支持不同版本的AutoCAD 时,ObjectARX 的版本与开发平台都不同,发布前需要在多种环境下编译。以支持AutoCAD2010的情况为例,ObjectARX 版本为ObjectARX2010,开发平台为Visual Studio.NET 2008 SP1,开发语言为Visual C++,使用MFC 进行图形界面开发。

插件安装后,在AutoCAD 中增加了“切割机”菜单,点击菜单即可以实现切割轨迹自动编程功能,如图5 所示。

图5 自动编程系统运行界面

本插件系统与切割机厂商合作,已投入实际运行多年。系统在众多用户处已成功生成了上万个的G代码文件。系统运行稳定,使用简单,达到了“傻瓜化”的设计目标,算法的稳定性与正确性也得到了验证。

4 结束语

本文利用面向对象技术,基于ObjectARX 二次开发平台设计开发了适用于数控火焰/等离子切割机的切割轨迹自动编程系统。该系统已成功投入实际运行。系统遵循“傻瓜化”的设计目标,简单易用,符合现场工人需求。开发经验表明,基于ObjectARX 进行二次开发,能够充分利用AutoCAD 已有的强大功能,快速开发出领域专用功能,是CAM 开发中的一种重要开发方式。本文对类似系统的设计开发具有参考意义。未来还可以将参数化典型图库的功能集成进本系统中,进一步增强系统的实用性。

[1]杨素嫒,潘文方. 国内数控切割技术的研究与应用现状[J]. 金属加工(热加工),2010(8):37 -40.

[2]张维官. 关注现代切割设备核心部件[J]. 金属加工(热加工),2012(6):13 -19.

[3]甘明,袁正萍,陈小亮. 数控切割机系统加工代码图形库的开发[J]. 制造技术与机床,2010(2):85 -87.

[4]杨帆,娄俊超. FastCAM 实际生产中的应用[J]. 金属加工(热加工),2011(6):18 -19.

[5]陈永. 火焰切割机编程工艺分析与处理[J]. 金属加工(热加工),2011(4):33 -34.

[6]王文波. AutoCAD2010 二次开发实例教程(ObjectARX)[M]. 北京:机械工业出版社,2013.

[7]黄洁琼,袁群. 基于AutoCAD 的冲裁零件图形的自动输入与识别[J]. 机械设计与制造,2012(2):82 -84.

[8]董克权,黄鹏,刘超英,等. 基于ObjectARX 的罗茨泵转子刨刀轨迹自动生成[J]. 现代制造工程,2011(8):71-74.

[9]刘辉,谈沛,贺俊雄. 基于AutoCAD 的数控自动编程系统的研制[J]. 组合机床与自动化加工技术,2008(10):68-70.

[10]陈光霞,曾晓雁. 基于AutoCAD 激光切割数控系统的开发[J]. 机械设计与制造,2008(4):151 -153.

[11]王东,李娅,吴臣,等. 提高链式Lin-Kernighan 算法性能的一种新策略[J]. 计算机应用,2007(2):425 -427.

猜你喜欢
图层轮廓代码
为《飞舞的空竹龙》加动感
OPENCV轮廓识别研究与实践
基于实时轮廓误差估算的数控系统轮廓控制
创世代码
创世代码
创世代码
创世代码
解密照片合成利器图层混合模式
高速公路主动发光轮廓标应用方案设计探讨
用Photoshop图层技术制作精美邮票