首页> 中国专利> 一种基于相交边映射的STL模型3D打印切片方法

一种基于相交边映射的STL模型3D打印切片方法

摘要

本发明涉及一种基于相交边映射的STL模型3D打印切片方法其包括以下步骤:步骤一、对STL模型的三角片数据进行排序优化,逐层筛选出与各层切平面相交的三角片集合;步骤二、提取出每个三角片与切平面相交的两条边,构建相交边对索引矩阵;步骤三、建立映射函数,将索引矩阵转换成一个映射表,并利用该映射表对所有相交边进行有序排列;步骤四、计算每个相交边与切平面的交点,并根据相交边排序结果,依次连接各个交点构建有序切片轮廓路径。本发明将三角片与切平面的相交关系映射为数据表,利用映射表的快速查询功能进行相交边的有序排列,不仅可以避免公共边交点的重复计算,也无需耗时而复杂的网格拓扑关系重建,能够有效提高切片分层处理效率。

著录项

  • 公开/公告号CN112734934A

    专利类型发明专利

  • 公开/公告日2021-04-30

    原文格式PDF

  • 申请/专利权人 嘉兴学院;

    申请/专利号CN202110100621.7

  • 发明设计人 吴婷;张礼兵;

    申请日2021-01-25

  • 分类号G06T17/20(20060101);G06F16/51(20190101);B33Y50/00(20150101);

  • 代理机构11480 北京翔瓯知识产权代理有限公司;

  • 代理人张利靖

  • 地址 314001 浙江省嘉兴市秀洲区康和路1288号光伏科创园2号楼

  • 入库时间 2023-06-19 10:48:02

说明书

技术领域

本发明涉及3D打印技术领域,尤其涉及一种基于相交边映射的STL模型3D打印切片方法。

背景技术

STL模型是一种用大量无序的三角面片来模拟复杂物体表面的三维几何模型,三角面片的数量由模型的复杂性和逼近误差决定。由于STL文件格式简单,数据处理方便,如今已经成为3D打印系统的标准接口文件。

在利用3D打印工艺对STL模型进行制造时,首先需要获取模型的2D切片轮廓。目前已有的STL模型切片方法中,应用最广泛的有两种类型:(1)基于冗余交点信息的方法。该类方法首先计算切平面与所有相交三角面片的交线段,由于相邻三角面片之间存在公共边,因此计算得到的交线段端点存在冗余数据,利用这些冗余交点信息进行首尾连接即可得到有序封闭轮廓。这种类型的算法无需构建复杂的网格拓扑关系,但在计算切平面和三角面片公共边的交点时需要重复计算两次。(2)基于网格拓扑信息的方法该类方法需要首先建立STL模型三角面片之间的邻接拓扑关系,然后在求得切平面与第一个相交三角片后,根据拓扑关系找到与之相邻的下一个三角片,依次求交后即可得到首尾相连的有向封闭轮廓。这种算法能够避免重复计算冗余交点,而且无需对交点进行重新排序;但这种基于网格拓扑关系的分层算法处理拓扑信息耗时较长、内存占用量较大,尤其是在处理数据量较大的STL文件时,将会十分费时且对计算机的计算能力要求更高。

STL模型表面的三角片是散乱分布的,获取这种模型切片轮廓的关键在于如何将切平面与这些散乱的三角片形成的交线段有序地组织起来。另外,由于切片处理要计算每层切平面与三角面片的交线,大量三角面片会影响每层切片创建轮廓的时间,因此切片算法的有效性直接影响到最终模型制作的效率和质量。

发明内容

针对现有技术存在的不足,本发明的目的在于提供一种基于相交边映射的STL模型3D打印切片方法,快速建立正确的有序切片轮廓。

为实现上述目的,本发明提供了如下技术方案:

一种基于相交边映射的STL模型3D打印切片方法,其包括以下步骤:

步骤一、根据STL模型的三角片的顶点坐标对三角片数据进行排序优化,然后由下而上逐层筛选出与各层切平面相交的三角片集合;

