1覆盖件模具中圆角自动减小的算法与实现徐伟,张道忠,魏威(山东山大华天软件有限公司,山东济南250101)摘要:借助CAD软件减小覆盖件模具的圆角时,容易出现圆角面变形质量差、处理效率低等问题。为此,提出了一种基于面面创建圆角的圆角自动减小算法,通过自动检索圆角、查找面边、延长面、面面倒圆角、变半径圆角等系列算法,实现了圆角面的自动批量减小处理,并在国产CAD软件SINOVATION的基础上进行了研发,大大提高了圆角设计效率。通过在车门型面圆角减小案例中的应用,表明该算法可以提高圆角减小的效率和变形后圆角面的质量,满足了模具企业高效、灵活的模具型面设计需要。关键词:覆盖件模具;圆角减小;面面创建圆角;变半径中图分类号:TG76;TP391.72文献标识码:B文章编号:AlgorithmandimplementationofautomaticallyreducingfilletincoverdieXUWei,ZHANGDao-zhong,WEIWei(ShandongHoteamSoftwareCo.,Ltd.,Jinan,Shandong250101,China)Abstract:InCADsoftwareforcoverdietoreducefilletprocess,itexiststhatthequalityisnothighdeformationandfillethandlecomplexdesignsleadtolowerefficiencyandotherissues.Therefore,forthisphenomenon,itisproposedbasedonthingstocreatearoundedcorneralgorithmautomaticallyreduced.Byautomaticallyretrievingfillet,findingsurfaceside,extendingthesurface,createfilletbyfacetoface,variableradiusfilletandotheralgorithms.Achievedfilletfaceautomaticbatchprocessingisreduced,whichhasbeendevelopedonthebasisofdomesticCADsoftwareofSINOVATION.Itgreatlyimprovesfilletdesignefficiency.Byapplicationofthemoldingsurfaceofthedoorinthecaseofreducingthefillet,indicatingthatthealgorithmcanbereducedtoimprovetheefficiencyandqualityofthefilletsurfaceafterdeformation.Thisfunctionmeetsthedieenterprisesefficientandflexiblediesurfacedesignneeds.Keywords:Cover;Filletreduced;Algorithmofcreatingfilletbyfacetoface;Variableradius1引言我国大型覆盖件成型模的制造都是由钳工制造完成,成型模的圆角对冲压件的最终质量具有很大的影响[1][2],通常都需要钳工手动进行研磨,这样很容易出现钳工的工作质量高低决定了模面质量好坏的现象[3],同时模具的圆角也会造成成型件的起皱、拉裂及回弹等问题[4]。模具在拉延成形过程中,其圆角部位主要是靠凸圆角成形,凹圆角几乎不起作用,但如果凹圆角处理不好的话,容易对后续加工额外留有一定的余量,加大了钳工的研修工作量[5,6]。在模具前期设计过程中,为了彻底解决上述问题,需要预先在CAD软件中进行凹圆角处理。目前,部分CAD软件已实现了圆角减小处理,但存在圆角面变形质量差、处理效率低等问题,不能满足模具型面设计的需要。因此,针对上述问题,本文对覆盖件模具中圆角减小的算法及圆角自动减小的实现进行了研究。2圆角自动减小的设计与算法圆角减小功能主要是针对参数化、非参数化的圆角面数据,相对原圆角面的形状,实现圆角面的减小处理。在圆角处理过程中,首先应该要分析识别出哪些是圆角面,然后再减小这些圆角面,后者是整个处理过程的核心。收稿日期:基金项目:国家国际科技合作项目(2011DFB11490);山东省自主创新项目(2013CXC30002)。作者简介:徐伟(1986-),男(汉族),山东济南人,需求工程师,硕士,主要从事三维CAD软件需求调研、规划和编写工作,(E-mail)xxww1986@163.com。2在CAD系统中,圆角减小的方法有多种,边线创建圆角和面面创建圆角是最常用的方法。其中,边线创建圆角的方法容易生成波浪式的圆角面,面质量较差;面面创建圆角的设计方法,延长面和修剪面的处理逻辑比较复杂。通过仔细的分析评估和验证,最终选用面面创建圆角的方法,而且针对这一圆角创建方法,设计了一种基于面面创建圆角的圆角自动减小算法,分析了延长面和修剪面的处理逻辑,确保圆角面的正确变形。算法的实现过程主要包括以下五个步骤:(1)检索圆角面:根据选择的型面,检索识别出每一个面,判断每个面是否为圆角面;(2)查找面边:查找圆角面的长侧和R侧边界线;(3)延长面:延长圆角面两侧的长边界线,延长方向是两侧R边界线的切线反方向,求出两个切平面;(4)面面倒圆角:延长两个切平面并进行面面倒圆角,创建出新的圆角面,修剪处理多余的面;(5)变半径圆角处理:处理特殊的变半径圆角面。2.1检索圆角面通过指定一系列的型面,在型面中检索出符合条件的圆角面。检索圆角面的过程,是根据每个面的几何信息判断该面是否是圆角面。因此该算法使用广泛,可以适用于参数和非参数型面。开始开始沿UV方向分割面沿UV方向分割面在分割点位置做圆弧在分割点位置做圆弧求UV参数坐标和距离求UV参数坐标和距离是否在公差范围内是否在公差范围内非圆角面非圆角面否圆角面圆角面是结束结束图1判断圆角面流程判断每个面是否是圆角面的算法流程,如图1所示。在判断圆角面过程中,根据输入分割点数,将圆角面分别沿着UV方向分割,分别取0.25、0.75参数位置的坐标值[7],计算求出与最近圆弧的距离,如果UV方向距离都在允许的公差范围内,才能判断此面为圆角面,否则,不是圆角面。2.2查找面边查找面边是指查找圆角面的长侧边界线和R侧边界线,主要是为延长面处理做准备。如图2所示,完成查找面边后,在圆角面的长侧边界线分别延长面,延长方向为R侧边界线的切线反方向,得到两个切平面,即延长面。1.长侧边界线2.R侧边界线图2长侧和R侧边界线查找圆角面的长侧边界线和R侧边界线的流程如图3所示,主要是判断圆角面的边界线的曲率半径是否与圆角的曲率半径一致。如果一致,那么该边界线为R侧边界线;不一致,则为长侧边界线。3开始开始查找面的所有边界线查找面的所有边界线分组边界线分组边界线求每组边的始终点及曲率半径求每组边的始终点及曲率半径是否与圆角面相等是否与圆角面相等长侧边界线长侧边界线否R侧边界线R侧边界线是结束结束图3查找边界线流程查找面边的部分关键代码,如表1所示。表1查找边界线部分代码/*获取边界线*/stat=TiInqComFac(&idCom1,&numfac1,&faceidP1);if(stat!=0){gotortn;/*获取长侧边界线*/stat=yxss00(outsrfcanonAP1,outsrfcanonAP2,0,1,tolAP,&headSPI);if(stat!=0){gotortn;}/*获取R侧边界线*/cnum=VMYHCMNNUM(VMYHGPSCMN(headSPI)+1);}2.3延长面根据查找出的长侧边界线和R侧边界的切线反方向进行延长,创建出两个平面,即为延长面。主要实现算法为:(1)参照长侧的边界线查找出相邻R侧边界线,求出其切线方向;(2)根据切线方向(反方向)和延长距离,求出两侧的延长边界线;(3)计算求出两条边界线延长方向的平均方向,根据平均方向和延长距离,求出两侧边界线的中间位置的一条边界线;(4)依次循环(1)、(3)过程创建每部分的边界线;(5)最后,按照所有的边界线轨迹创建面。使用面延长功能的原语函数,沿着临边的切线方向进行面延长,其部分关键代码如表2所示。表2面延长部分代码/*圆角面延长*/stat=VqlLftExSf(srfcanonAP1,uvflgA,exlngA,&outsrfcanonAP1,tolAP);if(stat!=0){gotortn;}/*求出交线*/4stat=yxss00(outsrfcanonAP1,outsrfcanonAP2,0,1,tolAP,&headSPI);if(stat!=0){gotortn;}2.4面面倒圆角面面倒圆角是指参照延长生成的面,根据设定的圆角半径大小,按照面面倒圆角的方法,创建新的圆角面。此部分功能的实现,主要调用面面倒圆角命令接口(VPLFLTM00)。面面倒圆角的原语函数,使用接口描述如表3所示。表3面面倒圆角接口VPLFLTM00(VtLfltIdent*id0SPI,VtLfltIdent*id1SPI,INT*guidFP,VtLfltIdent*gcrvidSPI,VtLfltArcMd*arcmtdSPI,VtLfltRadIf*radinfSPI,VtLfltCreRg*crerngSPI,VtLfltMOptIf*optinfSPI,DOUBLE*radP,INT*mnumP)//第一个面信息//第二个面信息//是否有引导线//引导线信息//圆弧的创建方式//半径信息//创建圆角面的范围//选项信息//一定半径值//渐变半径R的数2.5变半径圆角处理圆角减小功能在调整变半径圆角时,存在渐变反向的问题。例如,变半径圆角调整前,半径采样为R[3]={10.0,8.0,6.0},减小20%后,应该变为R[3]={8.0,6.4,4.8}[8],在处理过程中,由于初始算法在计算插值点的插值半径时不够严谨,导致产生两个问题:(1)调整后圆角渐变方向反向,R’[3]={4.8,6.4,8.0},会导致圆角调整失败或者圆角调整后与其他圆角不衔接。(2)圆角的基底面比较大,导致计算出来的插值点和插值半径不够准确,R’[3]={8.3,6.8,5.0}。由于存在以上问题,进行了优化改进上述插值算法,简化插值点的处理过程,直接在边界线上获取插值点[9][10],提高了变半径圆角插值半径计算的准确性,使处理效率更快,生成质量更高。实现算法描述如下:(1)创建相切面并裁剪结合后,取得公共边界线;(2)从边界线上采样点,即为创建变半径圆角的插值点;(3)以每个采样点为等参线的始点,计算相切面上对应等参线上的终点,该点会对应圆角面边界线上的某一点;(4)通过计算得到的相切面的终点,计算该点所在圆角面的等参线半径,该半径即为插值点对应的插值半径。计算渐变圆角插值点和插值半径,接口设计如表4所示。表4变半径圆角处理接口INTVqlGetFltPntRad(YSf*tansurCD,YCv*crvCP,INTdivNum,YSf*fltsurCD,//相切面约束//相切面公共边界线//相切面公共边界线线分割数//圆角面数据5INTuvflag)//圆角方向标识针对变半径圆角减小场景,为提高圆角质量,使用插值点在相切面上对应等参线的终点进行计算,部分代码如表5所示。表5变半径圆角处理部分代码/*计算点在边界线上的切向量*/if((ystat=yvcv(cvCP1-bcrrv_p,pt,1,cvalA))!=(INT)0){stat=VEYRTN;gotortn;}/*计算面上点UV方向上的切向量*/if((ystat=yvsf(sfCP1-bsrf_p,prm1A,1,svalA,nrmA))!=(INT)