[发明专利]一种型腔通道最小尺寸计算方法有效
申请号: | 202010486054.9 | 申请日: | 2020-06-01 |
公开(公告)号: | CN111666674B | 公开(公告)日: | 2022-05-10 |
发明(设计)人: | 张树生;张航;杨博;梁嘉宸 | 申请(专利权)人: | 西北工业大学 |
主分类号: | G06F30/20 | 分类号: | G06F30/20;G06F30/17;G06F113/22 |
代理公司: | 西北工业大学专利中心 61204 | 代理人: | 刘新琼 |
地址: | 710072 *** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 通道 最小 尺寸 计算方法 | ||
1.一种型腔通道最小尺寸计算方法,其特征在于步骤如下:
步骤1:提取型腔必要信息:一个型腔看作由一个底面和若个干轮廓面组成,从中提取出底面,并构建底面所包含的信息:
BottomFace={FaceMatterSide,Loops}
式中:BottomFace表示底面所包含的属性信息;FaceMatterSide表示底面的材料侧,底面的材料侧指三维CAD模型中模型材料与底面的位置关系;Loops表示所有限定底面的环的集合,其中环是一组由顶点连接起来的边;每个底面的Loops中包含一个外环以及若干个内环:
Loops={OuterLoop,InnerLoop1,InnerLoop2,...,InnerLoopn}
其中OuterLoop表示外环,InnerLoopi表示第i个内环,其中0<i≤n;分别提取出外环和内环中的每一条边,并获取其中包含的信息:
Edge={EdgeMatterSide,EdgeConvexity,EdgePointSet,EdgeRevert}
式中:Edge表示边中所包含的属性信息;EdgeMatterSide表示边的材料侧,边的材料侧表示底面中模型材料与边的位置关系;
凹边线簇是指在一个环内一组由若干个按顺序直接相连的凹边所组成的集合;凹边线簇信息构建如下:
ConcaveEdges={Edges,EdgesPointset,OpenPath,OuterorInner}
式中:ConcaveEdges表示凹边线簇的属性信息;Edges表示组成凹边线簇的所有边的集合,Edges={E1,E2,E3,...,En},Ei表示组成凹边线簇的第i条边,其中0<i≤n;EdgesPointset表示将凹边线簇中每条边的离散化点集合并后按照一定顺序重新排列得到的新的有序点集,即凹边线簇的路径,EdgesPointset={P1,P2,P3,...,Pn},Pi表示第i个离散化点,其中0<i≤n;OpenPath为凹边线簇路径开闭的标识,当凹边线簇路径首尾不相连时即认为其是开放路径,反之,当凹边线簇路径首尾相连时即认为其是闭合路径;OuterorInner表示该凹边线簇包含在外环中还是内环中;
对于没有底角的型腔,首先分别提取出型腔底面的外环和内环;之后,如果外环或者内环中包含凸边,则分别将这些凸边剔除并得到多个由凹边组成的集合;最后,对凹边集合中的边线按照一定顺序进行排列得到一个或多个凹边线簇;对于有底角的型腔,需要继续对获取到的凹边线簇进行处理:首先,分别获取凹边线簇中的每一条边所在的圆角面;之后,在该圆角面的轮廓上获取所有与该边不直接相邻且为凹边的边;然后,判断获取到的边是否与其对应在凹边线簇中的边方向一致,如果不一致,则翻转该边的方向;最后,将获取到的边对应在凹边线簇中的边除去EdgePointSet属性的其余属性均赋予该边,依次对凹边线簇中的边进行上述处理并得到一个新的凹边线簇;对新的凹边线簇中每一条边进行离散化处理并得到一系列点,将这些点投影到二维平面上并获取其坐标;在离散化过程中仅对曲边进行离散化,对于直线边,仅提取其起点和终点;
步骤2:对边的离散化点进行排序并得到每个凹边簇的原始路径;对步骤1从凹边线簇中获取到的点按照一定的顺序进行排列;对于一个包含n条边的凹边线簇,需要通过以下方法进行排序:首先获取凹边簇中的第一条边的离散化点集EdgePointSet1和第二条边的离散化点集EdgePointSet2,判断EdgePointSet1的起点是否与EdgePointSet2的起点或者终点重合,如果重合,则翻转EdgePointSet1中点的排列方向,并记该边的属性EdgeRevert=-1,反之,不执行翻转操作,并记EdgeRevert=1;然后分别计算出EdgePointSet1的终点到EdgePointSet2起点的距离d1和到EdgePointSet2终点的距离d2,若d1>d2,则翻转EdgePointSet2中点的排列方向,并记该边的属性EdgeRevert=-1,若d1<d2,不执行翻转操作,并记该边的属性EdgeRevert=1;最后,获取凹边线簇中第i条边的离散化点集EdgePointSeti,其中2<i≤n,分别计算出第i-1条边的点集EdgePointSeti-1的终点到EdgePointSeti起点的距离di1和到EdgePointSeti终点的距离di2,若di1>di2,则翻转EdgePointSeti中点的排列的方向,并记该边的属性EdgeRevert=-1,若di1<di2,不执行翻转操作,并记该边的属性EdgeRevert=1;通过上述方法分别对环中每个凹边线簇进行处理,最终每一个凹边线簇都会得到一组与之对应的有序点集合,即凹边线簇的原始路径EdgesPointSet;
步骤3:对凹边线簇的原始路径使用Clipper库中的偏置函数进行处理;对一个底面中包含的所有凹边线簇原始路径进行偏置,并给定偏置距离f;
情况一:对型腔中仅由凹边组成的环进行偏置;此时每个环中仅包含一个凹边线簇,且凹边线簇的原始路径属于闭合路径;对于外环,则使用Clipper库中的偏置函数对该环的凹边线簇原始路径向内偏置f;对于内环,则向外偏置f;
情况二:对型腔中包含凸边的环进行偏置;当环中包含凸边时,则该环会包含一个或者多个凹边线簇;使用Clipper库中的偏置函数对其中一个凹边线簇的原始路径EdgesPointSet进行偏置得到新的路径C1,C1仍然为一系列有序点组成的集合;环中包含的凹边线簇均为开放路径,在使用Clipper库对其进行偏置时,会向EdgesPointSet的两侧同时偏置f的距离,但实际上只需要保留其在边线材料侧一面的偏置结果;通过判断偏置后生成的点与凹边线簇原始路径EdgesPointSet的相对位置是否与边线材料侧相同来对这些点进行取舍,如果相同,则保留该点,如果不相同,则舍弃;具体而言:
1)边线的材料侧分为左侧或者右侧,因此,对偏置后生成的点位于凹边线簇原始路径EdgesPointSet的左侧还是右侧进行判断;对于偏置后路径C1上的任意一点p(x,y,0),找到距离其最近的原始路径C0上的点p0(x0,y0,0),如果p0不是原始路径的终点,则在原始路径上找到与p0相邻的后一个点p1(x1,y1,0),定义向量如果p0是原始路径C0的终点,在原始路径上找到与p0相邻的前一个点p2(x2,y2,0),定义向量则当向量的z轴坐标值大于零时,认为p在原始路径C0的左侧,并给定一个标记Sign=1;小于零时,认为p在原始路径C0的右侧,并给定一个标记Sign=-1;等于零时,认为p在原始路径上,并给定一个标记Sign=0;
2)依次判断偏置后的路径C1中每一个点与原始路径EdgesPointSet的相对位置是否与原始路径EdgesPointSet中每个点对应边线的材料侧一致;获取EdgesPointSet中每个点对应边线的属性,如果EdgeRevert×EdgeMatterSide×FaceMatterSide=Sign,认为该点位置与边线材料侧一致;如果EdgeRevert×EdgeMatterSide×FaceMatterSide≠Sign,则认为该点位置与边线材料侧不一致;保留所有位置与边线材料侧一致的点得到一个新的点集S0;
3)找到点集S0中正确的起点和终点,并对S0中的点按照一定顺序重新进行排列后与原始路径EdgesPointSet相连形成新的路径C4;具体而言,首先在S0中分别找到距离原始路径EdgesPointSet的起点ps和终点pe距离在r1和r2之间的点,r1=f+a,r2=f-a,其中f为偏置距离,a为容错范围,a的取值为C1中距离最近的两点之间的距离值;之后,将通过上述方法获取到S0中所有可能的起点与终点并分别放入到起始点集合PS和终止点集合Pe中,读取PS中的点pi,在Pe中找与该点直接相邻的点pj,如果pj存在,则将pi作为起点,pj作为终点,如果pj不存在,则继续读取PS中的下一个点并重复上述步骤直至找到起始点和终止点;然后,将获取到点集S0的起点和终点分别放到的第一位和最后一位,并对S0中其余点按照之前的顺序进行排列得到新的路径C3;最后,分别计算出C3的终点到原始路径EdgesPointSet起点的距离ds和到EdgesPointSet终点的距离de,若ds>de,则对C3中的点以相反的方向重新进行排列,若ds<de,不进行任何操作,将路径C3与路径EdgesPointSet相连得到一个闭合路径C4;此时完成对其中一个凹边线簇的偏置,然后使用同样的方法分别对其余的凹边线簇偏置f的距离;
对这些凹边线簇偏置完成后,判断偏置后的路径是否发生相交;经过偏置后的路径如果与其他路径相交或者出现自相交,则路径的数目会发生改变;待偏置原始路径的数目为n0,偏置后的路径数目为n1,如果n0=n1,即认为未出现相交;如果n0≠n1,认为出现相交;具体偏置过程如下:
给定初始偏置距离f1=d0,如果第一次偏置就发生相交,则令f1=f1/2,不断执行该操作,直至不再相交,则将此时的偏置距离当作初始偏置距离;令fi=fi-1+fa,其中fi表示第i次的偏置距离,fi-1表示第i-1次的偏置距离,fa表示每次偏置的距离,且i>1;经过i次偏置后出现相交时,令fa=fa/2,并重新执行该次偏置,如果仍然相交,则继续缩小fa直至无法相交;如果不再相交,则在改变fa的值后继续执行下一次偏置;不断地执行上述操作,直至fa<fm,其中fm为给定的一个边界值,此时的fi的二倍即为最终偏置距离;
首先分别对底面中包含的所有凹边线簇路径采用上述方法单独进行偏置,判断最终偏置距离在范围(0,LimitOffset)内是否出现自相交,如果出现自相交则记录该偏置距离,完成所有凹边线簇路径的单独偏置后,找出其中的最小偏置距离Offset1;然后,分别对外环凹边线簇同时进行偏置,并记录最终偏置距离Offset2;之后,分别对每个内环中凹边线簇同时进行偏置,并记录最终偏置距离Offset3;最后,同时对底面中包含的凹边线簇进行偏置,并记录最终偏置距离Offset4;通道最小尺寸为Offset1、Offset2、Offset3和Offset4中最小值的二倍。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西北工业大学,未经西北工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010486054.9/1.html,转载请声明来源钻瓜专利网。