用于3D打印的层切片数据的压缩传输方法
技术领域
本发明涉及光固化成型(3D打印)技术领域,尤其涉及在光固化成型技术中对于模型切片的数据压缩编码方法,特别涉及LCD-SLA型光固化技术中对于模型切片的数据压缩编码方法。
背景技术
在3D打印技术中,较为常见的是光固化快速成型技术,其利用液体状态的光敏树脂(UV)在光照下发生聚合反应,以光源按照待固化实体的截面形状进行照射,使液态光敏树脂逐层固化成型后累积叠加,最终形成固化实体。
目前,一些光固化打印机通过数据传输设备将3D打印对象的横截面图案一层一层地传输到LCD液晶显示屏幕上,然后用一定波长的光照射LCD屏幕,使得LCD屏幕上方的液体树脂按照LCD液晶显示屏幕所显示的图案一层一层地固化,最终形成3D打印对象。该种打印机称为LCD 3D打印机,其能够快速打印尺寸较大的对象且具有较高的分辨率和打印速度。
对于每一个层(模型切片)的数据处理是快速成型方法的关键内容之一。目前在模型切片处理软件中应用最多的是基于STL模型的切片算法。它用一系列的小三角形平面片去近似表示原CAD模型,用于从CAD系统到快速成型系统的数据交换,因其格式简单,在数据处理上较方便,所以很快被广泛采用。如图8所示,待打印模型的表面并不光滑,其是由一个个三角片拼接而成。
由于STL数据中没有模型的几何拓扑信息,因此在该处理方法中先要建立模型的几何拓扑信息,例如,通过三角形网格的点表、边表和面表建立STL模型的整体拓扑信息。在此基础上,实现将模型快速切片。在该切片数据处理方法的过程中,对于一个切片平面Zi,首先确定第一个与该切片平面Zi相交的三角片t,得到交点坐标,然后根据局部邻接信息找到相邻的三角片并求出交点,以此追踪,直到回到第一个与该切片平面Zi相交的三角片t,此时便得到一条有向封闭的轮廓环。重复上述过程,直到所有轮廓环计算完毕,最终能够得到该切片平面Zi的完整的截面数据。
按照上述对于一个切片平面Zi的截面数据的获取方法,将待打印物体的STL模型离散化为n层有一定厚度的切片。将n层截面数据一层层地传输到LCD液晶显示屏幕,所传输的相邻两层切片的截面数据在一些情况下具有很大的重复性,导致传输过程中有大量的冗余信息,导致传输效率降低、打印速度缓慢。
发明内容
鉴于现有技术中存在的问题,本发明提供一种用于3D打印的层切片数据的压缩传输方法,包括:
a.将待打印模型按照预设厚度切片分层,存储每一层的截面数据;
b.传输第一层切片的截面数据;
c.比较第二层切片和第一层切片的截面数据,提取第二层切片和第一层切片截面数据的相同部分;
d.传输第二层切片和第一层切片的截面数据的不相同部分,并使之与所述相同部分结合,以形成完整的第二层切片截面数据。
在本发明的一些实施方式中,所述第一层切片的截面和所述第二层切片的截面均仅具有外轮廓;当第一层切片的截面和第二层切片的截面相互叠加,第一层切片截面的外轮廓被完全包含于第二层切片截面的外轮廓之内时,则:
d.传输第一层切片截面的外轮廓至第二层切片截面的外轮廓之间的截面数据,并使之与所述第一层切片的截面数据结合,以形成完整的第二层切片截面数据。
当第一层切片的截面和第二层切片的截面相互叠加,第二层切片截面的外轮廓被完全包含于第一层切片截面的外轮廓之内时,则:
d.输出第二层切片的截面数据;或在第一层截面数据的基础上删除第二层切片截面的外轮廓至第一层切片截面的外轮廓之间的截面数据。
在本发明的一些实施方式中,所述第一层切片的截面和所述第二层切片的截面均仅具有外轮廓;当将第一层切片的截面和第二层切片的截面相互叠加,第一层切片截面的外轮廓与第二层切片截面的外轮廓相交时,则:
d1.保留处于第二层切片的外轮廓之内的第一层切片的每一条线段;
d2.保留处于第一层切片的外轮廓之外的第二层切片的每一条线段;
d3.以所述被保留的线段形成一个或多个封闭轮廓,传输所述封闭轮廓内的截面数据并使之与所述相同部分结合,以形成完整的第二层切片截面数据。
在本发明的一些实施方式中,其中:
d0.以线段拟合第一层切片的外轮廓和第二层切片的外轮廓,将所述外轮廓的顶点按照逆时针排序编号,将交点按照有序或者无序编号;
d1.保留处于第二层切片的外轮廓之内的第一层切片的外轮廓的每一条有向线段;
d2.保留处于第一层切片的外轮廓之外的第二层切片的外轮廓的每一条有向线段;
d3.以所述被保留的有向线段按照组成排序的编号首尾相接地形成一个或多个封闭轮廓,传输所述封闭轮廓内的截面数据并使之与所述相同部分结合,以形成完整的第二层切片截面数据。
在本发明的一些实施方式中,所述第一层切片的截面和所述第二层切片的截面均具有外轮廓和内轮廓;当第一层切片的截面和第二层切片的截面相互叠加,第一层切片截面的外轮廓和/或内轮廓与第二层切片截面的外轮廓和/或内轮廓相交时,则:
d1.保留处于第二层切片的外轮廓和内轮廓之间的第一层切片的每一条线段;
d2.保留处于第一层切片的外轮廓之外或者内轮廓之内的第二层切片的每一条线段;
d3.以所述被保留的线段形成一个或多个封闭轮廓,传输所述封闭轮廓内的截面数据并使之与所述相同部分结合,以形成完整的第二层切片截面数据。
在本发明的一些实施方式中,其中:
d0.以线段拟合第一层切片的外轮廓、内轮廓和第二层切片的外轮廓、内轮廓,将所述外轮廓的顶点按照逆时针排序编号,将所述内轮廓的顶点按照顺时针排序编号,将交点按照有序或者无序编号;
d1.保留处于处于第二层切片的外轮廓和内轮廓之间的第一层切片的外轮廓和内轮廓的每一条有向线段;
d2.保留处于第一层切片的外轮廓之外或者内轮廓之内的第二层切片的外轮廓和内轮廓的每一条有向线段;
d3.以所述被保留的有向线段按照组成排序的编号首尾相接地形成一个或多个封闭轮廓,传输所述封闭轮廓内的截面数据并使之与所述相同部分结合,以形成完整的第二层切片截面数据。
在本发明的一些实施方式中,所述第一层切片的截面具有外轮廓和内轮廓;所述第二层切片的截面具有外轮廓;当第一层切片的截面和第二层切片的截面相互叠加,第一层切片截面的外轮廓和/或内轮廓与第二层切片截面的外轮廓相交时,则:
d1.保留处于第二层切片的外轮廓之内的第一层切片的每一条线段;
d2.保留处于第一层切片的外轮廓之外或者内轮廓之内的第二层切片每一条线段;
d3.以所述被保留的线段形成一个或多个封闭轮廓,传输所述封闭轮廓内的截面数据并使之与所述相同部分结合,以形成完整的第二层切片截面数据。
在本发明的一些实施方式中,其中:
d0.以线段拟合第一层切片的外轮廓、内轮廓和第二层切片的外轮廓,将所述外轮廓的顶点按照逆时针排序编号,将所述内轮廓的顶点按照顺时针排序编号,将交点按照有序或者无序编号;
d1.保留处于第二层切片的外轮廓之内的第一层切片的外轮廓和内轮廓的每一条有向线段;
d2.保留处于第一层切片的外轮廓之外或者内轮廓之内的第二层切片的外轮廓的每一条有向线段;
d3.以所述被保留的有向线段按照组成排序的编号首尾相接地形成一个或多个封闭轮廓,传输所述封闭轮廓内的截面数据并使之与所述相同部分结合,以形成完整的第二层切片截面数据。
在本发明的一些实施方式中,所述第一层切片的截面具有外轮廓;所述第二层切片的截面具有外轮廓和内轮廓;当第一层切片的截面和第二层切片的截面相互叠加,第一层切片截面的外轮廓与第二层切片截面的外轮廓和/或内轮廓相交时,则:
d1.保留处于第二层切片的外轮廓和内轮廓之间的第一层切片的每一条线段;
d2.保留处于第一层切片的外轮廓之外的第二层切片的外轮廓和内轮廓的每一条线段;
d3.以所述被保留的线段形成一个或多个封闭轮廓,传输所述封闭轮廓内的截面数据并使之与所述相同部分结合,以形成完整的第二层切片截面数据。
在本发明的一些实施方式中,其中:
d0.以线段拟合第一层切片的外轮廓和第二层切片的外轮廓、内轮廓,将所述外轮廓的顶点按照逆时针排序编号,将所述内轮廓的顶点按照顺时针排序编号,将交点按照有序或者无序编号;
d1.保留处于第二层切片的外轮廓和内轮廓之间的第一层切片的外轮廓的每一条有向线段;
d2.保留处于第一层切片的外轮廓之外的第二层切片的外轮廓和内轮廓的每一条有向线段;
d3.以所述被保留的有向线段按照组成排序的编号首尾相接地形成一个或多个封闭轮廓,传输所述封闭轮廓内的截面数据并使之与所述相同部分结合,以形成完整的第二层切片截面数据。
本发明提供的用于3D打印的层切片数据的压缩传输方法可以针对待打印物体的STL模型相邻两层切片的截面数据进行布尔差运算,即将首层层切片数据传输后,后续每层层切片数据都与上一层切片数据进行布尔差运算,剔除数据的重复部分,仅向打印机传输该层切片与上一层切片数据的不同部分,并使该不同部分与上述相同部分的数据合并在一起,组成一个完整的层切片数据。本领域技术人员能够理解,对于一个待打印物体,其STL模型可以被分割为成百上千个层切片,利用本发明提供的方法能够最大程度地剔除相邻层切片之间的冗余数据,即避免重复传输相同部分的数据,进而极大地提高传输、打印效率。
具体地,首先先利用线段拟合第一层切片和第二层切片的外轮廓和内轮廓,然后使得第一层切片和第二层切片相叠加,并且为线段的端点和交点编号,随后按照预定的规则决定第一层切片和第二层切片的线段的取舍,最后以保留的线段首尾相接地组成封闭轮廓,该封闭轮廓中的数据即是相邻两个层切片之间的不同部分。仅向打印机传输上述不同部分的数据,省略重复传输的相同数据的过程,能够避免传输的数据信息繁冗,以提高数据传输效率。
此外,针对具有复杂且不规则的层切片,可以将其分解成多个含有外轮廓和/或内轮廓的实体部分,然后将每一个实体部分都与上一层切片轮廓或者下一层切片轮廓进行布尔差运算,以获得相邻两层切片的不同部分的数据。因此,本发明所提供的层切片数据的压缩传输方法具有很强的适用性和传输速度优势。
附图说明
图1a为实施例1层切片A的截面轮廓;
图1b为实施例1层切片B的截面轮廓;
图1c为实施例1层切片A和层切片B叠加后的截面轮廓;
图2a为实施例2层切片A的截面轮廓;
图2b为实施例2层切片B的截面轮廓;
图2c为实施例2层切片A和层切片B叠加后的截面轮廓;
图3a为实施例3层切片A和层切片B叠加后的截面轮廓;
图3b为实施例3层切片A和层切片B叠加后的截面轮廓,着重显示了相同部分;
图3c为实施例3层切片A和层切片B叠加后的截面轮廓,着重显示了不同部分;
图4a为实施例4层切片A的截面轮廓;
图4b为实施例4层切片B的截面轮廓;
图4c为实施例4层切片A和层切片B叠加后的截面轮廓;
图5a为实施例5层切片A的截面轮廓;
图5b为实施例5层切片B的截面轮廓;
图5c为实施例5层切片A和层切片B叠加后的截面轮廓;
图6a为实施例6层切片A的截面轮廓;
图6b为实施例6层切片B的截面轮廓;
图6c为实施例6层切片A和层切片B叠加后的截面轮廓;
图7复杂的层切片的截面轮廓;
图8示意性的显示了一个待打印模型的结构。
具体实施方式
为了使发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对发明作进一步详细的说明。虽然附图中显示了本公开示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻的理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
为了减少现有数据在传输过程中存在的冗余信息,本发明提供了一种模型切片数据的压缩编码方法。该方法通过对STL模型相邻两层切片数据进行布尔差运算,剔除重复部分数据,仅传输不同部分数据,以实现最大程度地消除所传输数据的冗余信息。
不同模型的冗余信息具不同的消除程度。例如,对一个长10mm、宽10mm、高50mm的长方体,在高度方向上以0.1mm的层厚对其进行切片处理,可得到一个500层的离散化模型的每层的数据。按照现有方法,需要向LCD显示单元传输每一层切片的数据,即需要传输500次切片数据,而根据本方法,首先对相邻的两层切片的数据做布尔差运算,得出每一层的数据均一致的结果,然后只需要传输一次切片的数据(例如第一层切片的数据),然后使其重复地被应用499次,即可完成该长方体模型的打印。
在后文会以两个具体的实例说明如何完成冗余信息的剔除。在此之前,需要先对一些术语作出解释。
轮廓(环),光固化成型的模型文件采用的是STL格式,对该模型文件进行分层切片处理,分层切片后得到的每一层切片的截面轮廓是封闭多边形,该多边形由顺序相连的顶点坐标表示且其首尾顶点的坐标值相同,即封闭的多边形称为环。
外轮廓(外环),不被其它轮廓边界包含或被偶数个任何其它轮廓边界包含的轮廓。
内轮廓(内环),被奇数个任何其它轮廓边界包含的轮廓。
图7示出了一个复杂的层切片的截面轮廓。无论多么复杂的截面,其都可以分解为一个个互不相交的实体,每个实体由一个外环和n个内环组成(n≥0)。图7中,外轮廓1和内轮廓2、内轮廓3以及内轮廓4构成了实体A。外轮廓5和内轮廓6构成了实体B。外轮廓7构成了实体C。因此,图7中的层切片的截面轮廓将该层截面分割成了三个互不相交的实体部分,即实体A、实体B和实体C。实体A、实体B和实体C的相互关系可以大致看作像玩具“俄罗斯娃娃”那样,相互套在一起。
对于多边形而言,以符号+,-和∩表示多边形的并、差和交运算,根据布尔代数则有:
A∩B=A-(A-B)
A+B=(A-B)+B
对于层切片A和层切片B的截面轮廓的并、差和交运算也满足上式,即对于两个实体而言,其布尔差运算也可以建立在多边形求差的运算上。
实施例1
在3D打印过程中,首先需要对待打印模型的三维虚拟形状进行切片处理,以使其形成多个层切片。当层切片的二维截面的轮廓呈曲线时,则采用多条折线来逼近曲线的轮廓,即以线段拟合出曲线轮廓。
以两个相邻的层切片为例,称之为层切片A和层切片B。在打印时,先传输的为层切片A的数据,后传输的为层切片B的数据。图1a示出了层切片A的截面轮廓,其是由首尾相接的线段组成的多边形,顶点按照逆时针排序1~12。图1b示出了层切片B的截面轮廓,其是由首尾相接的线段组成的多边形,顶点按照逆时针排序13~24。两个切片层具有相同的厚度且表面平坦。应当能够理解,为了描述方便,层切片A和层切片B的截面轮廓均为十二边形。实际情况下,多边形的边数可以远远大于十二。层切片A和层切片B的截面均仅有外轮廓。
图1c示出了层切片A和切片层B的截面相互叠加后的图案,即切片层B的截面外轮廓完全处于切片层A的截面外轮廓之外,层切片A和层切片B的外轮廓无交点。
对于层切片B截面的外轮廓的每一条线段,该线段如果处于层切片A的截面外轮廓之外,则予以保留,因此层切片B截面的外轮廓保留的线段为13-14;14-15;15-16;16-17;17-18;18-19;19-20;20-21;21-22;22-23;23-24;24-13。
对于层切片A截面的外轮廓的每一条线段,该线段如果处于层切片B截面的外轮廓之内,则予以保留,因此层切片A保留的线段为1-2;2-3;3-4;4-5;5-6;6-7;7-8;8-9;9-10;10-11;11-12;12-1。
任意从上述线段中取出一条作为初始线段,查找以该初始线段的终点作为起点的下一条线段,将该条线段连接于初始线段之后。重复进行上述操作,使得每一条线段首尾相连,直至最后一条线段的终点连接至上述初始线段的起点,以形成一个封闭的环。
图1c显示的层切片A和层切片B的布尔差运算结果,即层切片B与层切片A的截面数据不相同的部分(黑色区域)。
因此,在进行层切片B的截面数据传输时,只需要将层切片B与层切片A的截面数据不相同的部分传输至3D打印机,并且使之与层切片A和层切片B截面数据的相同部分结合,即构成了一个完整的层切片B的截面数据。
针对一些层切片形状不规则的STL模型,利用该种方法,处理每一个层切片相对于其上一个层切片的数据,能够极大地减小传输的截面数据的冗余信息,以提高数据传输效率,该种3D打印机具有强大的速度优势。
实施例2
以两个相邻的层切片为例,称之为层切片A和层切片B。在打印时,先传输的为层切片A的数据,后传输的为层切片B的数据。图2a示出了层切片A截面的外轮廓,其是由首尾相接的线段组成的多边形,顶点按照逆时针排序1~12。图2b示出了切片层B截面的外轮廓,其是由首尾相接的线段组成的多边形,顶点按照逆时针排序13~24。两个切片层具有相同的厚度且表面平坦。层切片A和层切片B的截面均仅有外轮廓。
图2c示出了层切片A和切片层B的截面相互叠加后的图案,即切片层B截面的外轮廓完全处于切片层A截面的的外轮廓之内,层切片A和层切片B的外轮廓无交点。
对于层切片B截面的外轮廓的每一条线段,该线段如果处于层切片A的截面外轮廓之外,则予以保留,因此层切片B截面的外轮廓无需保留。
对于层切片A截面的外轮廓的每一条线段,该线段如果处于层切片B截面的外轮廓之内,则予以保留,因此层切片A保留的外轮廓无需保留。
即,层切片A和层切片B不存在经布尔差运算后得出的不同部分。
在这种情况下,在传输切片层B的截面数据时,可以选择删除层切片A截面的外轮廓超出截面B截面的外轮廓部分的数据(即保留相同的截面数据),或者直接传输截面B的截面数据,即图2c中的黑色部分的截面数据。
实施例3
以两个相邻的层切片为例,称之为层切片A和层切片B。在打印时,先传输的为层切片A的数据,后传输的为层切片B的数据。图3a示出了层切片A截面的外轮廓,其是由首尾相接的线段组成的多边形,顶点按照逆时针排序1~12。图3a示出了层切片B截面的外轮廓,其是由首尾相接的线段组成的多边形,顶点按照逆时针排序13~24。两个切片层具有相同的厚度且表面平坦。层切片A和层切片B的截面均仅有外轮廓。
如图3a所示,示出了层切片A和切片层B的截面相互叠加后的图案。将层切片A的外轮廓的顶点按照逆时针排序,将层切片B的外轮廓的顶点也按照逆时针排序,对层切片A和切片层B的外轮廓相互求交,得到交点25~48。如图3b所示,交点25~48之间的线段所围成的部分,即是层切片A和层切片B截面数据相同的部分。
对于层切片B截面的外轮廓的每一条线段,该线段如果处于层切片A截面的外轮廓之外,则予以保留,因此层切片B的截面轮廓保留的线段为1-25;26-2;2-27;28-3;3-29;30-4;4-31;32-5;5-33;34-6;6-35;36-7;7-37;38-8;8-39;40-9;9-41;42-10;10-43;44-11;11-45;46-12;12-47;48-1。
对于层切片A的截面轮廓的每一条线段,该线段如果处于层切片B截面的外轮廓之内,则予以保留,因此层切片A保留的线段为25-48;27-26;29-28;31-30;33-32;35-34;37-36;39-38;41-40;43-42;45-44;47-46。
任意从上述线段中取出一条作为初始线段,查找以该初始线段的终点作为起点的下一条线段,将该条线段连接于初始线段之后。重复进行上述操作,使得每一条线段首尾相连,直至最后一条线段的终点连接至上述初始线段的起点,以形成一个封闭的环。因此,对所有保留下来的线段做如上操作,则得到的n(n≥0)个闭环,即为层切片A和层切片B的布尔差运算结果。
因此,图3c显示的层切片A和层切片B的布尔差运算结果,所保留的线段按照上述规则处理后形成的闭环为1-25-48-1;2-27-26-2;3-29-28-3;4-31-30-4;5-33-32-5;6-35-34-6;7-37-36-7;8-29-38-8;9-41-40-9;10-43-42-10;11-45-44-11;12-47-46-12。层切片B在上述闭环内的截面数据即是层切片B与层切片A的截面数据不相同的部分。
因此,在进行层切片B的截面数据传输时,只需要将层切片B与层切片A的截面数据不相同的部分传输至3D打印机,并且使之与层切片A和层切片B截面数据的相同部分结合,即构成了一个完整的层切片B的截面数据。
实施例4
如图4a所示,其显示了一个层切片A的截面轮廓,层切片A具有外轮廓和内轮廓。将层切片A的外轮廓的点按逆时针排序,内轮廓的点按照顺时针排序,则层切片A的外轮廓为{8,9,10,11,8},内轮廓为{12,13,14,12},即在层切片A上设置有一个由线段12-13-14-12围成的通孔。
如图4b所示,其显示了一个层切片B的截面轮廓,层切片B具有外轮廓和内轮廓。将层切片B的外轮廓的点按逆时针排序,内轮廓的点按照顺时针排序,则层切片B的外轮廓为{1,2,3,4,1},内轮廓为{5,6,7,5},即在层切片B上设置有一个由线段5-6-7-5围成的通孔。
因此,按照外轮廓和内轮廓上的点的方向,层切片的实体部分总是处于外轮廓和内轮廓的左侧。
在打印时,先传输的为层切片A的数据,后传输的为层切片B的数据。
如图4c所示,将层切片A截面轮廓(外轮廓和内轮廓)与层切片B的截面轮廓(外轮廓和内轮廓)相互叠加,对层切片A和层切片B的外轮廓和内轮廓相互求交,得到交点15~24。
即,层切片A截面的外轮廓表示为{8,9,20,19,10,11,18,17,16,15,8};
层切片A截面的内轮廓表示为{12,22,21,13,14,24,23,12};
层切片B截面的外轮廓表示为{1,15,2,20,3,19,24,4,21,18,1},
层切片B截面的内轮廓表示为{5,17,22,6,23,7,16,5};
对于层切片B的外轮廓和内轮廓的每一条线段,该线段如果处于层切片A之外(即处于层切片A的外轮廓之外或者处于层切片A的内轮廓之内),则予以保留。图4c中层切片B被保留的线段为1-15,20-3,3-19,24-4,4-21,18-1,5-17,22-6,6-23,16-5。
对于层切片A的外轮廓和内轮廓的每一条线段,该线段如果处于层切片B之内(即处于层切片B的外轮廓和内轮廓之间)则保留。图4c层切片A被保留的线段为15-16,17-18,19-20,21-22,23-24。
任意从层切片A或者层切片B的轮廓线段中取出一条作为初始线段,查找以该初始线段的终点作为起点的下一条线段,将该条线段连接于初始线段之后。重复进行上述操作,使得每一条线段首尾相连,直至最后一条线段的终点连接至上述初始线段的起点,以形成一个封闭的环。因此,对所有保留下来的线段做如上操作,则得到的n(n≥0)个闭环。层切片B在上述闭环内的截面数据即是层切片B与层切片A的截面数据不相同的部分。
在该运算结果的显示的图形中,层切片的外轮廓仍然是逆时针排序,层切片的内轮廓仍然是顺时针排序。因此,图4c中所保留的线段按照上述规则处理后形成的闭环为1-15-16-5-17-18-1;20-3-19-20;24-4-21-22-6-23-24。
利用上述方法就可以对STL模型的相邻两层切片的数据进行布尔差运算。将某模型的第1层切片的截面数据传输至打印机,第2~n层切片的截面数据都剔除与上一层切片的截面数据重复的部分,仅留下该层与上一层不相同的截面数据,然后将该不相同的截面数据传输到打印机,并且使之与相邻两个层切片截面数据的相同部分结合,组成一个完整的单层层切片截面数据。因此,这种压缩传输方法能够最大程度地减小了传输数据的冗余信息,提高3D打印机的数据传输和打印效率。
实施例5
如图5a所示,其显示了一个层切片A的截面轮廓,层切片A具有外轮廓和内轮廓。将层切片A的外轮廓的点按逆时针排序,内轮廓的点按照顺时针排序,则层切片A的外轮廓为{8,9,10,11,8},内轮廓为{12,13,14,12},即在层切片A上设置有一个由线段12-13-14-12围成的通孔。
如图5b所示,其显示了一个层切片B的截面轮廓,层切片B具有外轮廓。将层切片B的外轮廓的点按逆时针排序,则层切片B的外轮廓为{1,2,3,4,1}。
因此,按照外轮廓和内轮廓上的点的方向,层切片的实体部分总是处于外轮廓和内轮廓的左侧。
在打印时,先传输的为层切片A的数据,后传输的为层切片B的数据。
如图5c所示,将层切片A截面轮廓(外轮廓和内轮廓)与层切片B的截面轮廓(外轮廓)相互叠加,对层切片A和层切片B的外轮廓和内轮廓相互求交,得到交点15、20、19、24、21、18。
即,层切片A截面的外轮廓表示为{8,9,20,19,10,11,18,15,8};
层切片A截面的内轮廓表示为{12,21,13,14,24,12};
层切片B截面的外轮廓表示为{1,15,2,20,3,19,24,4,21,18,1},
对于层切片B的外轮廓的每一条线段,该线段如果处于层切片A之外(即处于层切片A的外轮廓之外或者处于层切片A的内轮廓之内),则予以保留。图5c中层切片B被保留的线段为1-15,20-3,3-19,24-4,4-21,18-1。
对于层切片A的外轮廓和内轮廓的每一条线段,该线段如果处于层切片B之内(即处于层切片B的外轮廓之内)则保留。图5c层切片A被保留的线段为15-18,21-12,12-24,19-20。
任意从层切片A或者层切片B的轮廓线段中取出一条作为初始线段,查找以该初始线段的终点作为起点的下一条线段,将该条线段连接于初始线段之后。重复进行上述操作,使得每一条线段首尾相连,直至最后一条线段的终点连接至上述初始线段的起点,以形成一个封闭的环。因此,对所有保留下来的线段做如上操作,则得到的n(n≥0)个闭环。层切片B在上述闭环内的截面数据即是层切片B与层切片A的截面数据不相同的部分。
在该运算结果的显示的图形中,层切片的外轮廓仍然是逆时针排序,层切片的内轮廓仍然是顺时针排序。因此,图4c中所保留的线段按照上述规则处理后形成的闭环为1-15-18-1;20-3-19-20;24-4-21-12-24。
利用上述方法就可以对STL模型的相邻两层切片的数据进行布尔差运算。将某模型的第1层切片的截面数据传输至打印机,第2~n层切片的截面数据都剔除与上一层切片的截面数据重复的部分,仅留下该层与上一层不相同的截面数据,然后将该不相同的截面数据传输到打印机,并且使之与相邻两个层切片截面数据的相同部分结合,组成一个完整的单层层切片截面数据。因此,这种压缩传输方法能够最大程度地减小了传输数据的冗余信息,提高3D打印机的数据传输和打印效率。
实施例6
如图6a所示,其显示了一个层切片A的截面轮廓,层切片A具有外轮廓。将层切片A的外轮廓的点按逆时针排序,则层切片A的外轮廓为{8,9,10,11,8}。
如图6b所示,其显示了一个层切片B的截面轮廓,层切片B具有外轮廓和内轮廓。将层切片B的外轮廓的点按逆时针排序,内轮廓的点按照顺时针排序,则层切片B的外轮廓为{1,2,3,4,1},内轮廓为{5,6,7,5},即在层切片B上设置有一个由线段5-6-7-5围成的通孔。
因此,按照外轮廓和内轮廓上的点的方向,层切片的实体部分总是处于外轮廓和内轮廓的左侧。
在打印时,先传输的为层切片A的数据,后传输的为层切片B的数据。
如图6c所示,将层切片A截面轮廓(外轮廓)与层切片B的截面轮廓(外轮廓和内轮廓)相互叠加,对层切片A和层切片B的外轮廓和内轮廓相互求交,得到交点15~20。
即,层切片A截面的外轮廓表示为{8,9,20,19,10,11,18,17,16,15,8};
层切片B截面的外轮廓表示为{1,15,2,20,3,19,4,18,1},
层切片B截面的内轮廓表示为{5,17,6,7,16,5};
对于层切片B的外轮廓和内轮廓的每一条线段,该线段如果处于层切片A之外(即处于层切片A的外轮廓之外),则予以保留。图6c中层切片B被保留的线段为1-15,20-3,3-19,18-1。
对于层切片A的外轮廓的每一条线段,该线段如果处于层切片B之内(即处于层切片B的外轮廓和内轮廓之间)则保留。图6c层切片A被保留的线段为15-16,17-18,19-20,16-5;5-17。
任意从层切片A或者层切片B的轮廓线段中取出一条作为初始线段,查找以该初始线段的终点作为起点的下一条线段,将该条线段连接于初始线段之后。重复进行上述操作,使得每一条线段首尾相连,直至最后一条线段的终点连接至上述初始线段的起点,以形成一个封闭的环。因此,对所有保留下来的线段做如上操作,则得到的n(n≥0)个闭环。层切片B在上述闭环内的截面数据即是层切片B与层切片A的截面数据不相同的部分。
在该运算结果的显示的图形中,层切片的外轮廓仍然是逆时针排序,层切片的内轮廓仍然是顺时针排序。因此,图4c中所保留的线段按照上述规则处理后形成的闭环为1-15-16-5-17-18-1;20-3-19-20。
利用上述方法就可以对STL模型的相邻两层切片的数据进行布尔差运算。将某模型的第1层切片的截面数据传输至打印机,第2~n层切片的截面数据都剔除与上一层切片的截面数据重复的部分,仅留下该层与上一层不相同的截面数据,然后将该不相同的截面数据传输到打印机,并且使之与相邻两个层切片截面数据的相同部分结合,组成一个完整的单层层切片截面数据。因此,这种压缩传输方法能够最大程度地减小了传输数据的冗余信息,提高3D打印机的数据传输和打印效率。
实施例7
如图7所示的复杂的层切片的截面轮廓,如上所述,实体A,实体B和实体C的轮廓具有包容关系,但因为实体的互斥性(不可与其它实体相交,因为相交后就变成一个整体),所以对该复杂截面与其它截面(实体D)进行布尔差运算,就可以将其分解为对实体A、实体B、实体C的截面与其它截面(实体D)单独求布尔差运算,然后将布尔差运算的结果整合,即可得到该复杂的层切片的截面与其它截面的不同部分的数据。
以上对本发明的各种实施例进行了详细说明。本领域技术人员将理解,可在不偏离本发明范围(由所附的权利要求书限定)的情况下,对实施方案进行各种修改、改变和变化。对权利要求范围的解释应从整体解释且符合与说明一致的最宽范围,并不限于示例或详细说明中的实施范例。