陈亚洲,李 恒,荣 星,陈 全,王 琳
(1.集美大学海洋装备与机械工程学院,福建 厦门 361021;2.厦门升正机械有限公司,福建 厦门 361022;3.集美大学计算机工程学院,福建 厦门 361021)
需要模具成型的产品其内外表面都应有合理的脱模斜度,脱模斜度设计不合理会影响模具制作周期、制作成本和产品成型合格率[1-3]。脱模斜度大小取决于产品材料性质、收缩率、制品壁厚、形状、高度或深度以及侧壁表面状况等[4-6]。轮胎模具是较为特殊的一类模具,轮胎花纹是其重要组成部分,轮胎模具加工时,会把某一个区域的花纹摆放成一个合适的角度一起加工,从而导致部分花纹侧面出现倒扣现象。因此轮胎模具生产厂商需对轮胎产品3D数模进行检查,对加工工艺性差的轮胎花纹,在产品技术条件允许的情况下修改其脱模斜度。轮胎花纹脱模斜度指相对于加工Z轴的角度,脱模方向指加工Z轴方向,按照行业习惯,本文仍称为脱模斜度和脱模方向。根据对某公司轮胎模具设计过程的调研,发现一名经验丰富的设计师花在检查、分析与修改一款普通轮胎产品花纹脱模斜度上的时间约2个工作日,周期较长、效率较低。为此,本文以轮胎产品表面花纹脱模斜度为研究对象,建立花纹型面特征自动识别算法,判断轮胎模具加工时是否存在倒扣现象,开发相应的程序对花纹脱模斜度进行批量化自动修改,以提高设计效率、缩短轮胎模具开发周期。
为实现花纹特征脱模斜度自动分析与调整,首先需要实现花纹特征轮廓面类型自动判断。以图1a为例,需要自动判断出哪一个面是花纹特征的顶面、底面及侧面[1]。花纹顶面、底面不存在脱模斜度问题,侧面需要分析、调整脱模斜度。
花纹特征顶面、底面的法线方向与脱模方向Z的夹角范围为α1~α2,花纹特征各个侧面的法线方向与脱模方向Z的夹角范围为β1~β2(图1a);因此,可以通过轮廓面的法线方向与脱模方向Z的夹角来判定轮廓面类型。构建花纹特征属性邻接图(pattern feature attribute adjacency graph,PFAAG),定义:PFAAG=
其中:结点F表示花纹特征轮廓面fi的集合,每个轮廓面由节点fi表示;E表示边ek的集合,对于相邻轮廓面fi、fj,有唯一的边ek与之对应;T为边E的属性,每个ek有一个唯一的属性值。如果该边对应两个面形成凸边,则ek属性值为1(图1b)中用绿色线显示);如果该边对应的两个面形成凹边,则ek属性值为-1(图1b)中用红色线表示);如果两个面共面(位于同一个平面并且法向量相同),则ek属性值为0[7]。
调用API函数UF_MODL_ask_face_data()和UF_CURVE_ask_line_data(),可以自动提取特征轮廓面信息和特征轮廓线信息。将提取的特征轮廓面按照1,2,3,…,i的顺序编号,依次填入PFAAG中相应的结点fi,将提取的相邻轮廓面之间的轮廓线信息依次填入PFAAG中对应的边ek。
在凸特征结构中,将与相邻轮廓面均形成凸边的轮廓面定义为顶面;将与相邻轮廓面均形成凹边的轮廓面定义为底面;将与相邻轮廓面形成的既有凸边又有凹边的轮廓面定义为侧面。根据上述定义,图1(a)中轮廓面1为顶面,轮廓面2为底面(也是产品分型面),其余各面为侧面。凹特征结构中,顶面与底面定义与凸特征结构相反,侧面定义相同。
应用API函数提取特征信息需明确选择的设计对象类型。CAD软件将设计对象分为多种,以UG为例,将设计对象分为特征(Feature)、对象(Object)和实体(Body)等类型[8]。程序开发过程时,调用不同的API函数,需要输入不同的数据类型。例如UF_MODL_ask_general_pocket( )函数需要输入Feature类型,UF_CURVE_ask_line_data( )函数需要输入Object类型。明确选取的特征类型后,通过调用API函数自动提取特征轮廓面信息和特征轮廓线信息,用到的主要函数如表1。
表1 特征对象间转换函数Tab.1 Conversion functions between features and objects
1.3.1 特征轮廓线投影
特征各个侧面设置的初始脱模斜度有3种情况:脱模斜度设置合理;脱模斜度设置值偏小;存在负脱模斜度。将具有负脱模斜度的面定义为凹面,具有正脱模斜度的面定义为凸面。为了进行特征脱模斜度分析,在识别出特征轮廓面类型的基础上,还需要实现特征轮廓面凹凸性自动判断。
设定脱模方向Z,如图2所示。将特征轮廓面的边线投影到垂直于脱模方向的平面上,将轮廓面凹凸性判定问题转化为二维平面内轮廓线相交性判定问题。
三维转换为二维的过程如下:1)构建与脱模方向Z相垂直的平面UOV,定义脱模方向Z与平面UOV的交点为O;2)将提取的顶面轮廓线垂直投影到UOV平面上,在图2中以红色标记;3)将提取的底面轮廓线垂直投影到UOV平面上,在图2中以绿色标记。
1.3.2 特征侧面凹凸性判断
将特征轮廓面边线投影为二维平面轮廓线后,建立特征侧面凹凸性判断规则。以凸特征结构为例:1)如果顶面轮廓线投影后形成的封闭轮廓完全被底面轮廓线投影后形成的封闭轮廓包络,则特征侧面不存在负脱模斜度;反之,特征侧面全部为负脱模斜度;2)如果顶面轮廓线投影后形成的封闭轮廓与底面轮廓线投影后形成的的封闭轮廓存在交叉关系,则存在负脱模斜度面。
将顶面轮廓投影线离散为一系列点,逐一判断离散点位于底面轮廓线投影后形成的封闭轮廓内部还是外部,以识别出具有负脱模斜度的面。
判断点位于平面封闭轮廓内部还是外部,可以采用射线法[9]、转角法[10]、面积和法[11]。由于射线法可以直接通过点的坐标对比进行判断,计算量相对较小,故本文采用射线法。过程如下:过一点Pi沿某一方向作射线PiXi,若射线PiXi与封闭轮廓线交点个数为偶数,则点Pi位于封闭轮廓线外部;若射线PiXi与封闭轮廓线交点个数为奇数,则点Pi位于封闭轮廓线内部[12]。
采用射线法判断点与平面封闭轮廓之间的关系在一般情况下是适用的。点与多边形的关系如图3所示,其中,V1、V2、…、V8表示封闭轮廓端点。从图3可以看出:射线P1X1与封闭轮廓线有4个交点,则点P1位于封闭轮廓线外部;射线P3X3与封闭轮廓线有1个交点,则点P3位于封闭轮廓线内部。当射线经过封闭轮廓端点时,上述方法并不适用,例如,射线P2X2与封闭轮廓线有3个交点,但点P2位于封闭轮廓外部;射线P4X4与封闭轮廓线有2个交点,但点P4位于封闭轮廓内部。
为此,本文对射线法进行了改进,改进的算法如下。
Step1 提取顶面轮廓线投影后得到的封闭轮廓顶点,按照逆时针方向对其排序,存入数组Upper[n],n为顶面轮廓线投影后得到的封闭轮廓顶点个数;
Step2 提取Upper[n]中的某一点,记为Pi,i的初始值为1;
Step3 判断Pi点是否位于底面轮廓线投影后得到的封闭轮廓边界上,若是转Step8,否则执行Step4;
Step4 过点Pi作水平向右的射线PiXi,求射线与底面轮廓线投影后得到的封闭轮廓的交点,总数记为num1;
Step5 依次对num 1中每一个交点进行判断,若某一交点为底面轮廓线投影后得到的封闭轮廓某个端点,则num 2=num 2+1,num 2表示射线PiXi与底面轮廓线投影后得到的封闭轮廓端点处的交点个数,初始值为0;
Step6 计算过点Pi的射线与底面轮廓线投影后得到的封闭轮廓有效交点总数,记为inter_point_total,inter_point_total=num1-num2;
Step7 若inter_point_total为奇数,返回Pi点在底面轮廓线投影后得到的封闭轮廓内部;若inter_point_total为偶数,返回Pi点在底面轮廓线投影后得到的封闭轮廓外部;
Step8i是否小于等于n?若否,转Step2,若是则转Step9;
Step9 程序结束。
上一节讨论了轮胎花纹特征自动识别方法,本节介绍如何在CAD软件UG10.0 中开发程序进行应用验证。
轮胎花纹与路面之间的摩擦力是车辆行驶的动力源,轮胎性能优劣不仅与其内部结构有关,还与胎面花纹直接相关[13-15]。花纹设计质量直接影响轮胎牵引力、侧向力、耐磨性、排水性以及噪声等[16-17]。轮胎几何结构设计包括轮胎截面形状设计和轮胎花纹形状设计两个部分。轮胎截面形状设计产生轮胎表面轮廓,轮胎花纹几何形状来源于轮胎花纹总图[18]。花纹沟由侧壁曲面、沟底曲面及侧壁与沟底的过渡曲面等组合而成[19]。
图4以块状轮胎花纹为例,给出了轮胎花纹三维模型及其剖面。从图4可以看出,轮胎花纹在光胎面上按照一定的要求及规律进行排布,轮胎花纹沿着轮胎轴向剖切面其各个侧面脱模斜度是变化的。橡胶材料特性允许轮胎产品在模具中成型时可以具有一定角度的倒扣(负脱模角)存在,在开模时强行脱模,所以不能简单的以脱模方向作为判断花纹特征顶面、底面和侧面的依据。
轮胎模具上的花纹一般采用电火花放电加工。为减少电极拆分数量,多个花纹特征会采用一个电极加工,导致需要调整部分花纹脱模斜度。一个节距内花纹加工完毕后,模具旋转一定的角度,再利用该电极加工下一节距内的花纹。设定电极放电方向Z(图4b)),轮胎花纹脱模斜度应遵循花纹侧面法线方向与放电方向Z的夹角范围为β1~β2(正脱模角)。因此可以将轮廓面沿放电方向Z轴向光胎面的切平面进行投影,将轮廓侧面凹凸性判定转化为二维平面内轮廓线相交性判定,相关方法已经在1.3.2节介绍。
为验证第1节中所建立算法的可行性,在vs2010 C++环境下,基于UG10.0 API开发了轮胎花纹脱模斜度自动调整程序,程序流程图如图5所示。
1)花纹特征快速选择。选取花纹特征后,通过调用API函数自动提取特征轮廓面信息和特征轮廓线信息。
2)花纹参数导入对话框树列表。将获取的花纹特征转化为tag_t类型,代码如下:
NXOpen::BlockStyler::PropertyList* SectionPocket =select_feature0->GetProperties()
tag_t pocket_tag =Select_pocket;
将Select_pocket带入到UF_MODL_ask_general_pocket函数中,由number_of_curves获取花纹块侧面个数,在弹出的对话框中以树列表进行显示。由linear_cubic.start_value和linear_cubic.end_value获取各个侧面脱模斜度,导入到树列表相应的栏目中。
3)进行花纹轮廓面类型判断。根据1.1节中的方法判断出顶面、底面及侧面。
4)将提取的顶面轮廓线、底面轮廓线沿放电Z轴投影于光胎面的切平面上。
5)根据1.3节中的方法进行轮廓线相交性判断,判断出脱模斜度不合理的侧面,并提出修改建议。
6)对不合理的脱模斜度进行修改。
在弹出的对话框中,当点选树列表某一行时,花纹块对应的侧面会高亮显示,能对设计人员进行有效提醒。点选过程中实现的函数如下:
std::vector
NXOpen::BlockStyler::Node * node =tree_control0->RootNode();
设计师在对话框中重新输入新的脱模斜度后,自动存储到参数linear_cubic.start_value和linear_cubic.end_value中。通过UF_MODL_edit_general_pocket()函数,实现对花纹块模型的更新,完成脱模斜度修改。
将轮胎产品3D数模导入UG10.0中,点取脱模斜度修改菜单,再点取需要检查、修改的花纹特征后,弹出图6所示的程序界面。图6中的花纹块为图4中符号M所标记的花纹块。从图6中可以看出,开发的程序可以自动选取相应花纹特征(为清晰起见,轮胎其他特征已被隐藏);可以将花纹特征各个侧面脱模角参数批量化导入到对话框中;根据电极放电方向,判断出脱模斜度不合理的侧面;对脱模斜度不合理的侧面,程序会自动推荐对脱模斜度的修改建议,方便设计师对脱模斜度进行修改,直至达到合理。
与手工逐个检查、修改轮胎产品脱模斜度相比,开发的程序减少了设计师频繁点击鼠标、逐个选取花纹特征面的操作,避免了花纹特征面错选和漏选现象,并能向设计师推荐脱模斜度角,经过多名工程师测试、脱模斜度设计效率平均提高了50%左右。
针对在CAD设计软件中检查、分析与修改轮胎表面花纹脱模斜度过程繁琐、设计效率低的问题,建立了轮胎花纹脱模斜度自动判断算法,基于UG10.0 API开发了相应程序。应用开发的程序,能减少设计师手工逐个对轮胎花纹特征进行修改的现象,能对轮胎花纹脱模斜度合理性进行分析,能自动对多个花纹特征进行批量化修改。该程序已经成功应用于企业轮胎模具设计中,模具设计师检查、分析与修改普通轮胎产品脱模斜度的时间由2个工作日缩短为1个工作日,提高了设计效率。程序运行稳定、实际应用效果良好。