CN110544255B - 面向3d打印的三角网格孔洞的分割方法及系统 - Google Patents
面向3d打印的三角网格孔洞的分割方法及系统 Download PDFInfo
- Publication number
- CN110544255B CN110544255B CN201910680920.5A CN201910680920A CN110544255B CN 110544255 B CN110544255 B CN 110544255B CN 201910680920 A CN201910680920 A CN 201910680920A CN 110544255 B CN110544255 B CN 110544255B
- Authority
- CN
- China
- Prior art keywords
- hole
- triangular
- patch
- holes
- line
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/11—Region-based segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/187—Segmentation; Edge detection involving region growing; involving region merging; involving connected component labelling
Landscapes
- Engineering & Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
本公开公开了面向3D打印的三角网格孔洞的分割方法及系统,对输入的三角网格模型进行预处理;根据预处理得到的三角网格模型,获取三角形面片与三角形面片所邻接的边之间的连接关系,获取三角形面片的顶点与顶点所邻接的边之间的连接关系;根据三角网格模型的面与边的连接关系,获取三角网格模型的所有单连通区域;将每个单连通区域视为一个部件;对每个部件查找自由边,根据边与点之间的连接关系,将所有的自由边首尾连接,得到孔洞线;获得所有孔洞的基本信息,包括孔洞线、孔洞方向、孔洞与部件之间的关联关系;根据每个孔洞的基本信息,将孔洞划分为单孔洞和连续套洞;将连续套洞分割为单孔洞。
Description
技术领域
本公开涉及3D打印技术领域,特别是涉及面向3D打印的三角网格孔洞的分割方法及系统。
背景技术
本部分的陈述仅仅是提到了与本公开相关的背景技术,并不必然构成现有技术。
三角网格是一种应用非常广泛的几何模型表达形式,在逆向工程、有限元分析、计算机动画、医学影像三维重建、3D打印等领域有着非常广泛的应用。在网格模型的获取过程中,往往会产生一些不希望出现的孔洞,这些孔洞的出现一方面影响了模型的外观,另一方面也不利于许多后续处理的进行。在复杂扫描的三角网格模型中,孔洞的识别和修复是模型封装、计算、打印等可用性的基础。
在实现本公开的过程中,发明人发现现有技术中存在以下技术问题:
目前三角网格孔洞的识别和修复算法多将孔洞作为单一类型的单孔洞进行处理,大多研究或文献关注单孔洞的修复算法,没有考虑孔洞的几何形态以及相关孔洞之间的拓扑关系,模型可能存在非单孔洞的情况,因而导致模型的拓扑关系发生变化,或产生新的错误。因此,为减少模型拓扑关系的变化以及相应的错误,对三角网格孔洞进行细致分割是进行孔洞修复和3D打印的关键。
发明内容
为了解决现有技术的不足,本公开提供了面向3D打印的三角网格孔洞的分割方法及系统;
第一方面,本公开提供了面向3D打印的三角网格孔洞的分割方法;
面向3D打印的三角网格孔洞分割方法,包括:
对输入的用于3D打印的三角网格模型进行预处理;
根据预处理得到的三角网格模型,获取三角形面片与三角形面片所邻接的边之间的连接关系,获取三角形面片的顶点与顶点所邻接的边之间的连接关系;
根据三角网格模型的面片与边的连接关系,获取三角网格模型的所有单连通区域;将每个单连通区域视为一个部件;
对每个部件查找自由边,根据边与顶点之间的连接关系,将所有的自由边首尾连接,得到孔洞线;获得所有孔洞的基本信息,包括孔洞线、孔洞方向、孔洞与部件之间的关联关系;
根据每个孔洞的基本信息,将孔洞划分为单孔洞和连续套洞;
将连续套洞分割为单孔洞。
第二方面,本公开还提供了面向3D打印的三角网格孔洞的分割系统;
面向3D打印的三角网格孔洞分割系统,包括:
预处理模块,其被配置为:对输入的用于3D打印的三角网格模型进行预处理;
连接关系获取模块,其被配置为:根据预处理得到的三角网格模型,获取三角形面片与三角形面片所邻接的边之间的连接关系,获取三角形面片的顶点与顶点所邻接的边之间的连接关系;
单连通区域获取模块,其被配置为:根据三角网格模型的面片与边的连接关系,获取三角网格模型的所有单连通区域;将每个单连通区域视为一个部件;
孔洞线获取模块,其被配置为:对每个部件查找自由边,根据边与顶点之间的连接关系,将所有的自由边首尾连接,得到孔洞线;获得所有孔洞的基本信息,包括孔洞线、孔洞方向、孔洞与部件之间的关联关系;
划分模块,其被配置为:根据每个孔洞的基本信息,将孔洞划分为单孔洞和连续套洞;
分割模块,其被配置为:将连续套洞分割为单孔洞。
第三方面,本公开还提供了一种电子设备,包括存储器和处理器以及存储在存储器上并在处理器上运行的计算机指令,所述计算机指令被处理器运行时,完成第一方面所述方法的步骤。
第四方面,本公开还提供了一种计算机可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时,完成第一方面所述方法的步骤。
与现有技术相比,本公开的有益效果是:
本公开将孔洞按照拓扑关系划分为单孔洞和连续套洞;根据拓扑关系,将连续套洞又分割为单孔洞。通过孔洞的分割,为孔洞的分类识别和针对性修复奠定基础,以达到获取较好修复效果的目的。
本公开重点是提出一种系统的实用性较强的三角网格孔洞的分割方法,通过三角网格孔洞的分割,将复杂模型孔洞分割为简单的单孔洞。其中,连续套洞的细致分割为本发明的独特之处。
附图说明
构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1为本公开第一个实施例的方法流程图;
图2为本公开第一个实施例的将模型划分为单连通区域的流程图;
图3为本公开第一个实施例的构建孔洞线的流程图;
图4为本公开第一个实施例的连续套洞的示意图;
图5为本公开第一个实施例的连续套洞的识别流程;
图6为本公开第一个实施例的连续套洞的分割流程图。
具体实施方式
应该指出,以下详细说明都是示例性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
在增材制造中,要求三角网格模型是封闭的,但在其创建和编辑过程中,可能存在面片丢失或拓扑错误,导致模型产生孔洞。因此,本公开针对模型孔洞的不同形态,对孔洞进行检测和分割,保证三角网格模型的孔洞识别更加准确,为模型的修复奠定基础。其步骤包括:根据输入模型数据,快速建立模型的面片、边和顶点的拓扑结构;根据边与面片的连接关系,获取模型中存在的所有孔洞;根据拓扑特点,将孔洞分为连续套洞和单孔洞;根据拓扑关系,继续将连续套洞分割为单孔洞。该方法可以准确的识别三角网格模型中的各种孔洞,并为进一步的模型修复提供拓扑正确、孔洞区域曲率连续的原始三角网格模型。
本公开要解决的技术问题是在3D打印中,要求输入的模型必须封闭,孔洞全部正确填充,而现有三角网格的孔洞识别和修复算法中未对各类孔洞,特别是复杂孔洞进行分割,从而导致模型自动修复效果不理想的问题,提出一种对三角网格模型的孔洞进行检测和分割的算法。
获取输入模型,解析三角网格模型数据,以不重复的点坐标和三角面片点索引的形式表达三角网格模型;根据三角网格的面片点索引,快速建立模型的面片、边和顶点的拓扑结构;根据边与面片的连接关系,查找三角网格模型中的重复面片和退化面片,删除退化面片和重复面片;根据三角网格模型的边与面的拓扑结构,采用区域生长方法,将模型分割为互不关联的单连通区域,称为部件;对每个部件查找自由边,将所有的自由边,根据边与点的拓扑关系,构建孔洞线,从而获取模型中存在的所有孔洞信息,所述孔洞信息包含孔洞线、孔洞方向、孔洞与部件的关联关系;识别孔洞类型,将孔洞按照拓扑连接形态,划分为单孔洞和连续套洞;根据拓扑关系和位置关系,将连续套洞分割为单孔洞。
本公开的第一个实施例,提供了面向3D打印的三角网格孔洞分割方法;
面向3D打印的三角网格孔洞分割方法,如图1所示,包括:
S1:对输入的用于3D打印的三角网格模型进行预处理;
S2:根据预处理得到的三角网格模型,获取三角形面片与三角形面片所邻接的边之间的连接关系,获取三角形面片的顶点与顶点所邻接的边之间的连接关系;
S3:根据三角网格模型的面片与边的连接关系,获取三角网格模型的所有单连通区域;将每个单连通区域视为一个部件;
S4:对每个部件查找自由边,根据边与点之间的连接关系,将所有的自由边首尾连接,得到孔洞线;获得所有孔洞的基本信息,包括孔洞线、孔洞方向和孔洞与部件之间的关联关系;
S5:根据每个孔洞的基本信息,将孔洞划分为单孔洞和连续套洞;
S6:将连续套洞分割为单孔洞。
作为一种或多种实施例,所述对输入的用于3D打印的三角网格模型进行预处理,包括:
识别三角网格模型的退化三角形面片和重复三角形面片;
对退化三角形面片和重复三角形面片,进行删除。
应理解的,所述退化三角形面片,是指至少有两点相同或三点共线的面片。
应理解的,所述重复三角形面片,是指三角形面片的面索引与其余三角形面片的面索引相同且方向相同。
具体的,识别退化三角形面片的具体步骤:判断当前三角形面片的三个顶点的索引是否存在相同索引,如果存在相同索引,则表示当前三角形面片为退化三角形面片;或者,判断当前三角形面片的面积是否为零,如果为零,则表示当前三角形面片为退化三角形面片。
具体的,识别重复三角形面片的具体步骤:判断当前三角形面片的面索引与其余三角形面片的面索引是否相同,如果相同,则表示当前三角形面片为重复三角形面片。
作为一种或多种实施例,如图2所示,根据三角网格模型的面片与边的连接关系,获取三角网格模型的所有单连通区域的具体步骤包括:
S301:标记所有三角形面片为未访问状态;
S302:从所有未访问状态的三角形面片中,随机找出一个三角形面片,选择三角形面片中的任意一条边为种子边,将种子边添加到种子边集合中;
S303:从种子边集合中取出一条种子边,找出与当前种子边连接的处于未访问状态的面片,将找出的面片加入到当前面片集合中,标记找出的面片的状态为已访问,并将已访问的面片与种子边不同的边添加到种子边集合中;
S304:判断种子边集合是否为空,如果是,则当前面片集合是一个单连通区域,定义为一个部件,部件数量加1,进入S305;如果否,则返回S303;
S305:判断所有面片是否均已经被访问,如果是,就输出部件数量和每一部件的三角面片集合,且将每个部件视为一个单连通区域;如果否,则返回S302。
作为一种或多种实施例,对每个部件查找自由边,自由边是指仅连接一个面片的边;孔洞线是在保持原始三角网格模型拓扑关系的基础上,将每个部件自由边的首尾连接,形成的闭合线。
作为一种或多种实施例,如图3所示,对每个部件查找自由边,根据边与点之间的连接关系,将所有的自由边首尾连接,得到孔洞线;具体步骤包括:
S401:创建初始空边界集合,根据部件中三角形面片的顺序,获取每个三角形面片的每一条边;
S402:判断边界集合中是否存在所获取的边;如果存在,则执行S404,否则执行S403;
S403:将边添加到边界集合中,继续执行S405;
S404:将边在边界集合中删除,继续执行S405;
S405:是否遍历完当前部件中的所有面片;如果是,继续执行S406;如果否,重复执行S401;
S406:计算边界集合中的所有点和边的连接关系;
S407:将所有边界首尾相连接,组成边界,即孔洞线,结束。
作为一种或多种实施例,连续套洞的示意图如图5所示,连续套洞的识别流程如图5所示,单孔洞和连续套洞的划分具体步骤包括:
S501:查找每个部件的所有的自由边;
S502:获取自由边中的所有点与边的连接关系;
S503:从索引最小的点开始,根据点与边的连接关系,查找闭合边界线;
S504:判断闭合边界线是否存在重复点,如果否,继续执行S505;如果是,继续执行S506;
S505:不是连续套洞,结束;
S506:是连续套洞,输出边界信息,结束。
作为一种或多种实施例,如图6所示,连续套洞分割为单孔洞的具体步骤包括:
S601:检测连续套洞边界;
例如图4中的边界为P1-P3-A-P4-P6-B-P8-P7-B-P5-P2-A-P1,识别出相同的面片点索引,即为重复点。例如图4中的A、B两点;
S602:根据连续套洞的重复点,将连续套洞内部区域分割为若干个独立的孔;
例如图4中连续套洞边界,分割成三个单独的孔,分别为P1-P3-A-P1、A-P4-P6-B-P5-P2-A和B-P8-P7-B;
S603:将孔洞线上的点投影到平面上,根据点与多边形的内外关系,计算各个孔洞的内外位置关系;如果某一孔洞L1的点均在另一孔洞L2外部,则认为是L1在L2外;
S604:如果一条孔洞线不在任一个孔洞线内部,则该孔洞线为外部孔,如果一条孔洞线在某一个孔洞线内部,则该孔洞线为内部孔。如果外部孔不包含内部孔,则继续执行S607;否则,继续执行S605;
S605:对于包含内部孔的外部孔,查找孔洞线中的重复点,计算重复点和重复点连接的其他孔洞的下一索引点连线与重复点和当前孔洞线的前一索引点连线的夹角,选择夹角最小的一索引点作为新的边界点;
S606:从新的边界点开始,将内部孔上的点按照边界上的连接顺序全部插入外部孔的边线中,合并孔洞外边线和内边线;
图4中,A-P4-P6-B-P5-P2-A内部包含了P1-P3-A-P1,将两条边界线合并为P2-A-P1-P3-P4-P6-B-P5-P2;
S607:直接作为一个单孔洞输出。
图4中的连续套洞分割后为两个孔,分别为P2-A-P1-P3-P4-P6-B-P5-P2和B-P8-P7-B。
实施例二,本实施例还提供了面向3D打印的三角网格孔洞的分割系统;
面向3D打印的三角网格孔洞分割系统,包括:
预处理模块,其被配置为:对输入的用于3D打印的三角网格模型进行预处理;
连接关系获取模块,其被配置为:根据预处理得到的三角网格模型,获取三角形面片与三角形面片所邻接的边之间的连接关系,获取三角形面片的顶点与顶点所邻接的边之间的连接关系;
单连通区域获取模块,其被配置为:根据三角网格模型的面片与边的连接关系,获取三角网格模型的所有单连通区域;将每个单连通区域视为一个部件;
孔洞线获取模块,其被配置为:对每个部件查找自由边,根据边与顶点之间的连接关系,将所有的自由边首尾连接,得到孔洞线;获得所有孔洞的基本信息,包括孔洞线、孔洞方向、和孔洞与部件之间的关联关系;
划分模块,其被配置为:根据每个孔洞的基本信息,将孔洞划分为单孔洞和连续套洞;
分割模块,其被配置为:将连续套洞分割为单孔洞。
实施例三,本实施例还提供了一种电子设备,包括存储器和处理器以及存储在存储器上并在处理器上运行的计算机指令,所述计算机指令被处理器运行时,完成方法中的各个操作,为了简洁,在此不再赘述。
所述电子设备可以是移动终端以及非移动终端,非移动终端包括台式计算机,移动终端包括智能手机(Smart Phone,如Android手机、IOS手机等)、智能眼镜、智能手表、智能手环、平板电脑、笔记本电脑、个人数字助理等可以进行无线通信的移动互联网设备。
应理解,在本公开中,该处理器可以是中央处理单元CPU,该处理器还算可以是其他通用处理器、数字信号处理器DSP、专用集成电路ASIC,现成可编程门阵列FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
该存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据、存储器的一部分还可以包括非易失性随机存储器。例如,存储器还可以存储设备类型的信息。
在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本公开所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器、闪存、只读存储器、可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元即算法步骤,能够以电子硬件或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其他的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能的划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外一点,所显示或讨论的相互之间的耦合或者直接耦合或者通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、机械或其它的形式。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (5)
1.面向3D打印的三角网格孔洞分割方法,其特征是,包括:
S1:对输入的用于3D打印的三角网格模型进行预处理;
所述对输入的用于3D打印的三角网格模型进行预处理,包括:
识别三角网格模型的退化三角形面片和重复三角形面片;
对退化三角形面片和重复三角形面片,进行删除;
所述退化三角形面片,是指至少有两点相同或三点共线的面片;
所述重复三角形面片,是指三角形面片的面索引与其余三角形面片的面索引相同且方向相同;
所述识别退化三角形面片的具体步骤:判断当前三角形面片的三个顶点的索引是否存在相同索引,如果存在相同索引,则表示当前三角形面片为退化三角形面片;或者,判断当前三角形面片的面积是否为零,如果为零,则表示当前三角形面片为退化三角形面片;
所述识别重复三角形面片的具体步骤:判断当前三角形面片的面索引与其余三角形面片的面索引是否相同,如果相同,则表示当前三角形面片为重复三角形面片;
S2:根据预处理得到的三角网格模型,获取三角形面片与三角形面片所邻接的边之间的连接关系,获取三角形面片的顶点与顶点所邻接的边之间的连接关系;
S3:根据三角网格模型的面片与边的连接关系,获取三角网格模型的所有单连通区域;将每个单连通区域视为一个部件;
S4:对每个部件查找自由边,根据边与点之间的连接关系,将所有的自由边首尾连接,得到孔洞线;获得所有孔洞的基本信息,包括孔洞线、孔洞方向和孔洞与部件之间的关联关系;
所述对每个部件查找自由边,根据边与点之间的连接关系,将所有的自由边首尾连接,得到孔洞线;具体步骤包括:
S401:创建初始空边界集合,根据部件中三角形面片的顺序,获取每个三角形面片的每一条边;
S402:判断边界集合中是否存在所获取的边;如果存在,则执行S404,否则执行S403;
S403:将边添加到边界集合中,继续执行S405;
S404:将边在边界集合中删除,继续执行S405;
S405:是否遍历完所有面片;如果是,继续执行S406;如果否,重复执行S401;
S406:计算边界集合中的所有点和边的连接关系;
S407:将所有边界首尾相连接,组成边界,即孔洞线,结束;
S5:根据每个孔洞的基本信息,将孔洞划分为单孔洞和连续套洞;
所述单孔洞和连续套洞的划分具体步骤包括:
S501:查找每个部件的所有的自由边;
S502:获取自由边中的所有点与边的连接关系;
S503:从索引最小的点开始,根据点与边的连接关系,查找闭合边界线;
S504:判断闭合边界线是否存在重复点;如果否,继续执行S505;如果是,继续执行S506;
S505:不是连续套洞,结束;
S506:是连续套洞,输出边界信息,结束;
S6:将连续套洞分割为单孔洞;
所述连续套洞分割为单孔洞的具体步骤包括:
S601:检测连续套洞边界;
S602:根据连续套洞的重复点,将连续套洞内部区域分割为若干个独立的孔;
S603:将孔洞线上的点投影到平面上,根据点与多边形的内外关系,计算各个孔洞的内外位置关系;如果某一孔洞L1的点均在另一孔洞L2外部,则认为是L1在L2外;
S604:如果一条孔洞线不在任一个孔洞线内部,则该孔洞线为外部孔,如果一条孔洞线在某一个孔洞线内部,则该孔洞线为内部孔,如果外部孔不包含内部孔,则继续执行S607;否则,继续执行S605;
S605:对于包含内部孔的外部孔,查找孔洞线中的重复点,计算重复点和重复点连接的其他孔洞的下一索引点连线与重复点和当前孔洞线的前一索引点连线的夹角,选择夹角最小的一索引点作为新的边界点;
S606:从新的边界点开始,将内部孔上的点按照边界上的连接顺序全部插入外部孔的边线中,合并孔洞外边线和内边线。
2.如权利要求1所述的方法,其特征是,根据三角网格模型的面与边的连接关系,获取三角网格模型的所有单连通区域的具体步骤包括:
S301:标记所有三角形面片为未访问状态;
S302:从所有未访问状态的三角形面片中,随机找出一个三角形面片,选择三角形面片中的任意一条边为种子边,将种子边添加到种子边集合中;
S303:从种子边集合中取出一条种子边,找出与当前种子边连接的处于未访问状态的面片,将找出的面片加入到当前面片集合中,标记找出的面片的状态为已访问,并将已访问的面片与种子边不同的边添加到种子边集合中;
S304:判断种子边集合是否为空,如果是,则当前面片集合是一个单连通区域,定义为一个部件,部件数量加1,进入S305;如果否,则返回S303;
S305:判断所有面片是否均已经被访问,如果是,就输出部件数量和每一部件的三角面片集合,且将每个部件视为一个单连通区域;如果否,则返回S302。
3.面向3D打印的三角网格孔洞分割系统,其特征是,包括:
预处理模块,其被配置为:对输入的用于3D打印的三角网格模型进行预处理;
所述对输入的用于3D打印的三角网格模型进行预处理,包括:
识别三角网格模型的退化三角形面片和重复三角形面片;
对退化三角形面片和重复三角形面片,进行删除;
所述退化三角形面片,是指至少有两点相同或三点共线的面片;
所述重复三角形面片,是指三角形面片的面索引与其余三角形面片的面索引相同且方向相同;
所述识别退化三角形面片的具体步骤:判断当前三角形面片的三个顶点的索引是否存在相同索引,如果存在相同索引,则表示当前三角形面片为退化三角形面片;或者,判断当前三角形面片的面积是否为零,如果为零,则表示当前三角形面片为退化三角形面片;
所述识别重复三角形面片的具体步骤:判断当前三角形面片的面索引与其余三角形面片的面索引是否相同,如果相同,则表示当前三角形面片为重复三角形面片;
连接关系获取模块,其被配置为:根据预处理得到的三角网格模型,获取三角形面片与三角形面片所邻接的边之间的连接关系,获取三角形面片的顶点与顶点所邻接的边之间的连接关系;
单连通区域获取模块,其被配置为:根据三角网格模型的面与边的连接关系,获取三角网格模型的所有单连通区域;将每个单连通区域视为一个部件;
孔洞线获取模块,其被配置为:对每个部件查找自由边,根据边与点之间的连接关系,将所有的自由边首尾连接,得到孔洞线;获得所有孔洞的基本信息,包括孔洞线、孔洞方向和孔洞与部件之间的关联关系;
所述对每个部件查找自由边,根据边与点之间的连接关系,将所有的自由边首尾连接,得到孔洞线;具体步骤包括:
S401:创建初始空边界集合,根据部件中三角形面片的顺序,获取每个三角形面片的每一条边;
S402:判断边界集合中是否存在所获取的边;如果存在,则执行S404,否则执行S403;
S403:将边添加到边界集合中,继续执行S405;
S404:将边在边界集合中删除,继续执行S405;
S405:是否遍历完所有面片;如果是,继续执行S406;如果否,重复执行S401;
S406:计算边界集合中的所有点和边的连接关系;
S407:将所有边界首尾相连接,组成边界,即孔洞线,结束;
划分模块,其被配置为:根据每个孔洞的基本信息,将孔洞划分为单孔洞和连续套洞;
所述单孔洞和连续套洞的划分具体步骤包括:
S501:查找每个部件的所有的自由边;
S502:获取自由边中的所有点与边的连接关系;
S503:从索引最小的点开始,根据点与边的连接关系,查找闭合边界线;
S504:判断闭合边界线是否存在重复点;如果否,继续执行S505;如果是,继续执行S506;
S505:不是连续套洞,结束;
S506:是连续套洞,输出边界信息,结束;
分割模块,其被配置为:将连续套洞分割为单孔洞;
所述连续套洞分割为单孔洞的具体步骤包括:
S601:检测连续套洞边界;
S602:根据连续套洞的重复点,将连续套洞内部区域分割为若干个独立的孔;
S603:将孔洞线上的点投影到平面上,根据点与多边形的内外关系,计算各个孔洞的内外位置关系;如果某一孔洞L1的点均在另一孔洞L2外部,则认为是L1在L2外;
S604:如果一条孔洞线不在任一个孔洞线内部,则该孔洞线为外部孔,如果一条孔洞线在某一个孔洞线内部,则该孔洞线为内部孔,如果外部孔不包含内部孔,则继续执行S607;否则,继续执行S605;
S605:对于包含内部孔的外部孔,查找孔洞线中的重复点,计算重复点和重复点连接的其他孔洞的下一索引点连线与重复点和当前孔洞线的前一索引点连线的夹角,选择夹角最小的一索引点作为新的边界点;
S606:从新的边界点开始,将内部孔上的点按照边界上的连接顺序全部插入外部孔的边线中,合并孔洞外边线和内边线。
4.一种电子设备,其特征是,包括存储器和处理器以及存储在存储器上并在处理器上运行的计算机指令,所述计算机指令被处理器运行时,完成权利要求1-2任一项方法所述的步骤。
5.一种计算机可读存储介质,其特征是,用于存储计算机指令,所述计算机指令被处理器执行时,完成权利要求1-2任一项方法所述的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910680920.5A CN110544255B (zh) | 2019-07-26 | 2019-07-26 | 面向3d打印的三角网格孔洞的分割方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910680920.5A CN110544255B (zh) | 2019-07-26 | 2019-07-26 | 面向3d打印的三角网格孔洞的分割方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110544255A CN110544255A (zh) | 2019-12-06 |
CN110544255B true CN110544255B (zh) | 2020-05-19 |
Family
ID=68709835
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910680920.5A Active CN110544255B (zh) | 2019-07-26 | 2019-07-26 | 面向3d打印的三角网格孔洞的分割方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110544255B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113763558A (zh) * | 2020-11-24 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种信息处理方法及装置、设备、存储介质 |
CN112846232B (zh) * | 2020-12-31 | 2023-03-03 | 南京英尼格玛工业自动化技术有限公司 | 一种金属结构多层多道电弧增材自动轨迹规划方法及系统 |
CN114547716B (zh) * | 2022-02-22 | 2024-05-14 | 中国科学院重庆绿色智能技术研究院 | 一种多自由度3d打印曲面切片以及路径规划方法 |
CN116523941B (zh) * | 2022-08-10 | 2023-10-20 | 苏州浩辰软件股份有限公司 | 含孔洞多边形的简化方法、装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101123000A (zh) * | 2007-07-05 | 2008-02-13 | 广东中大讯通软件科技有限公司 | 一种三维图形数据的压缩处理方法 |
CN101131729A (zh) * | 2007-09-25 | 2008-02-27 | 浙江大学 | 一种从头肩的三维扫描原始数据中自动提取脸部区域的方法 |
CN102853803A (zh) * | 2012-08-08 | 2013-01-02 | 北京建筑工程学院 | 一种文物破损面积的测定方法 |
CN104331555A (zh) * | 2014-10-31 | 2015-02-04 | 河海大学常州校区 | 一种针对带有边界的非封闭stl模型的切片处理方法 |
CN106296822A (zh) * | 2016-08-15 | 2017-01-04 | 西安电子科技大学 | 一种网格模型的表面边界恢复方法 |
CN109934923A (zh) * | 2017-12-15 | 2019-06-25 | 中国科学院沈阳自动化研究所 | 适用于生物材料3d打印的模型分层以及轨迹填充方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7805387B2 (en) * | 2006-02-15 | 2010-09-28 | Haresh Lalvani | Morphological genome for design applications |
CN102682476B (zh) * | 2012-05-15 | 2015-11-25 | 深圳市旭东数字医学影像技术有限公司 | 三角网格数据的布尔运算方法及其系统 |
CN104361632B (zh) * | 2014-11-03 | 2017-03-29 | 北京航空航天大学 | 一种基于Hermite径向基函数的三角网格补洞方法 |
-
2019
- 2019-07-26 CN CN201910680920.5A patent/CN110544255B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101123000A (zh) * | 2007-07-05 | 2008-02-13 | 广东中大讯通软件科技有限公司 | 一种三维图形数据的压缩处理方法 |
CN101131729A (zh) * | 2007-09-25 | 2008-02-27 | 浙江大学 | 一种从头肩的三维扫描原始数据中自动提取脸部区域的方法 |
CN102853803A (zh) * | 2012-08-08 | 2013-01-02 | 北京建筑工程学院 | 一种文物破损面积的测定方法 |
CN104331555A (zh) * | 2014-10-31 | 2015-02-04 | 河海大学常州校区 | 一种针对带有边界的非封闭stl模型的切片处理方法 |
CN106296822A (zh) * | 2016-08-15 | 2017-01-04 | 西安电子科技大学 | 一种网格模型的表面边界恢复方法 |
CN109934923A (zh) * | 2017-12-15 | 2019-06-25 | 中国科学院沈阳自动化研究所 | 适用于生物材料3d打印的模型分层以及轨迹填充方法 |
Non-Patent Citations (1)
Title |
---|
三角网格模型的最小值边界分割;王泽昊 等;《计算机辅助设计与图形学学报》;20170131;第29卷(第1期);第62-71页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110544255A (zh) | 2019-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110544255B (zh) | 面向3d打印的三角网格孔洞的分割方法及系统 | |
US10147242B2 (en) | Distance field coupled fitted deformation lattices for shape modification | |
CN110765891B (zh) | 工程图纸识别方法、电子设备及相关产品 | |
Razafindrazaka et al. | Perfect matching quad layouts for manifold meshes | |
WO2021115061A1 (zh) | 图像分割方法、装置及服务器 | |
US8249392B2 (en) | Method for aligning point clouds | |
US7333104B2 (en) | Method and program of converting three-dimensional shape data into cell internal data | |
US20180052433A1 (en) | Systems and methods for generating slice files from native cad geometries | |
CN114418976A (zh) | 一种血管造影图像的分析方法和装置 | |
CN110543819B (zh) | 3d打印的三角网格单孔洞分类识别与修复方法及系统 | |
US7388584B2 (en) | Method and program for determining insides and outsides of boundaries | |
US11068739B1 (en) | Method and system for comparison of object contours | |
WO2018068196A1 (zh) | 一种血管脊线追踪方法及装置 | |
Lai et al. | Recognition and decomposition of rib features in thin-shell plastic parts for finite element analysis | |
CN116152816A (zh) | 封闭区域的识别方法、装置、电子设备和存储介质 | |
CN116206125A (zh) | 外形缺陷识别方法、装置、计算机设备及存储介质 | |
CN110555385A (zh) | 一种基于变步长曲率滤波的焊缝特征点求取方法 | |
Liu et al. | Repair of STL errors | |
CN111833452B (zh) | 多面体切割三角网的切割方法及系统 | |
Xu et al. | An improved virtual edge approach to slicing of point cloud for additive manufacturing | |
CN114663612A (zh) | 一种高精度地图构建方法、装置及电子设备 | |
Kulkarni et al. | Dimension-reduction technique for polygons | |
US20200074727A1 (en) | Generating 3D Models | |
Chen et al. | Automatic prismatic feature segmentation of scanning-derived meshes utilising mean curvature histograms: This paper presents an enhanced method for segmentation of scanning-derived triangle mesh models of physical prismatic mechanical parts | |
KR100519696B1 (ko) | 스윕/언스윕을 이용한 평면 물체의 오프셋 곡선 계산 방법 |
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 |