CN111666674A - 一种型腔通道最小尺寸计算方法 - Google Patents
一种型腔通道最小尺寸计算方法 Download PDFInfo
- Publication number
- CN111666674A CN111666674A CN202010486054.9A CN202010486054A CN111666674A CN 111666674 A CN111666674 A CN 111666674A CN 202010486054 A CN202010486054 A CN 202010486054A CN 111666674 A CN111666674 A CN 111666674A
- Authority
- CN
- China
- Prior art keywords
- edge
- concave
- point
- offset
- path
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/10—Geometric CAD
- G06F30/17—Mechanical parametric or variational design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2113/00—Details relating to the application field
- G06F2113/22—Moulding
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Geometry (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Image Analysis (AREA)
Abstract
本发明涉及一种型腔通道最小尺寸计算方法,首先从已有的型腔三维CAD模型出发,获取模型中组成型腔的面,并从这些面中提取出中必要的边线,将其离散化为点后投影到二维平面中;将这些点按照一定顺序排列后使用Clipper库中的偏置处理函数按照一定方向对其进行偏置;最后,不断地增加偏置距离直至偏置后的多边形出现相交,此时的偏置距离的二倍即为型腔通道的最小尺寸。本发明降低了型腔通道最小尺寸的计算复杂度,加快了计算的速度。
Description
技术领域
本发明属于数控加工工艺规划领域,涉及一种型腔通道最小尺寸的计算方法。
背景技术
部分型腔的加工工艺方案涉及通道的粗加工、半精加工以及精加工等一系列工序。通常在型腔的粗加工过程中,尽可能使用尺寸较大的刀具进行加工。相对于尺寸小的刀具,尺寸大的刀具刚度和强度较好,且使用尺寸大的刀具进行加工可以提高加工效率。对一个型腔中通道最小尺寸的计算对于加工刀具尺寸的选取具有重要的参考价值,同时也对工艺路径的规划具有重要的作用。
文献“基于几何特性的槽加工刀具选取算法,计算机辅助设计与图形学学报,2010,22(11):1984-1989+1997”中公开了一种通道最小尺寸计算方法。该方法首先通过使用Voronoi Mountain方法对型腔底面外轮廓和内轮廓分别向内和向外45度拔模并形成拔模体;然后找出所有拔模体中非相邻轮廓形成的侧面在顶部聚集后形成的线;最后在这些线中找出距离底面最近的一条并计算出其距底面的距离,该距离即为通道最小尺寸。文献所述的方法需要进行拔模操作,导致该方法计算复杂度较高,尤其当底面轮廓中包含复杂曲线时,其拔模体生成会很困难;同时,该方法并没有解决具有底角的型腔通道最小尺寸的计算问题。
发明内容
要解决的技术问题
为了避免现有技术的不足之处,本发明提出一种型腔通道最小尺寸计算方法。本发明所提供的计算方法能够精确地且较为快速地计算出复杂型腔中通道的最小尺寸,并为后续加工刀具的选择以及加工工艺的规划提供一定的依据。
技术方案
一种型腔通道最小尺寸计算方法,其特征在于步骤如下:
步骤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中最小值的二倍。
步骤1中所述的FaceMatterSide具体而言,当底面的法矢指向实体内部时,则认为底面的材料侧为左,并记FaceMatterSide=1,当底面的法矢指向实体外部时,则认为底面的材料侧为右,并记FaceMatterSide=-1。
步骤1中所述的EdgeMatterSide具体而言,沿着底面法矢方向站立,朝着边的方向行进,如果材料在左侧,则表示该边的材料侧为左,并记EdgeMatterSide=1,如果材料在右侧,则表示边的材料侧为右,并记EdgeMatterSide=-1;EdgeConvexity表示边的凸凹性;EdgePointSet表示将边离散化后得到的一组离散化点组成的有序点集,其中点集里点的排列方向与边的方向一致;EdgeRevert为EdgePointSet中点的排列顺序是否需要翻转的标识,如果需要翻转,则记EdgeRevert=-1,反之,记EdgeRevert=1。
有益效果
本发明提出的一种型腔通道最小尺寸计算方法,本发明将三维模型简化为二维模型进行处理,降低了型腔通道最小尺寸的计算复杂度,加快了计算的速度;通过控制边线离散化获取到点的数量以及偏置边界值的大小可以达到用户所需要的精度;解决了型腔通道最小尺寸计算的问题,对刀具尺寸的选取具有重要的参考价值,同时也对后续工艺路径的规划起到了重要的作用。
附图说明
图1是本发明型腔通道最小尺寸计算方法流程图。
图2为边线和凹边线簇的提取和离散化过程及其属性示意图。
图3为带有凸台的型腔通道最小尺寸计算过程示意图。
具体实施方式
现结合实施例、附图对本发明作进一步描述:
本发明首先从已有的型腔三维CAD模型出发,获取模型中组成型腔的面,并从这些面中提取出中必要的边线,将其离散化为点后投影到二维平面中;将这些点按照一定顺序排列后使用Clipper库中的偏置处理函数按照一定方向对其进行偏置;最后,不断地增加偏置距离直至偏置后的多边形出现相交,此时的偏置距离的二倍即为型腔通道的最小尺寸。
参照图1,为本发明的总体流程图,具体的技术方案为:
本发明所采用的技术方案是一种型腔通道最小尺寸计算方法,包括以下步骤:
步骤一:型腔必要信息提取。一个型腔看作由一个底面和若个干轮廓面组成。从中提取出底面,并构建底面所包含的信息:
BottomFace={FaceMatterSide,Loops}
式中:BottomFace表示底面所包含的属性信息;FaceMatterSide表示底面的材料侧,底面的材料侧指三维CAD模型中模型材料与底面的位置关系,即当底面的法矢指向实体内部时,则认为底面的材料侧为左,并记FaceMatterSide=1,当底面的法矢指向实体外部时,则认为底面的材料侧为右,并记FaceMatterSide=-1;Loops表示所有限定底面的环的集合,其中环是一组由顶点连接起来的边。每个底面的Loops中包含一个外环以及若干个内环:
Loops={OuterLoop,InnerLoop1,InnerLoop2,...,InnerLoopn}
其中OuterLoop表示外环,InnerLoopi表示第i个内环,其中0<i≤n。分别提取出外环和内环中的每一条边,并获取其中包含的信息:
Edge={EdgeMatterSide,EdgeConvexity,EdgePointSet,EdgeRevert}
式中:Edge表示边中所包含的属性信息;EdgeMatterSide表示边的材料侧,边的材料侧表示底面中模型材料与边的位置关系,具体而言,沿着底面法矢方向站立,朝着边的方向行进,如果材料在左侧,则表示该边的材料侧为左,并记EdgeMatterSide=1,如果材料在右侧,则表示边的材料侧为右,并记EdgeMatterSide=-1;EdgeConvexity表示边的凸凹性;EdgePointSet表示将边离散化后得到的一组离散化点组成的有序点集,其中点集里点的排列方向与边的方向一致;EdgeRevert为EdgePointSet中点的排列顺序是否需要翻转的标识,如果需要翻转,则记EdgeRevert=-1,反之,记EdgeRevert=1。
凹边线簇是指在一个环内一组由若干个按顺序直接相连的凹边所组成的集合。凹边线簇信息构建如下:
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属性的其余属性均赋予该边,依次对凹边线簇中的边进行上述处理并得到一个新的凹边线簇。对这些凹边线簇中每一条边进行离散化处理并得到一系列点,将这些点投影到二维平面上并获取其坐标。在离散化过程中仅对曲边进行离散化,对于直线边,仅提取其起点和终点。
步骤二:对边的离散化点进行排序并得到每个凹边簇的原始路径。对上述从凹边线簇中获取到的点按照一定的顺序进行排列。对于一个包含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。
步骤三:对凹边线簇的原始路径使用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中最小值的二倍。
实施例1,它包括以下步骤:
步骤一.提取型腔中必要的边线并对其进行离散化处理。参照图2,获取三维CAD模型中组成型腔的面,并提取出型腔中的凹边线簇,共提取到两个凹边线簇。其中边线L1、L2、L3、L4、L5、L6和L7组成一个凹边线簇,另外对于带有底角的部位,提取出边线L11和L12组成另一个凹边线簇。分别对这两个凹边线簇中的边线进行离散化处理并得到对应的离散化点集合,然后将这些点投影至二维平面上。
步骤二.对提取到的点进行排序。分别对提取到的两个凹边线簇中的点进行排序,并得到一个闭合的凹边线簇原始路径和一个开放的凹边线簇原始路径。
步骤三.对凹边线簇原始路径使用Clipper库中的偏置函数进行处理。给定初始偏置距离f1=1mm、每次偏置的距离fa=1mm以及边界值fm=0.001mm。对该型腔中所有凹边线簇的原始路径不断地进行偏置直至出现相交,得到最终的偏置距离为9.863mm。图3可视化了偏置的过程。
Claims (3)
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中最小值的二倍。
2.根据权利要求1所述的一种型腔通道最小尺寸计算方法,其特征在于对于步骤1中所述的FaceMatterSide具体而言,当底面的法矢指向实体内部时,则认为底面的材料侧为左,并记FaceMatterSide=1,当底面的法矢指向实体外部时,则认为底面的材料侧为右,并记FaceMatterSide=-1。
3.根据权利要求1所述的一种型腔通道最小尺寸计算方法,其特征在于对于步骤1中所述的EdgeMatterSide具体而言,沿着底面法矢方向站立,朝着边的方向行进,如果材料在左侧,则表示该边的材料侧为左,并记EdgeMatterSide=1,如果材料在右侧,则表示边的材料侧为右,并记EdgeMatterSide=-1;EdgeConvexity表示边的凸凹性;EdgePointSet表示将边离散化后得到的一组离散化点组成的有序点集,其中点集里点的排列方向与边的方向一致;EdgeRevert为EdgePointSet中点的排列顺序是否需要翻转的标识,如果需要翻转,则记EdgeRevert=-1,反之,记EdgeRevert=1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010486054.9A CN111666674B (zh) | 2020-06-01 | 2020-06-01 | 一种型腔通道最小尺寸计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010486054.9A CN111666674B (zh) | 2020-06-01 | 2020-06-01 | 一种型腔通道最小尺寸计算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111666674A true CN111666674A (zh) | 2020-09-15 |
CN111666674B CN111666674B (zh) | 2022-05-10 |
Family
ID=72385626
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010486054.9A Active CN111666674B (zh) | 2020-06-01 | 2020-06-01 | 一种型腔通道最小尺寸计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111666674B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020181796A1 (en) * | 2001-05-30 | 2002-12-05 | Keiji Yoshizawa | Sizing processing system and computer program for the same |
WO2013154946A1 (en) * | 2012-04-11 | 2013-10-17 | Alere San Diego, Inc. | Microfluidic device, system and method |
CN104821014A (zh) * | 2015-01-06 | 2015-08-05 | 西北工业大学 | 融合刀具半径的三维工序模型构建方法 |
CN105739439A (zh) * | 2016-03-18 | 2016-07-06 | 沈阳飞机工业(集团)有限公司 | 飞机结构件复杂型腔三轴加工区域自动构建方法 |
CN108073136A (zh) * | 2016-11-15 | 2018-05-25 | 北京航空航天大学 | 一种三轴数控加工的加工域计算方法 |
US20200043186A1 (en) * | 2017-01-27 | 2020-02-06 | Ucl Business Plc | Apparatus, method, and system for alignment of 3d datasets |
CN110795797A (zh) * | 2019-09-26 | 2020-02-14 | 北京航空航天大学 | 一种mbd模型加工特征识别及信息提取方法 |
CN110991308A (zh) * | 2019-11-28 | 2020-04-10 | 上海交通大学 | 三维模型中螺纹特征及参数的快速识别提取方法 |
-
2020
- 2020-06-01 CN CN202010486054.9A patent/CN111666674B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020181796A1 (en) * | 2001-05-30 | 2002-12-05 | Keiji Yoshizawa | Sizing processing system and computer program for the same |
WO2013154946A1 (en) * | 2012-04-11 | 2013-10-17 | Alere San Diego, Inc. | Microfluidic device, system and method |
CN104821014A (zh) * | 2015-01-06 | 2015-08-05 | 西北工业大学 | 融合刀具半径的三维工序模型构建方法 |
CN105739439A (zh) * | 2016-03-18 | 2016-07-06 | 沈阳飞机工业(集团)有限公司 | 飞机结构件复杂型腔三轴加工区域自动构建方法 |
CN108073136A (zh) * | 2016-11-15 | 2018-05-25 | 北京航空航天大学 | 一种三轴数控加工的加工域计算方法 |
US20200043186A1 (en) * | 2017-01-27 | 2020-02-06 | Ucl Business Plc | Apparatus, method, and system for alignment of 3d datasets |
CN110795797A (zh) * | 2019-09-26 | 2020-02-14 | 北京航空航天大学 | 一种mbd模型加工特征识别及信息提取方法 |
CN110991308A (zh) * | 2019-11-28 | 2020-04-10 | 上海交通大学 | 三维模型中螺纹特征及参数的快速识别提取方法 |
Non-Patent Citations (3)
Title |
---|
RAJENDRA RANGUWAR 等: "Facile Synthesis of Concave Cuboid Au NCs with Precisely Tunable Dimensions and Mechanistic Insight", 《LANGMUIR》 * |
皇甫中民 等: "面向三维 CAD 模型检索的模型分割方法", 《机械科学与技术》 * |
贾利然 等: "模具型腔数控加工时间的评估方法研究", 《模具工业》 * |
Also Published As
Publication number | Publication date |
---|---|
CN111666674B (zh) | 2022-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Ding et al. | Adaptive iso-planar tool path generation for machining of free-form surfaces | |
EP1710720B1 (en) | Method of computer-aided design of a modeled object having several faces | |
CN109394410B (zh) | 基于病人个性化外固定3d打印模型设计方法及切片系统 | |
JP4904944B2 (ja) | Camシステム及びその方法 | |
Xu et al. | A mapping-based approach to eliminating self-intersection of offset paths on mesh surfaces for CNC machining | |
CN108338848B (zh) | 剥离式激光牙体预备方法、装置、设备及介质 | |
CN109597354B (zh) | 一种三角网格模型的多约束数控加工轨迹生成方法 | |
CN102436217B (zh) | 飞机结构件槽特征腹板加工驱动几何重构方法 | |
Ren et al. | Clean-up tool path generation by contraction tool method for machining complex polyhedral models | |
CN111324955B (zh) | 一种自由曲面激光切削加工的方法 | |
CN107037738B (zh) | 数控加工几何仿真中基于stl模型的材料去除方法 | |
CN111666674B (zh) | 一种型腔通道最小尺寸计算方法 | |
CN103869756B (zh) | 复杂平面型腔刀具可加工区域计算方法 | |
CN103903304B (zh) | 用于产品三维数据处理的任意四边形曲面中轴线生成方法 | |
JP3512091B2 (ja) | 自由曲面作成方法及び自由曲面作成装置 | |
CN115366568A (zh) | 一种自适应橄榄核随形雕刻方法与系统 | |
JP2007193552A (ja) | 面モデルの作成装置と作成方法 | |
Li et al. | Molds for meshes: Computing smooth parting lines and undercut removal | |
Ma et al. | Tool path planning with confined scallop height error using optimal connected fermat spirals | |
JP2859824B2 (ja) | 最大傾斜方向ツリー追跡による曲面体加工物の数値制御ミリング加工方法 | |
JP2001216345A (ja) | 3次元形状処理方法およびその方法を実施するためのプログラムを記憶した記憶媒体 | |
Zhu et al. | A rough cutting model generation algorithm based on multi-resolution mesh for sculptured surface machining | |
JP4067083B2 (ja) | 3次元形状処理装置、抜き勾配生成方法、プログラム及び記憶媒体 | |
Zheng et al. | An optimal approach to manufacturing planning for complex prismatic parts with interacting feature | |
Zhu et al. | Finite element mesh editing through cad operations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |