AutoCAD环境下数控编程数据的重构
2015-07-01杨晓龙嵇宁张金龙贺健琪刘晓婷
杨晓龙,嵇宁,张金龙,贺健琪,刘晓婷
(西安航空学院 a. 机械学院, b. 航空工程系,陕西 西安 710077)
AutoCAD环境下数控编程数据的重构
杨晓龙a,嵇宁b,张金龙a,贺健琪a,刘晓婷a
(西安航空学院 a. 机械学院, b. 航空工程系,陕西 西安 710077)
介绍了使用AutoLISP语言编程,实现数控加工过程中对象排序和数据重构的方法。通过对图元对象信息的分析,论述了该方法的原理和实现流程,给出了应用实例以及数据重构后的结果。采用AutoLISP语言进行二次开发,方便了技术人员在数控编程中直接得到所需要的数据,提高了数控编程的效率。
数控加工; AutoCAD;对象属性;数据重构
0 引言
对AutoCAD软件进行二次开发,实现数控加工的自动编程,这不仅能充分利用现有的工程图[1],而且还能够满足企业对数控编程系统具有高效、廉价性能的需求[2]。根据AutoCAD软件和数控加工系统对零件几何信息描述方式的不同,所以提出了在AutoCAD环境下利用AutoLISP语言完成零件在数控加工时所需编程数据的重构方法,即由技术人员从编程原点出发,按照加工路线顺序,依次选择待走刀零件的轮廓,通过读取加工对象的属性信息,经过相关数学计算和数据排序处理,得到数控加工编程所需要的几何数据。
1 图元信息分析
在AutoCAD中所绘制和编辑的每一个图元对象(如LINE,CIRCLE,ARC,TEXT,BLOCK,POLYLINE,DIMENSION……)都有其专属的属性列表,这包括:图元名、对象类别、处理码、子类别、模型空间、图层名称等。例如,通过调用相关的LISP函数,提取图形上的某个圆弧,得到如下的属性列表:
((-1. <图元名: 7ef4fd70>) (0.“ARC”) (330.<图元名: 7ef4fd08>) (5.“2E”) (100.“AcDbEntity”) (67.0) (410.“Model”)
(8.“0”) (100.“AcDbCircle”)(10 225.0 160.0 0.0) (40.25.0) (210 0.0 0.0 1.0) (100.“AcDbArc”) (50.0.0) (51.2.2143))
该表中与自动编程有关的信息是:(……(0.“ARC”)……(10 225.0 160.0 0.0) (40.25.0)……(50. 0.0) (51.2.2143))。其中,群码0对应“对象类别”,这里指圆弧;群码10对应“圆心坐标”,后面的数字描述其具体位置;群码40对应“圆弧半径”,后面的数字代表半径大小;群码50对应“圆弧起点角度”,后面的数字为具体值;群码51对应“圆弧终点角度”,后面的数字为具体值。
AutoLISP语言是AutoCAD软件的二次开发工具之一,内嵌于其中,具有良好的编辑环境和程序调试方便等特点,操作人员利用它二次开发,不但能较容易地识别图元对象,而且还满足工程技术人员数控现场编程的需求[3]。通过上面的分析,调用相关LISP函数可以清除掉诸如图元对象中的图元名、处理码、子类别、模型空间、图层等属性信息,保留对象类别信息和相关几何信息。
因为数控系统一般都具有直线、圆弧插补的功能,在数控机床上加工的零件轮廓都可看成是由直线、圆弧等线条构成的[4]。数控加工图形轨迹所需要的属性信息如表1所示。
表1 数控加工所需的图元属性信息
2 程序设计
由于用户不是按照加工对象的顺序绘制和设计零件,所以在数控编程时不但需对加工的图元对象进行重新排序,而且还要对加工所需的起点和终点进行处理(图元对象属性点中的起点和终点不一定是对象在实际加工中所需的起点和终点),以满足加工顺序的要求。但完全通过软件进行如上所述的自动判别操作是不容易的,此时需人工干预。
方法如下:首先,用户设置编程原点(通过自定义UCS坐标原点到加工起始对象的某个端点上),这个编程原点实际上就是对刀点,目的是为了编程方便和减少加工误差,该点通常选在工件上容易找正且便于检查的位置上;然后,用户从加工起始对象(编程原点必须在其端点上)出发进行选择,按加工顺序,依次选择其他要加工的图形单元;每当选择有效的加工对象时,程序会同步处理所选对象的属性信息,并将对象类别信息和处理后的几何数据按加工路线表中对象结构的定义格式逐条写入到该文件中去,同时更改所选加工对象的颜色(在屏幕上直接显示出来,方便技术人员的操作);当所有的加工对象选择完毕后,程序就生成了一个加工顺序路线表的文件,使数控加工数据的有序性得到了保证。基于上述分析,用AutoLISP语言编写程序,流程如图1所示,其中,当前节点的作用是保证加工对象的首尾连接。
图1 程序流程图
在加工顺序路线表文件中,所有加工对象的排序表示为:(entity_1,entity_2,…,entity_i),其中entity_i(i=1,2,…,n)是每个加工对象所需的信息表,其具体结构如下:
直线:(“LINE”( start_x start_y end_x end_y))
逆时针圆弧:(“ARC”( start_x start_y end_x end_y) (center_x center_y) r)
顺时针圆弧:(“NARC”( start_x start_y end_x end_y) (center_x center_y) r)
其中,start_x和start_y、end_x和end_y分别是对象在实际加工中所需的起点坐标和终点坐标;center_x和center_y是圆弧圆心坐标;r是圆弧的半径。
在编写程序中,主要用到的LISP功能函数诸如:setq,entsel,entget,entdel,assoc,entmod,cdr,car,cadr,subst,cons,progn,open等函数的具体用法详见文献[5],文中就不再详述。
3 数据处理
数据处理,是根据所选的图元对象,从其属性的对应群码中读取其群码值,并经过数学运算得到加工所需的数据,以便于后续NC代码的自动生成。对于直线,可直接获得其属性点中的端点坐标列表;对于圆弧,可直接获得其属性中的圆心坐标列表和半径以及起始角和终止角,但其端点坐标列表需经过相关的计算获得。由于在AutoCAD中圆弧是按逆时针方向生成的,所以当圆弧属性点中的起点和当前节点重合,则该圆弧按逆时针方向加工;当圆弧属性点中的终点和当前节点重合,则该圆弧按顺时针方向加工,此时标记“NARC”信息,对调起终点的值,这样就为NC代码的自动生成提供顺时针圆弧加工或逆时针圆弧加工的信息。对于多段线,可以先将其进行分解,然后按直线或圆弧进行数据处理。
部分源程序如下所示:
( progn
( setq startpt (cdr ( assoc 10 en_data))) ;读取直线起点坐标列表
( setqendpt (cdr ( assoc 11 en_data))) ;读取直线终点坐标列表
)
)
( if ( = style “ARC”);圆弧属性点的数据处理
试验地设在黑龙江省佳木斯市郊区莲江口镇莲花泡,试验地面积666m2,土质为黑壤土。试验田平整,排灌方便,管理水平较高,试验地未施用任何其他药剂。
( progn
( setqcenter ( cdr ( assoc 10 en_data))) ;读取圆弧圆心坐标列表
( setqr ( cdr ( assoc 40 en_data))) ;读取圆弧半径
( setq startdeg ( cdr ( assoc 50 en_data))) ;读取圆弧起点角度
( setq enddeg ( cdr ( assoc 51 en_data))) ;读取圆弧终点角度
;生成圆弧起点、终点坐标列表
( setq startpt ( list ( + (car center) (* r (cos startdeg))) ( + (cadr center) (* r (sin startdeg))) 0.0))
( setq endpt ( list ( + ( car center) (* r (cos enddeg))) ( + (cadr center) (* r (sin enddeg))) 0.0))
)
;定义加工所需的起点和终点,其中point是当前节点
(cond (( equal point startpt)
( progn
( setq start_x ( car point))
( setq start_y ( cadr point))
( setq end_x ( car endpt))
( setq end_y ( cadr endpt))
))
(( equal point endpt)
( progn
( setq start_x ( car point))
( setq start_y ( cadr point))
( setq end_x ( car startpt))
( setq end_y ( cadr startpt))
(if ( = style “ARC”)(setq style “NARC”));标识该圆弧为顺时针加工的圆弧
))
)
4 应用实例
如图2所示,该图形轮廓形状由7条直线和3段圆弧组成,若将O点定义为编程原点(即X=0,Y=0),以OA线段为起始对象,依次选择完其他的对象,则得到加工路线表文件中的内容是:
((“LINE”(0.0 0.0 0.0 20.0)) (“LINE”(0.0 20.0 25.9808 65.0)) (“NARC”(25.9808 65.0 39.0503 68.9754)(31.6410 60.0) 10) (“LINE”(39.0503 68.9754 75.5907 51.0246)) (“ARC”(75.5907 51.0246 90.0 60.0)(80.0 60.0) 10) (“LINE”(90.0 60.0 90.0 75.0)) (“NARC”(90.0 75.0 140.0 55.0)(120.0 55.0) 20) (“LINE”(140.0 55.0 140.0 0.0)) (“LINE”(140.0 0.0 0.0 0.0)))
从该表中可看出所有对象是按照加工顺序排列且首尾相连,同时对圆弧的加工顺序信息进行了区分,即“ARC”是按照逆时针加工,“NARC”是按照顺时针方向加工,那么对于下一步的数控自动编程也就方便的多了。
图2 待加工的某零件轮廓
5 结语
程序解决了在数控编程过程中加工对象的数据处理和重构等问题,相对于文献[6]方法,采用AutoLISP语言进行开发,方便了用户的操作,即在绘制出零件图后运行该程序可直接得到数控自动编程所需的加工数据,数值全部由计算机完成,降低了出错概率,为从AutoCAD图形直接生成NC程序奠定了基础。
[1] 杨晓龙,晁晓菲. 利用二维工程图重建三维实体模型[J]. 铸造技术,2011,(7):1034.
[2]卜波. 经济型图形数控编程系统的开发[J]. 制造业自动化,2009,(12):149-151.
[3] 姚壮,马跃,张富彦. 一种新的数控现场自动编程方法[J]. 小型微型计算机系统,2011,(1):61-65.
[4] 李跃武. 二维轮廓数控编程节点计算CAD法[J]. 现代制造工程,2005,(6):22-23.
[5] 吴永进,林美樱. AutoCAD完全应用指南[M ]. 北京:科学出版社, 2011.
[6] 吴胜强,赵晓东,蒲筠果. 利用CAD/CAM软件确定数控编程中未知点的坐标[J]. 工程图学学报,2010,(3):197-199.
Data Reconstruction of Numerical Control Programming with AutoCAD
YANG Xiaolonga, JI Ningb,ZHANG Jinlonga,HE Jianqia,LIU Xiaotinga
(a. School of Mechanical Engineering, b. School of AeronauticalEngineering, Xi’an Aeronautical University, Xi’an 710077, China)
This paper presents the method to solve the problems of objects sorting and data reconstruction during the NC machining process by AutoLISP programming, describes the principle and programming flow by the information analysis of graphic element and give out the application example as well as the results. AutoLISP language is used to do the secondary development. This makes getting the date for NC-programming convenient for the technologists. so that its efficiency is improved greatly.
NC-machining; autoCAD; object properties; reconstruction of data
西安航空学院2012 年科学研究项目(12XP102)
杨晓龙(1976-),男,陕西咸阳人,讲师,硕士,主要研究方向:CAD/CAM、创新设计。
TH164
A
1671-5276(2015)05-0113-03
2014-03-04