张万里, 王金娥
(苏州大学机电工程学院,江苏 苏州 215021)
数控自动编程系统是CAD/CAPP/CAM集成系统的重要组成部分,一般的大型软件如Pro/E、UG等都集成CAM,但这类软件都比较昂贵,且都基于零件三维实体的特征识别技术进行自动编程。对于数控车床编程而言,二维零件图应用广泛,因此作者将二维零件图的特征识别技术和数控自动编程技术结合起来,研究了实体打断与重构、外轮廓搜索、特征识别、特征重构、自动编程术等技术,实现了CAD、CAM的集成。
零件图主要由直线、圆弧、椭圆弧、多段线等实体构成。由于轴类零件的对称性,只需要获取半轮廓即可。这些实体对于半轮廓来说,可分为3类:整个实体属于半轮廓,整个实体都不属于半轮廓和实体部分属于半轮廓[1]。例如,在图1中,需要搜索的是由弧AB、线段BC,…,线段MN依次构成的外轮廓。则线段BC、DE等属于第1类,线段GO、IF属于第2类,线段DP、弧BR属于第3类。对于第3类实体,半轮廓搜索时需要将一部分实体从整体中分离出来,所以需要进行实体的打断与重构处理。例如,要获取图1中的弧AB,所以要将弧BR在交点A处打断,重构为弧RA和弧AB。
图1 半轮廓信息分
本文基于ObjectARX选择集操作,将所有实体放入一个选择集中,取出一个实体与其他所有实体相交,求出交点后,按照一定的顺序重排,组成一个节点集,依次重绘出新创建的各实体。图1中,线段DP的节点为D、P、C、Q、R,然后将各节点按照Y坐标从大到小排列,即D、C、R、Q、P,最后依次创建出新的线段DC、CR、RQ、QP。若待打断的线段是水平或倾斜的,则可以将各节点X坐标按照一定顺序重排。图1中圆弧BR的节点为B、A、R,然后依次求出该圆弧圆心与各节点组成的直线与X轴正方向的夹角,然后运用下文提到的逆时钟最小夹角的方法,按照夹角从小到大顺序排列,即R、A、B,最后依次重构出弧RA、弧AB。对于其他实体如椭圆弧、多段线等都有类似的处理方法。通用的流程框图如图2所示。
图2 实体打断与重构通用流程图
将实体打断与重构之后,得到一个新的实体选择集。确定搜索半轮廓的起始点和起始实体,运用改进的逆时钟最小夹角法[2],就可以搜索出零件图的半轮廓。
如图3所示,5个实体相交于点O,以O为圆心,0.5为半径作一个小圆,该圆与各实体的交点分别为A、B、C、D、E(若为曲线,则求出小圆与该曲线切线的交点)。求以点O和各交点所构成的线段与X轴正方向的夹角。确定一个起始实体,其它实体为待搜索的实体。求出起始实体与其它所有实体的逆时钟方向的夹角,比较各夹角的大小,最小夹角所对应的实体就是待搜索的外轮廓。ObjectARX中只能求出线段与X轴正方向的夹角,并不能直接求出两线段的夹角。由逆时钟最小夹角法搜索外轮廓过程为:1)用360°减去起始角得到一个差角;2)将各夹角加上差角,得到一组新的角度;3)若新角度大于360°,则减去360°;若为360°,则为一个很大的值;4)比较各新角度的大小,最小角所对应的实体即为待搜索的外轮廓。
例如,在图3中,若夹角为210°的实体为起始实体,差角为150°,则夹角为270°所对应的实体是待搜索的外轮廓。表1列出了逆时针最小夹角法的计算结果。
图3 逆时钟最小夹角法
表1 逆时钟最小夹角法计算结果(单位,°)
从表 1中的最后一行可看出,最小角度为70°,即原夹角为 270°所对应的实体是待搜索的外轮廓。根据以上分析,可以编写一个驱动程序,用来搜索一个半轮廓实体。
在打断后的选择集中,确定搜索起点和起始实体之后,调用半轮廓搜索驱动函数,找到下一个轮廓,重新确定起始点和起始实体继续搜索下一个轮廓,直到轮廓的起始点和原起始点的Y坐标相等时,停止搜索,具体流程图如图4所示。
根据轴类零件的加工特点,外轮廓的特征分为主特征和辅助特征[3]。主特征包括左右端面、轴肩、圆柱面外圆、圆锥外圆、圆弧外圆、螺纹轴段等。辅助特征包括:右倾倒角、退刀槽、倒圆角、左倾倒角等。由于倒圆角和左倾倒角可直接进行外轮廓的粗加工,所以将它们视为主特征。
粗加工的时候,根据半轮廓先加工主特征,若得到的外轮廓中有辅助特征,则不能直接进行粗加工,由于螺纹段的螺距和导程等数据信息并不能从外轮廓中获得,所以要对外轮廓进行主特征提取和辅助特征的重构。
首先将构成半轮廓的各实体分为竖直直线、水平直线、左倾斜直线、右倾斜直线、顺圆弧、逆圆弧、椭圆弧等,并进行类型编码。然后将各实体所包含的特征进行分类,并进行特征编码。如类型编码为0的水平直线包含的特征为:圆柱右端面、圆柱左端面、轴肩、凹槽左线、凹槽右线等,特征编码依次为 0、1、2、3、4。具体分类如表2所示,其中T表示主特征,F表示辅助特征。
图4 半轮廓搜索流程图
各特征分类依据如下所示:
竖直直线特征分类:若是外轮廓中第 1个实体,则是圆柱右端面;若是最后一个实体,则是圆柱左端面;若该实体的前一个实体是凹槽,则为凹槽左线;若该实体的后一个实体是凹槽,则为凹槽右线,否则为轴肩。
水平直线特征分类:若该实体特征与凹槽特征吻合,则是凹槽中线;否则是圆柱面外圆或螺纹段。
左倾斜直线特征分类:若是外轮廓中第1个实体,则是圆锥右端面;若该实体特征与倒角特征吻合,则是左倒角,否则为左倾圆锥外圆柱。
右倾直线特征分类:若是外轮廓中最后1个实体,则是圆锥左端面;若该实体特征与倒角特征吻合,则是右倒角,否则为右倾圆锥外圆柱。
顺圆弧特征分类:若是外轮廓中的第1个实体,则为顺圆弧右端面;若是最后一个实体,则为顺圆弧左端面;若该实体与倒圆角特征吻合,则为顺圆弧倒圆角,否则为外圆柱顺圆弧。
逆圆弧特征分类:若是外轮廓中的第1个实体,则为逆圆弧右端面;若是最后一个实体,则为逆圆弧左端面;若该实体与倒圆角特征吻合,则为逆圆弧倒圆角,否则为外圆柱圆弧。
表2 类型编码和特征编码对照表
3.2.1 凹槽特征识别与重构
1) 该实体是水平直线,即实体类型码是1;
2) 该实体的前一实体是竖直向下的直线,后一实体是竖直向上的直线。识别出凹槽之后,需要将凹槽重构。
(1) 若凹槽左线和右线等高,则以凹槽左线起点A和凹槽右线终点B作一直线,如图5所示。
图5 凹槽重构类型1
(2) 若凹槽左线比右线高,则以凹槽右线的起点确定点A,凹槽左线X坐标和凹槽右线起点Y坐标确定一个点B,凹槽左线的终点确定点C。分别以A、B和B、C作两条直线,如图6所示。
图6 凹槽重构类型2
(3) 若凹槽左线比右线低,则以凹槽右线起点确定点A,凹槽右线起点X坐标和凹槽左线终点Y坐标确定点B,凹槽左线终点确定点C,分别以A、B和B、C作直线,如图7所示。
图7 凹槽重构类型3
3.2.2 右倾倒角特征识别与重构
1) 该实体必须是右倾直线,即该实体的类型编码是3;
2) 该实体的前后实体都必须是直线;
3) 该实体与X轴正方向的夹角必须大于180°;
4) 该实体的前一实体、本实体、后一实体与X轴正方向的夹角按逆时钟方向依次增大。
右倾倒角非主特征,需重构。以倒角的起点确定点A,倒角起点的Y坐标和终点的X坐标确定点B,终点为点C,分别以点A、B和B、C作直线,如图8所示。
图 8 右倾倒角重构
进行螺纹段的自动编程,首先识别出螺纹端,其次获得螺纹段的大径、小径、导程、螺距等数据信息。
3.3.1 螺纹段特征识别
螺纹段的特征识别需要原零件图和外轮廓共同来识别。以圆柱外螺纹为例:
1) 外轮廓中该实体是水平直线,即类型编码为1,即螺纹大径,记为实体1;2) 原零件图中与实体 1对应的实体(记为实体 2)下方有一与之平行且距离较小,但线型不同的实体,记为实体 3,即螺纹小径;3) 实体 2和实体3起点X坐标、Y坐标差值较小,可自行设置。
3.3.2 螺纹段数据提取
普通螺纹标注的一般格式为:螺纹特征代号螺纹大径ⅹPh导程(P螺距) 旋向—螺纹公差代号—旋合长度。首先获取尺寸标注信息[4],将其存放在一个字符串中,然后利用字符串的查询功能,依次查询出所需要的数据。例如:某螺纹标注信息为 M32ⅹP3(1.5)-6g。首先查询该字符串的首字符为M,确定为普通螺纹,M后面的数字即为大径;查询到有字符P,P后面的数字即为导程;P后面括号中的数字即为螺距。小径的数据信息在特征识别中即可获取。
自动编程粗加工所需的主特征信息包括外轮廓中的主特征和辅助特征重构后形成的主特征,辅助特征仍保存在外轮廓中。具体流程如图9所示。
图9 主特征提取与辅助特征重构流程图
数控加工程序是以程序段为单位组成的。一个完成的程序段由程序号、准备功能、坐标尺寸及参数、进给速度、M/S/T功能等地址字组成。
首先根据前置参数设置生成前置代码;然后根据重构后的主特征生成粗加工代码,根据辅助特征生成凹槽段、倒角段、螺纹段等代码;最后生成停机代码。
在AutoCAD2002环境下,以ObjectARX为开发工具[5],开发自动编程系统,以某一典型轴类零件图为例,特征识别和自动编程效果如图10所示。
从图10可看出,特征识别和重构效果良好,生成文本程序基本符合数控加工要求,精度较高。
图10 特征识别结果和自动编程文本程序
本文提出了基于实体类型编码和特征编码的自动编程方法。首先讨论了基于节点集的实体打断和重构的方法,并在此基础上,应用逆时钟最小夹角法,搜索出零件图外轮廓。然后对外轮廓中各实体进行类型分类和特征分类,实现主特征提取和辅助特征重构。最后根据保存的主辅特征,按照程序段格式自动生成数控加工代码。
[1]张树有. 测点法自动跟踪获取图形轮廓信息[J]. 浙江大学学报(自然科学版), 1996, 30(4): 403-407.
[2]廖友军, 王恒升, 余金伟. 轴类零件的外轮廓识别方法[J]. 机械设计与制造, 2007: 1(1): 34-35.
[3]廖友军, 王恒升, 余金伟. 轴类零件二维工程图的特征识别方法[J]. 工程图学学报, 2007, 28(2):174-178.
[4]张 霞, 杨 岳, 罗意平.在 AutoCAD 中应ObjectARX自动获取标注尺寸[J]. 机械与电子,2002, (3): 35-37.
[5][爱尔兰]Charles McAuley. AutoCAD2000 ObjectARX编程指南[M]. 李世国, 潘建忠, 平雪良译. 北京:机械工业出版, 2000: 58-67.