步骤二、从筛选出来的相交的三角片集合中,根据三角片顶点与切平面的相对位置提取出每个三角片与切平面相交的两条边,构建相交边对索引矩阵;

步骤三、建立映射函数,将相交边对索引矩阵转换成一个映射表,并利用该映射表对所有相交边进行有序排列;

步骤四、计算每个相交边与切平面的交点,并根据相交边排序结果,依次连接各个交点构建有序切片轮廓路径。

步骤一中,包括以下步骤:

1)读取STL模型,并根据成型精度和模型表面形态特征,确定各层切平面的位置h

2)获取STL模型上每个三角片的三个顶点v

3)查找排序后的三角片序列中最后一个满足z

步骤二中,包括以下步骤:

1)在相交三角片集合M

2)将所有三角片的相交边对组成集合:

V

3)根据V

其中,矩阵中的每一行代表一个相交边对索引。

步骤1)中,相交边对的具体创建规则如下:

Case1:当z

①当h

相交边对:[<v

②当h

相交边对:[<v

③当h

相交边对:[<v

Case 2:当z

相交边对:[<v

Case 3:当z

相交边对:[<v

Case 4:其他

无相交边。

步骤三中,包括以下步骤:

1)建立映射函数H(x),依次遍历相交边对索引矩阵E中的每一行索引,创建边对映射,形成相交边映射表H;

2)从相交边映射表H中选择一个键作为起始节点,检索其映射值作为邻接节点,递归遍历当前节点的映射值,直到与起始节点相同构成首尾封闭排序列表,循环执行递归遍历策略,直至所有边都排序完毕。

步骤1)中,具体步骤如下:

Step1:从相交边对索引矩阵E中的取出一行索引:E

Step2:判断相交边映射表H中是否存在键a,若相交边映射表H中不存在键a,则创建映射H(a)=b,若相交边映射表H中已存在映射H(a)=c,则修改映射H(a)=[c,b];

Step3:判断相交边映射表H中是否存在键b,若相交边映射表H中不存在键b,则创建映射H(b)=a,若H中已存在映射H(b)=d,则修改映射H(b)=[d,a];

Step4:比较i和s的关系,若i<s,则令i=i+1后,转Step1,否则,完成相交边映射表H的创建。

步骤2)中,具体步骤如下:

Step1:从相交边数据表H中取出一个键a作为排序列表List中的起始节点,即List(1)=a;

Step2:在相交边映射表H中检索键a的映射值H(a)=[b,c],选择[b,c]中的一个值b作为排序列表List中的下一个节点,即令i=2,使List(i)=b,然后将键a从相交边数据表H中删除;

Step3:以u=List(i)作为递归邻接节点,检索u的映射值H(u)=[v,w],判断v是否等于排序列表List中的上一个节点List(i-1):若v≠List(i-1),则将v作为排序列表List中的下一个节点,即List(i+1)=v,否则,将w作为排序列表List中的下一个节点,即List(i+1)=w,并将键u从相交边映射表H中删除;

Step4:判断List(i+1)是否等于起始节点a,若List(i+1)≠a,令i=i+1,执行步骤Step3;若List(i+1)=a,则构建完成一条首尾封闭的排序列表;

Step5:判断相交边映射表H是否为空,若为空,则结束;否则,该层切片存在多个条轮廓,转步骤Step1,继续创建下一条新的排序列表。

步骤四中,对于排序后的每个相交边排序列表List,1)当List中某一相交边索引所对应的边为<v

2)当List中某一相交边索引所对应的边为<v

求出当前切平面h

本发明的有益效果:通过分析三角片与切平面的相交关系,将相交边信息映射为数据表,利用映射数据表的快速查询功能进行相交边的有序排列,不仅可以避免公共边交点的重复计算,也无需耗时而复杂的网格拓扑关系重建,能够有效提高切片分层处理效率。

附图说明

图1为本发明的技术流程示意图。

图2a、b、c为本发明的切平面与三角片相交判别分类示意图。

