CN115859524A - 一种基于stl模型的圆柱体布尔求差运算方法 - Google Patents
一种基于stl模型的圆柱体布尔求差运算方法 Download PDFInfo
- Publication number
- CN115859524A CN115859524A CN202211649874.0A CN202211649874A CN115859524A CN 115859524 A CN115859524 A CN 115859524A CN 202211649874 A CN202211649874 A CN 202211649874A CN 115859524 A CN115859524 A CN 115859524A
- Authority
- CN
- China
- Prior art keywords
- dimensional array
- workpiece
- cylinder
- chain
- loop chain
- 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
- 238000004364 calculation method Methods 0.000 title claims abstract description 46
- 238000000034 method Methods 0.000 claims abstract description 72
- 238000013507 mapping Methods 0.000 claims abstract description 25
- 238000003860 storage Methods 0.000 claims abstract description 6
- 239000013598 vector Substances 0.000 claims description 15
- 238000003491 array Methods 0.000 claims description 5
- 238000005457 optimization Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 28
- 238000004422 calculation algorithm Methods 0.000 description 20
- 230000009466 transformation Effects 0.000 description 12
- 238000012360 testing method Methods 0.000 description 11
- 238000009826 distribution Methods 0.000 description 8
- 239000012634 fragment Substances 0.000 description 7
- 238000004088 simulation Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 238000005259 measurement Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000003754 machining Methods 0.000 description 3
- 238000010845 search algorithm Methods 0.000 description 3
- 238000006073 displacement reaction Methods 0.000 description 2
- 238000010146 3D printing Methods 0.000 description 1
- 238000011960 computer-aided design Methods 0.000 description 1
- 230000008602 contraction Effects 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000003801 milling Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Numerical Control (AREA)
- Image Generation (AREA)
Abstract
本发明公开一种基于STL模型的圆柱体布尔求差运算方法,该方法基于圆柱体模型和工件表面网格点进行相交计算,采用链式邻接表的储存结构,其包括如下步骤:获取工件十字网格模型;基于链式邻接表构建圆柱体曲面和端面的二维数组十字网格模型;计算工件与圆柱体的相交环链;将相交环链映射为相交面;基于DDA插补法和射线法优化相交面;基于广度优先遍历法删除工件表面多余节点。本发明的运算方法遍历方法简单,增删操作灵活,减少了不必要的内存空间占用,适合十字网格模型,耗时短,同时对布尔求差运算时产生的边沿闭合环链进行了优化。
Description
技术领域
本发明属于计算机辅助设计领域,特别涉及一种基于STL模型的圆柱体布尔求差运算方法。
背景技术
数控铣削仿真技术是CAD/CAM技术的一环,是作为验证数控程序是否可靠的重要工具。为了检查数控程序是否正确,防止在实际加工中产生碰撞和干涉,人们在研究可以实现低成本且高效率验证数控加工过程的方法,并且在图形仿真和图形显示方面取得了许多进展。
当前对数控加工中实体模型的方法相对较多,但基于网格模型的方法较少,且大多数采用基于三角面片的布尔运算方法,计算耗时长。同时网格模型快速灵活,拓扑适应能力强;数控加工所依据的模型是STL模型,STL模型是当前应用范围最为广泛的三维模型表示方法,它使用无序的三角面片表达三维实体的表面信息,每个三角面片使用三角形的三个顶点和指向模型外部的法向量表示。该格式有格式简单、平台兼容性广泛的特点,已经普遍应用于3D打印技术、数控仿真技术、虚拟显示技术、实体造型技术等领域。
在数控加工仿真领域中,工件STL模型通常由几十万个三角面片构成,刀具模型通常也要由上千个三角面片构成。传统的布尔求差方法就是把这些三角面片进行两两相交性测试,那么一次的布尔求差运算所需要的相交性测试就会达到上亿次,而当要完成一个工件模型的切削过程的仿真,通常要进行数量庞大的布尔求差运算,直接进行三角面片的两两相交测试,会由于计算量巨大而导致运算时间长丧失实用价值,且传统的三角模型邻接表作为存储结构需要重复遍历计算相交线,导致算法效率低。
发明内容
本发明的目的,在于提供一种基于STL模型的圆柱体布尔求差运算方法,能够实现平底刀具的布尔求差快速计算,在保证精度的前提下提高计算效率。
为了达成上述目的,本发明的解决方案是:
一种基于STL模型的圆柱体布尔求差运算方法,包括如下步骤:
步骤1,获取工件十字网格模型;
步骤2,基于链式邻接表构建圆柱体曲面和端面的二维数组十字网格模型;
步骤3,计算工件与圆柱体的相交环链;
步骤4,将相交环链映射为相交面;
步骤5,基于DDA插补法和射线法优化相交面;
步骤6,基于广度优先遍历法删除工件表面多余节点。
上述步骤1的具体内容是,对工件表面进行十字形网格划分,选取网格节点的上下左右四个方向和依据空间向量的叉乘公式,获取工件十字网格模型。
上述步骤2中,为实现快速的相交面计算,将复杂的三维数据转换为二维数据,所以将圆柱体构造为两个二维数组,其中:
构建圆柱体曲面二维数组十字网格模型的具体过程是,将曲面中心圆的圆周角作为二维数组的x轴地址值;将空间中的点投影到端面圆的法向量方向上,端面圆心点到该法向量方向上的投影点的距离值为二维数组的y轴地址值,将(x,y)作为二维数组的一个地址值;
构建圆柱体端面二维数组十字网格模型的具体过程是,将端面中心圆的圆周角作为二维数组的x轴地址值,将端面上的点到中心圆圆心的距离值作为二维数组的y轴地址值,将(x,y)作为端面二维数组的地址值,基于链式邻接表遍历曲面和端面的十字网格模型,构建圆柱的端面和曲面的二维数组。
上述步骤3的具体内容是,计算工件表面所有的环链片段,若工件十字网格表面节点在圆柱的外部,且它的任意一个相邻表面节点在圆柱的内部,那么这个两个点构成的线段与圆柱体的交点就作为环链上的一个点加入存储环链片段的交点环链栈中;对线段的端点进行坐标变换;对线段和圆柱体进行相交点的计算,得到相交环链片段,将距离最小的环链片段间的两个端点连接,循环此过程,直到生成一条完整的由相交环链片段构成的相交环链。
上述步骤4的具体内容是,将相交环链的节点坐标值对应到曲面二维数组和端面二维数组上的地址值,快速映射二维数组闭合环链片段,拼接曲面和端面的二维数组闭合环链片段,构建二维数组闭合环链。
上述步骤5中,基于DDA插补法优化相交面的具体内容是,基于DDA插补的方法对二维数组闭合环链上不连续的两个节点进行插补优化;当检查到端面二维数组与曲面二维数组之间存在连续的环链时,基于DDA插补进行跨数组的插补优化。
上述步骤5中,基于射线法优化相交面的具体内容是,在端面二维数组和曲面的二维数组上通过射线法求出位于二维数组闭合环链内部的某个节点,再利用广度优先遍历标记位于二维数组闭合环链内部的节点,将所有标记的内部节点复制到工件表面,完成相交面构造。
上述步骤6中,工件表面多余节点是指工件表面上的被包围在圆柱体内部的节点,具体过程是,在工件的当前表面上查找到一条包围环链片段后,对十字网格上位于圆柱体内部的节点进行广度优先遍历进行查找,当查找到一个节点满足包围环链的条件且不是已经标记为包围环链片段节点时,即找到了新的包围环链片段,计算新的包围环链片段,重复此过程,直到找不到未被标记为环链片段的十字网格节点。
上述包围环链是位于工件模型上的节点的集合,是在计算相交环链节点时额外计算出的数据,用来删除工件表面多余的节点。
采用上述方案后,本发明通过十字网格对角三角化方式,实现十字形网格模型向STL模型的转换,其将布尔求差的平底刀模型映射为两个相互连接的二维数组,代表圆柱体端面和曲面,在计算时工件分别与圆柱体的端面和曲面进行相交计算,生成相交面,删除工件表面多余节点,得到布尔求差计算结果。本发明具有以下有益效果:
(1)本发明针对十字网格模型提出了链式邻接表的数据结构,遍历方法简单,增删操作灵活,减少了不必要的内存空间占用,适合十字网格模型;
(2)本发明通过直接对平底刀具的圆柱体模型和工件表面网格点进行相交计算,并且依据环链,直接在二维数组提前构建的圆柱网格模型中提取相交面,计算方法简单,耗时短,同时对布尔求差运算时产生的二维数组闭合环链进行了优化。
附图说明
图1是本发明的总体流程图;
图2是本发明十字网格拓扑结构图;
图3是本发明圆柱体二维数组结构示意图;
图4是本发明中判断是否位于圆柱体内部图解示意图;
图5是本发明中判断是否位于圆柱体外部图解示意图;
图6是本发明坐标系的旋转示意图;
图7是本发明坐标系位移示意图;
图8是本发明中求线段与圆柱体交点的示意图;
图9是本发明中在圆柱坐标系下求线段与圆柱体交点的示意图;
图10是本发明中环链片段生成二维数组闭合环链示意图;
其中,(a)是交点环链片段,(b)是闭合的交点环链;
图11是本发明中二维数组闭合环链示意图;
图12是本发明中二维数组边界间断示意图;
图13是本发明中二维数组边界间断分布示意图;
其中,(a)是曲面布尔求差计算输出,(b)是隔断的二维数组的分布图;
图14是本发明首尾衔接映射示意图;
其中,(a)是端面曲面布尔求差计算输出,(b)是二维数组的左右互连分布图;
图15是本发明中首尾衔接映射环链判断流程图;
图16是本发明中端面和曲面二维数组拼接示意图;
其中,(a)是端面和曲面的布尔求差运算输出,(b)是曲面的二维数组分布图,(c)是端面的二维数组分布图;
图17是本发明中断面曲面跨数组插补流程图;
图18是本发明中多条环链分布示意图;
图19是本发明中多条环链查找算法流程图;
图20是本发明中圆柱体与六棱锥工件之间的布尔求差测试效果图;
其中,(a)是端面和曲面计算输出示意图,(b)是曲面的计算输出示意图,(c)是端面的计算输出示意图;
图21是本发明的圆柱体布尔算法与开源库LIBIGL的布尔算法对比示意图;
图22(a)、图22(b)、图22(c)、图22(d)是本发明曲面精度测量结果示意图。
具体实施方式
以下将结合附图,对本发明的技术方案及有益效果进行详细说明。
首先对本发明中出现的环链类型做详细解释:相交环链片段构成了相交环链,而相交环链片段是在仿真计算过程中由工件和刀具的相交点构成的点的集合,这些交点即不在工件模型节点上,也不在刀具模型节点上。二维数组闭合环链是二维数组中的某些节点的集合,本质上就是一些二维地址的集合,它由闭合环链通过映射的方法计算出来的。包围环链是位于工件模型上的节点的集合,是在计算相交环链节点时额外计算出的数据,它用来删除工件表面多余的节点。
如图1所示,本发明提供一种基于STL模型的圆柱体布尔求差运算方法,包括如下步骤:
步骤1,获取工件十字网格模型,如图2所示,对立体模型表面的建模都可以由十字形网格构成,以图2的顶点为例,a,b,c,d,e由实际空间坐标由实际物体表面决定,Δabc构成一个三角面片,a与b在表面上存在方向上的关系,a向上指向b,b向下指向a,同理,a向右指向e,e向左指向a;
步骤2,基于链式邻接表构建圆柱体曲面和端面的二维数组十字网格模型,圆柱体即平底刀具的计算应当在仿真前由用户设定,所述平底刀具是由实际的加工任务要求定义的,构建该圆柱没有特定的约束,
1、构建圆柱体曲面模型:如图3所示,算法构建圆柱体的曲面二维数组,设圆柱曲面上的节点到端面中心圆的圆心角为参数θ,节点的高度值z为参数h,任意设置半径值r;其中θ的值在0到360°之间,刻度范围可以自定义,图3中
°的刻度值为1°,所以二维数组的第一个维度为360;同理h的范围在0到H之间,H是平底刀刀具的几何常量,刻度范围自定义;基于链式邻接表遍历曲面的十字网格模型,构建圆柱的曲面的二维数组,根据直角坐标与圆柱参数的转换关系记录每个节点的坐标,即x=rcosθ,y=rsinθ,z=h;
2、构建圆柱体端面模型:如图3所示,设端面中心圆圆心角为参数θ,映射点到圆心的距离为r;基于链式邻接表遍历端面的十字网格模型,构建圆柱的端面的二维数组,根据三角关系与直角坐标的转换关系记录每个节点的坐标,即x=rcosθ,y=rsinθ,z=0;
步骤3,计算工件与圆柱体的相交环链:
1、计算工件与圆柱体的相交环链片段,判断表面节点是否在圆柱体内部:
利用链式邻接表的结构遍历工件的表面节点,计算表面节点到圆柱体的距离,判断其是否在圆柱体内部,求圆柱体与某空间点是否相交的数学公式如下:如图4所示,B点是圆柱体端面圆的圆心点,是端面圆的单位法向量,由图4可得:
设if(A)函数判断A是否在圆柱体内部:
若工件十字网格表面节点在圆柱体的外部,且它的任意一个相邻节点在圆柱体的内部,那么这个两个点构成的线段与圆柱体的交点就作为环链上的一个点加入存储环链片段的交点环链栈中;
2、对线段的端点进行坐标变换:如图6所示,圆柱体平底刀的位置采用端面法向量表示,计算线段与圆柱体交点时,为了简化计算量,先将线段作位移和旋转变换,将其转换到圆柱体的刀具坐标系中,刀具的端面圆心点坐标为B(xB,yB,zB),端面圆的单位法向量为如图6所示,假设坐标系X3Y3Z3旋转变换到坐标系X2Y2Z2,定义旋转向量R,其方向为旋转轴方向,模为旋转角θ,设R的单位向量为r,对线段上的某一端点a进行旋转变换,设变换后为点a′,这里用罗德里格斯的旋转公式进行旋转变换:
a′=cosθ·a+(1-cosθ)(a·r)·r+sinθ·r·a
对工件的十字网格表面节点a旋转后得到a′,再将a′进行平移变换最终得到a在刀具的圆柱坐标系下的变换坐标,如图7所示,设坐标系X2Y2Z2表示a′的三个自由度的旋转,则再进行三个自由度的平移变换得到a″:
a″=a′+o1-o2
a″作为进行相交计算的输入线段的一个端点经行相交点的计算,线段的另一个端点也作同样的旋转和平移变换;
3、对线段和圆柱体进行相交点的计算:如图8所示,对线段和圆柱体的相交点,A,B是工件十字网格表面的某两个点,A在圆柱体外部,B在圆柱体内部,经旋转平移变换后得到图9,设A(xA,yA,zA),B(xB,yB,zB);定义方向向量
且交点C又满足圆柱体的曲面的方程:
x2+y2=R2
代入t的参数方程,得到:
求解参数t后得到交点C的坐标;
4、求解相交环链片段:利用前三个步骤的计算方法得到了相交环链片段上的一个交点,之后重复该计算方法,查找已知包围环链节点的相邻节点,求出新的包围环链节点和相交环链片段节点,基于十字网格相邻点求得工件上一个面的相交环链片段;
进一步,计算工件与圆柱体的闭合相交环链,利用排序算法连接所有的环链片段两端的端点,构建一个完整的由相交环链片段构成的相交环链:利用排序算法求所有环链片段的端点与其他环链片段端点之间的距离,如图10(a)所示,将最小距离的环链片段之间的两个端点相连,分别求出图10(a)中环链片段1的两个端点ab与其他环链片段的端点的距离,将最小距离的两个端点相互连接,即连接a与l,b与c,重复该步骤,直到所有环链片段构成相交环链,如图10(b)所示;
步骤4,将相交环链映射为相交面,将相交环链的节点坐标值对应到曲面二维数组和端面二维数组上的地址值,快速映射二维数组闭合环链片段,拼接曲面和端面的二维数组闭合环链片段,构建二维数组闭合环链,如图11所示,环链a-m对应映射后的二维数组闭合环链;
无论在曲面上或是端面上都会θ=0°与θ=360°的两个数组边界线处产生隔断的现象,如图12所示,环链片段a-f在θ=0°边缘的右侧映射了一条映射环链片段,在θ=360°左侧也映射了一条映射环链片段g-n,如果不对这种隔断的环链进行处理,那么就无法生成正确的相交面。因此,本文提出把二维数组对应的十字网格链表的θ=0°与θ=360°左右相连的方法,使得算法在识别相交面时,对图12所示的情况得到正确的识别,当进行相交面的标记遍历时,能够像图11一样识别出相交面的网格点;
步骤5,基于DDA插补法和射线法优化相交面,采用广度优先遍历的方法在二维数组对应的圆柱体的十字网格邻接表进行遍历,就能构造相交面;在遍历圆柱体的十字网格邻接表时,要根据不同的相交面在数组上的分布情况分别进行处理;
如图13所示,(a)是基于STL模型的圆柱体布尔求差运算算法进行的圆柱体曲面在一个六棱锥工件上进行求差计算的测试效果图,(b)是针对图(a)中圆柱体曲面对应二维数组在经过广度优先遍历后的输出图,0表示非相交面的网格点,1表示相交面的网格点。由于隔断现象,圆柱体曲面的二维数组上利用映射环链片段构造相交面时,由于映射环链穿过了θ=0°与θ=360°边缘,如果利用广度优先遍历标记出相交面的网格节点时,只能在二维数组上构造出一个区域,使得相交面丢失了另一个部分,本文在之前构造相交环链时已经提出了将二维数组θ=0°与θ=360°的边缘部分左右互连的解决方法,这使得在进行广度优先遍历时,算法一样可以遍历到两个部分的网格点;
如图14所示,(a)是基于STL模型的圆柱体布尔求差运算算法进行的圆柱体端面在一个六棱锥上进行求差计算的测试效果图,(b)是针对图(a)中圆柱体端面对应二维数组在经过相交环链映射后的映射环链的输出图,0表示非相交面的网格点,1表示映射环链的网格点。由于端面二维数组上产生了左右首尾衔接的映射环链,射线法无法从图中标记出正确的内部网格节点,如图15所示的首尾衔接映射环链判断流程图说明了如何在端面的二维数组上判断当前的映射环链是否是首尾衔接的情况,若是,那么在进行广度优先遍历时输入的起始点默认为(0,0)点;
圆柱体的二维数组由曲面数组和端面数组组成,它们与工件表面的相交也有可能会产生如图16所示的情况,(a)是基于STL的圆柱体布尔求差算法进行的圆柱体端面和曲面在一个六棱锥上进行求差计算的测试效果图,(b)和(c)是针对图(a)中圆柱体曲面和端面对应二维数组在经过相交环链映射后的映射环链的输出图,0表示非相交面的网格点,1表示映射环链的网格点。从图16的(b)和(c)可以看出,映射环链分布在曲面数组和端面数组上,在进行环链的插补时,这种环链同时分布在两个数组上的情况也要加以判断,否则就会产生不连续的映射环链,基于STL的模型的圆柱体布尔求差算法根据这种包围环链在两个端面不同分布情况设计出了对应的算法进行包围环链的插补,流程图如图17所示,遍历相交环链上的节点,若相交环链没有遍历完,则映射相交环链节点为包围环链节点,判断当前映射的包围环链节点是否在曲面数组上,若当前映射的包围环链节点在曲面数组上,则判断上一个包围环链节点是否在曲面数组上,若上一个包围环链节点在曲面数组上,则在曲面数组上进行包围环链的插补;若上一个包围环链节点不在曲面数组上,则从曲面到端面进行包围环链的插补;若当前映射的包围环链节点不在曲面数组上,则判断上一个包围环链节点是否在端面数组上;若上一个包围环链节点在端面数组上,则从端面到曲面进行包围环链的插补;若上一个包围环链节点不在端面数组上,则在端面数组上进行包围环链的插补;
步骤6,基于广度优先遍历的方法删除工件表面上的多余点,基于网格伸缩法提高工件十字形网格表面的边沿精度,基于广度优先遍历查找工件表面的包围环链:
包围环链是位于工件十字网格的包围相交环链的节点的集合,包围环链也是闭合的环链,在工件的某些个表面上存在,在步骤3计算相交面时已经计算出来,包围环链用查找工件十字网格上的位于圆柱体内部的节点,所以包围环链十分重要,但是包围环链的计算会存在多条环链片段拼接的现象,如图18所示,其展示了工件表面的一个面的十字网格节点,网格节点中存在包围环链片段a-i和包围环链片段j-p,这两条包围环链片段无法被相交测试算法同时计算出来,因为相交环链的算法基于网格中的相交环链是连续的特征进行遍历的,所以相交环链的遍历按照节点的拓扑顺序进行计算,如图18中,当c点是当前计算出来的包围环链片段上的节点时,那么下一个被遍历到的包围环链上的b或d,所以当当前的包围环链不连续时,相交算法无法得到另外一条环链片段,即无法由包围环链片段a-i计算得到j-p。
为了解决包围环链片段存在多条的问题,本发明提出了基于广度优先遍历的包围环链查找算法,流程如图19所示,遍历工件表面十字网格节点,判断当前节点是否包围环链节点,若当前节点不包围环链节点,则继续遍历工件表面十字网格节点;若当前节点包围环链节点,则基于当前的包围环链节点查找该节点的相邻的包围环链节点,判断相邻节点是否满足包围环链节点的条件,若满足条件,则继续基于当前的包围环链节点查找该节点的相邻的包围环链节点;若不满足条件,则将生成的包围环链片段加入栈中,查找单个位于圆柱体内部的网格节点,广度优先遍历该节点周围的网格节点,判断遍历是否完成,若已完成,则结束;若未完成,则判断当前节点是否满足包围环链的条件,若不满足,则重复广度优先遍历该节点周围的网格节点步骤;若满足,则判断当前节点是否未被标记为包围环链,若未被标记,则重复广度优先遍历该节点周围的网格节点步骤,若已被标记,则重复基于当前的包围环链节点查找该节点的相邻的包围环链节点,判断相邻节点是否满足包围环链节点的条件步骤,直至遍历完成,结束该流程。查找算法的主要思路是在工件的当前表面上查找到一条包围环链片段后,对十字网格上位于圆柱体内部的节点经行广度优先遍历进行查找,当查找到一个节点满足包围环链的条件且不是已经标记为包围环链片段节点时,就找到了新的包围环链片段,计算新的包围环链派片段,重复上述过程,直到找不到未被标记为环链片段的十字网格节点。
所述步骤1中,对工件表面进行十字形网格划分,选取网格节点的上下左右四个方向和依据空间向量的叉乘公式:
该公式作为最后输出STL模型的法向量的依据。
所述步骤3中,为了避免遍历工件表面的所有十字网格节点,本发明采用一种通过递归求取环链节点相邻网格点的方法对第一个遍历到的环链节点进行递归计算,每次递归得到的网格节点都是环链上的节点,直至递归到环链片段的端点结束递归;与此同时,考虑到圆柱体与工件某个表面可能会存在多个间断的交线,本文在上述的删除算法基础上提出一个基于广度优先遍历和迭代的方法查找多个可能存在的相交线。
所述步骤5中,通过遍历二维数组闭合环链,环链上的节点对应相交面的边沿点,根据网格伸缩法修改边沿点坐标为相交环链的坐标,提高相交面的边沿精度。
所述步骤6中,根据网格伸缩法修改工件表面包围环链节点坐标为相交环链上求出的交点值,提高工件十字网格表面的边沿精度。
以下通过算法效率测试和算法精度测试所得数据与传统布尔运算所得数据进行对比,直观地体现出本发明的有益效果:
算法效率测试:
1、圆柱体端面与曲面的布尔求差运算,工件表面三角形数363258个,顶点数1089774个,运算时间14.900ms,如图20中的(a)所示;
2、圆柱体曲面的布尔求差运算,工件表面三角形数262124个,顶点数1086372个,运算时间10.963ms,如图20中的(b)所示;
3、圆柱体端面的布尔求差运算,工件表面三角形数371156个,顶点数1113468个,运算时间12.009ms,如图20中的(c)所示;
4、将本发明提出的一种基于STL模型的圆柱体布尔求差运算方法与当前开源的图形计算库的布尔计算方法比较,如图21所示,分别对比了时间性能和各自处理的三角形数量,得出本发明的运算方法的时间性能至少高于传统的布尔运算约2800倍。
算法精度测量:利用UG12软件的偏差测量工具测量相交曲面的误差:
UG12的建模精度最高为1E-06mm,首先设置UG12建模精度为1E-06mm,然后建立六棱锥的模型,生成圆柱体模型并对六棱锥进行求差计算,生成了精度为1E-06mm的交面,本发明的计算重点在于生成相交面,同时为了减少导入STL模型的时间,采取仅测量相交面的方法计算误差,其中圆柱刀具的三角形数量为20520个,将算法生成的相交面STL模型导入UG工程,误差测量如下所示:
1、设置正向外公差2E-06mm,正向内公差1E-06mm,负向内公差-1E-06mm,负向外公差-2E-06mm,测量结果显示不超过外公差的样本占77.8%,如图22(a)所示;
2、设置正向外公差3E-06mm,正向内公差1E-06mm,负向内公差-1E-06mm,负向外公差-3E-06mm,测量结果显示不超过外公差的样本占100%,如图22(b)所示;
3、设置正向外公差2E-06mm,正向内公差1E-06mm,负向内公差-1E-06mm,负向外公差-2E-06mm,测量结果显示不超过外公差的样本占94.38%,如图22(c)所示;
4、设置正向外公差3E-06mm,正向内公差1E-06mm,负向内公差-1E-06mm,负向外公差-3E-06mm,测量结果显示不超过外公差的样本占100%,如图22(d)所示。
由此可得,基于UG的1E-06mm误差,本发明的运算误差不超过4E-06mm。
综合以上,本发明提供一种基于STL模型的圆柱体布尔求差运算方法,该方法基于圆柱体模型和工件表面网格点进行相交性计算,采用链式邻接表的储存结构,其包括如下步骤:获取工件十字网格模型;基于链式邻接表构建圆柱体曲面和端面的二维数组十字网格模型;计算工件与圆柱体的相交环链;将相交环链映射为相交面;基于DDA插补法和射线法优化相交面;基于广度优先遍历法删除工件表面多余节点。本发明的运算方法遍历方法简单,增删操作灵活,减少了不必要的内存空间占用,适合十字网格模型,计算方法简单,耗时短,同时对布尔求差运算时产生的二维数组闭合环链进行了优化。
以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。
Claims (8)
1.一种基于STL模型的圆柱体布尔求差运算方法,其特征在于包括如下步骤:
步骤1,获取工件十字网格模型;
步骤2,基于链式邻接表构建圆柱体曲面和端面的二维数组十字网格模型;
步骤3,计算工件与圆柱体的相交环链;
步骤4,将相交环链映射为相交面;
步骤5,基于DDA插补法和射线法优化相交面;
步骤6,基于广度优先遍历法删除工件表面多余节点。
2.如权利要求1所述的方法,其特征在于:所述步骤1的具体内容是,对工件表面进行十字形网格划分,选取网格节点的上下左右四个方向和依据空间向量的叉乘公式,获取工件十字网格模型。
3.如权利要求1所述的方法,其特征在于:所述步骤2中,将圆柱体构造为两个二维数组十字网格模型,其中:
构建圆柱体曲面二维数组十字网格模型的具体过程是,将曲面中心圆的圆周角作为二维数组的x轴地址值;将空间中的点投影到端面圆的法向量方向上,端面圆心点到该法向量方向上的投影点的距离值为二维数组的y轴地址值,将(x,y)作为二维数组的地址值;
构建圆柱体端面二维数组十字网格模型的具体过程是,将端面中心圆的圆周角作为二维数组的x轴地址值,将端面上的点到中心圆圆心的距离值作为二维数组的y轴地址值,将(x,y)作为端面二维数组的地址值,基于链式邻接表遍历曲面和端面的十字网格模型,构建圆柱的端面和曲面的二维数组。
4.如权利要求1所述的方法,其特征在于:所述步骤3的具体过程是,计算工件表面所有的环链片段,若工件十字网格表面节点在圆柱体的外部,且它的任意一个相邻表面节点在圆柱的内部,那么这两个点构成的线段与圆柱体的交点就作为环链上的一个点加入存储环链片段的交点环链栈中;对所述线段和圆柱体进行相交点的计算,得到相交环链片段,将距离最小的环链片段间的两个端点连接,循环此过程,直到生成一条完整的由相交环链片段构成的相交环链。
5.如权利要求3所述的方法,其特征在于:所述步骤4的具体内容是,将相交环链的节点坐标值对应到曲面二维数组和端面二维数组上的地址值,快速映射二维数组闭合环链片段,拼接曲面和端面的二维数组闭合环链片段,构建二维数组闭合环链。
6.如权利要求1所述的方法,其特征在于:所述步骤5中,基于DDA插补法优化相交面的具体内容是,基于DDA插补的方法对二维数组闭合环链上不连续的两个节点进行插补优化;当检查到端面二维数组与曲面二维数组之间存在连续的环链时,基于DDA插补进行跨数组的插补优化。
7.如权利要求1所述的方法,其特征在于:所述步骤5中,基于射线法优化相交面的具体内容是,在端面二维数组和曲面的二维数组上通过射线法求出位于二维数组闭合环链内部的某个节点,再利用广度优先遍历标记位于二维数组闭合环链内部的节点,将所有标记的内部节点复制到工件表面。
8.如权利要求1所述的方法,其特征在于:所述步骤6中,工件表面多余节点是指工件表面上被包围在圆柱体内部的节点,具体过程是,在工件的当前表面上查找到一条包围环链片段后,所述包围环链是位于工件模型上的节点的集合,是在计算相交环链节点时额外计算出的数据,用来删除工件表面多余的节点;对十字网格上位于圆柱体内部的节点进行广度优先遍历进行查找,当查找到一个节点满足包围环链的条件且不是已经标记为包围环链片段节点时,即找到了新的包围环链片段,计算新的包围环链片段,重复此过程,直到找不到未被标记为环链片段的十字网格节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211649874.0A CN115859524B (zh) | 2022-12-21 | 2022-12-21 | 一种基于stl模型的圆柱体布尔求差运算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211649874.0A CN115859524B (zh) | 2022-12-21 | 2022-12-21 | 一种基于stl模型的圆柱体布尔求差运算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115859524A true CN115859524A (zh) | 2023-03-28 |
CN115859524B CN115859524B (zh) | 2023-08-22 |
Family
ID=85674927
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211649874.0A Active CN115859524B (zh) | 2022-12-21 | 2022-12-21 | 一种基于stl模型的圆柱体布尔求差运算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115859524B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117349914A (zh) * | 2023-12-06 | 2024-01-05 | 南京信息工程大学 | 一种基于环绕数的布尔运算方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510225A (zh) * | 2009-03-26 | 2009-08-19 | 山东理工大学 | 产品stl模型布尔运算方法 |
US20120166160A1 (en) * | 2009-06-24 | 2012-06-28 | China National Petroleum Corporation | Block model constructing method for complex geological structures |
CN105022865A (zh) * | 2015-06-30 | 2015-11-04 | 西安交通大学 | 一种基于stl模型布尔运算的飞机油箱内表面模型提取方法 |
CN113947661A (zh) * | 2021-09-28 | 2022-01-18 | 江苏大学 | 基于水弹折纸衍生结构拟合广义圆柱体曲面的建模方法 |
CN115270500A (zh) * | 2022-08-10 | 2022-11-01 | 南京信息工程大学 | 一种布尔求差运算方法、装置及电子设备 |
-
2022
- 2022-12-21 CN CN202211649874.0A patent/CN115859524B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510225A (zh) * | 2009-03-26 | 2009-08-19 | 山东理工大学 | 产品stl模型布尔运算方法 |
US20120166160A1 (en) * | 2009-06-24 | 2012-06-28 | China National Petroleum Corporation | Block model constructing method for complex geological structures |
CN105022865A (zh) * | 2015-06-30 | 2015-11-04 | 西安交通大学 | 一种基于stl模型布尔运算的飞机油箱内表面模型提取方法 |
CN113947661A (zh) * | 2021-09-28 | 2022-01-18 | 江苏大学 | 基于水弹折纸衍生结构拟合广义圆柱体曲面的建模方法 |
CN115270500A (zh) * | 2022-08-10 | 2022-11-01 | 南京信息工程大学 | 一种布尔求差运算方法、装置及电子设备 |
Non-Patent Citations (3)
Title |
---|
刘冰 等: "STL模型布尔运算交线链和交线环提取算法", 《华中科技大学学报》 * |
苗盈: "基于STL模型的数控加工仿真关键技术研究", 《中国博士学位论文全文数据库工程科技Ⅰ辑》 * |
陈学工;马金金;邱华;付金华;肖克炎;: "三维网格模型的稳定布尔运算算法", 计算机应用, no. 05 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117349914A (zh) * | 2023-12-06 | 2024-01-05 | 南京信息工程大学 | 一种基于环绕数的布尔运算方法 |
CN117349914B (zh) * | 2023-12-06 | 2024-03-08 | 南京信息工程大学 | 一种基于环绕数的布尔运算方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115859524B (zh) | 2023-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110516388B (zh) | 基于调和映射的曲面离散点云模型环切刀轨生成方法 | |
CN100468418C (zh) | 由边界表示数据生成体数据的方法及其程序 | |
US7557803B2 (en) | Method, computer program product and data structure for representing two- or three-dimensional object modeling | |
CN107622530B (zh) | 一种高效鲁棒的三角网切割方法 | |
CN115859524A (zh) | 一种基于stl模型的圆柱体布尔求差运算方法 | |
CN115564925A (zh) | 基于B-rep模型和笛卡尔网格切片的网格生成方法 | |
CN115270500A (zh) | 一种布尔求差运算方法、装置及电子设备 | |
CN118071960B (zh) | 面向半导体器件模拟的八叉树网格加密和生成方法 | |
US7333104B2 (en) | Method and program of converting three-dimensional shape data into cell internal data | |
CN105894553B (zh) | 一种基于格栅选择的街巷空间形态布局方法 | |
CA3037575A1 (en) | Geometric modelling for facilitating simulation for manufacturing operations | |
CN107610229A (zh) | 基于启发式包络侵蚀的三维建筑物模型自动修复方法 | |
CN112734934A (zh) | 一种基于相交边映射的stl模型3d打印切片方法 | |
JPH03259307A (ja) | 自由曲面加工データ作成方法 | |
Wilson et al. | Parallel adaptive tetrahedral mesh generation by the advancing front technique | |
Patel et al. | Stitching and filling: Creating conformal faceted geometry | |
Abt et al. | Domain preparation for RANSE simulations about hull and appendage assemblies | |
CN117349914B (zh) | 一种基于环绕数的布尔运算方法 | |
CN117934751B (zh) | 一种三维隧道模型的构建方法、装置、设备及介质 | |
CN110868325B (zh) | 一种可降低刚度矩阵构建难度的均匀网格划分方法 | |
Frischmann | Topological and geometric healing on solid models | |
Sun et al. | An automatic method for complete triangular mesh conversion into quadrilateral mesh for multiple domain geometry | |
Lo | Analysis and verification of the boundary surfaces of solid objects | |
Makhanov | Space-filling curves in adaptive curvilinear coordinates for computer numerically controlled five-axis machining | |
Chen et al. | Geometrical Description and Discretization of Hydraulic Structures |
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 |