图3a、b、c为本发明的相交边对映射表创建流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,本发明公开了一种基于相交边映射的STL模型3D打印切片方法,其包括以下步骤:

步骤一、根据STL模型的三角片顶点坐标对三角片数据进行排序优化,然后由下而上逐层筛选出与各层切平面相交的三角片集合,具体步骤为:

1)读取STL模型,并根据成型精度和模型表面形态特征,确定各层切平面的位置h

2)获取STL模型上每个三角片的三个顶点v

3)对于第i层切平面h

步骤二、从筛选出来的相交的三角片集合中,根据三角片顶点与切平面的相对位置提取出每个三角片与切平面相交的两条边,构建相交边对索引矩阵,具体步骤为:

1)在相交三角片集合M

Case1:当z

①当h

相交边对:[<v

②当h

相交边对:[<v

③当h

相交边对:[<v

Case 2:当z

相交边对:[<v

Case 3:当z

相交边对:[<v

Case 4:其他

无相交边。

2)将所有三角片的相交边对组成集合:

V

3)根据V

其中,矩阵中的每一行代表一个相交边对索引。

步骤三、建立映射函数,将相交边对索引矩阵转换成一个映射表,并利用该映射表对所有相交边进行有序排列,具体步骤为:

1)建立映射函数H(x),依次遍历相交边对索引矩阵E中的每一行索引,创建边对映射,形成相交边映射表H。具体步骤如下:

Step1:从相交边对索引矩阵E中的取出一行索引:E

Step2:判断相交边映射表H中是否存在键a,若相交边映射表H中不存在键a,则创建映射H(a)=b,若相交边映射表H中已存在映射H(a)=c,则修改映射H(a)=[c,b];

Step3:判断相交边映射表H中是否存在键b,若相交边映射表H中不存在键b,则创建映射H(b)=a,若H中已存在映射H(b)=d,则修改映射H(b)=[d,a]。

Step4:比较i和s的关系,若i<s,则令i=i+1后,转Step1,否则,完成相交边映射表H的创建。

2)从相交边映射表H中选择一个键作为排序列表的起始节点,检索其映射值作为邻接节点,递归遍历当前节点的映射值,直到与起始节点相同构成首尾封闭的排序列表,循环执行递归遍历策略,直至相交边映射表H的所有边都排序完毕。具体步骤为:

Step1:从相交边映射表H中取出一个键a作为排序列表List的起始节点,即List(1)=a;

Step2:在相交边映射数据表H中检索键a的映射值H(a)=[b,c],选择[b,c]中的一个值b作为排序列表List中的下一个节点,即令i=2,使List(i)=b,然后将键a从相交边映射表H中删除;

Step3:以u=List(i)作为递归邻接节点,检索u的映射值H(u)=[v,w],判断v是否等于排序列表List中的上一个节点List(i-1):若v≠List(i-1),则将v作为排序列表List中的下一个节点,即List(i+1)=v,否则,将w作为排序链表List中的下一个节点,即List(i+1)=w,并将键u从相交边映射表H中删除;

Step4:判断List(i+1)是否等于起始节点a,若List(i+1)≠a,令i=i+1,执行步骤Step3;若List(i+1)=a,则构建完成一条首尾封闭的排序列表;

Step5:判断相交边映射表H是否为空,若为空,则结束;否则,该层切片存在多个条轮廓,转步骤Step1,继续创建下一条新的排序列表。

步骤四、计算每个相交边与切平面的交点,并根据相交边排序结果,依次连接各个交点构建有序切片轮廓路径。

对于排序后的每个相交边排序列表List,1)当List中某一相交边索引所对应的边为<v

2)当List中某一相交边索引所对应的边为<v

求出当前切平面h

以图3(a)所示的三角片与切平面相交情况为例,按照所述方法,产生的相交边集合V={e

在映射表H中,以e

最后,计算出各个相交边e

实施例不应视为对本发明的限制,但任何基于本发明的精神所作的改进,都应在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号