STL文件格式的规则
(1)共顶点规则。每一个三角形平面必须与每个相邻的小三角形平面共用两个顶点,也就是说,一个三角形平面的顶点不能落在相邻的任何一个小三角形平面的边上
如何修复三维打印模型STL文件格式的规则和缺陷
违反共顶点规则的错误
(2)取向规则。对于每一个小三角形平面,其法向量必须向外,3个顶点连成的矢量方向按照逆时针方向的顺序确定(右手法则),而且,对于相邻的小三角形平面,不能出现取向矛盾,如图所示。
如何修复三维打印模型STL文件格式的规则和缺陷
(3)取值规则。每个小三角形平面的顶点坐标值必须是正值,零和负值是错误的。
(4)充满规则。在三维模型的所有表面上,必须布满小三角形面片,不得有任何遗漏
STL文件存在的问题
由于STL文件不包含其拓朴关系的数据,加上STL文件格式本身以及从CAD软件到STL文件格式转换过程造成的问题,所产生的STL文件难免有少量的缺陷。其中,最常见的缺陷有:
(1)存在缝隙,即三角形面片的丢失。对于大曲率的曲面相交部分,三角化时就会产生这种错误,如图3所示。在显示的STL格式模型上,会有错误的裂缝或孔洞(其中无三角形),违反了充满规则。此时,应在这些裂缝或孔沿处增补若干小三角形面片,从而消除这种错误。
如何修复三维打印模型STL文件格式的规则和缺陷
三角形之间的缝隙示意图
(2)畸变,即三角形面片的所有边都共线。这种缺陷通常发生在从三维实体到STL文件的转换算法上。由于采用在其相交线处向不同实体产生三角形面片,就会导致相交线处的三角形面片的畸变。
(3)三角形面片的重叠。面片的重叠主要是由于在三角化面片时数值的圆整误差所产生的。由于三角形的顶点在3D空间中是以浮点数表示的,而不是整数。如果圆整误差范围较大,就会导致面片的重叠。
(4)歧义的拓朴关系。按照共顶点规则,在任一边上,仅存在两个三角形共边。若存在两个以上的三角形共此边,就产生了歧义的拓朴关系。这些问题可能发生在三角化具有尖角的平面、不同实体的相交部分或生成STL文件
时控制参数的误差上。由于STL文件的这种缺陷,必须事先对STL文件的模型数据的有效性进行检查,以保证用于快速成形系统的STL文件的有效性。否则,具有缺陷的STL文件就会导致快速成形系统加工时的许多问题,如原型的几何失真等,严重时会导致死机。
一般的解决方法
由于STL文件存在以上的缺陷与不足,就需要有一个软件来修改STL文件,比如国内的AFS公司和美国的3D System公司就有此类软件。但要想找出STL文件中的问题并加以修改并非轻而易举的,也不是所有的缺陷都能修复的。传统的解决方法是使用(或开发)一个STL纠错程序,将STL文件中的错误排除,生成新的STL文件,再进行切片(有些系统将纠错、切片做在一个模块里,其原理仍是一样的)。但由于三维信息的复杂性,多数算法目前并不能将STL文件所描述的三维拓朴信息还原出一个整体、全局意义上的实体信息模型,无法像人一样对三维实体有一个空间上的认识,因而纠错只能停留在纠正简单的错误上,而无法对复杂错误进行自动修复,只能标出错误点的位置,依赖人手工进行一个个三角形的添加、删除工作,这通常需要一到数天的时间,不仅枯燥、麻烦,并且也失去了快速成形的意义。由于STL文件的缺陷会导致切片程序上的许多错误,有时会使切片过程很困难,于是许多学者针对STL文件的缺陷提出容错的切片算法。如文献[6]中提出这样的切片算法:直接对STL文件切片,在其切片的二维层次上进行修复,即在二维轮廓信息层次上发现错误,并作相应地去除多余轮廓线段、在轮廓断点处进行插补等操作,但由于轮廓上错误的千变万化,不是所有的错误都能得到修正。
针对我们开发的激光烧结快速成形系统的特点,我们采用对STL文件的缺陷进行直接的修复工件。针对STL文件中的三角形面片丢失的缺陷,采取的基本算法如下:首先,把STL文件中所存在的缝隙的边界线找出来,并标示它们。然后,在以上所得的边界线内用小三角形面片进行修复与填补。所产生的小三角形面片的尺寸大小必须以这缝隙的边界线为限制,并且其法向要受相邻的实体上三角形面片法向的控制,不能出现取向上的矛盾。这样才能保证在生成缝隙处小三角形面片的过程中,所产生的小三角形面片取向上的正确性和一致性。实体上三角形面片的法向是可以从STL文件得到的。该算法就能保证对于非有效STL文件的修复后小三角形面片法向上的正确性。这种修复的算法能有效地修复常见STL文件中的缝隙缺陷问题,并且易于用Visual C++语言来实现。我们对此算法进
行了试验。试验条件为:激光功率P=40W,光斑直径d =0.3 mm,扫描速度v =200mm/s,扫描间隙s =0.10mm,铺粉厚度h =0.15mm,粉末配比为环氧聚脂:覆腊树脂砂=10:1。烧结后的整体叶轮零件如图所示,达到了一定的精度和表面质量要求,具有较好的效果。
分析了用于快速成形系统的STL文件常见的错误,并针对其中的三角形面片丢失问题进行了讨论,得出一个合理可行的修复算法。该算法能有效地修复常见的STL文件中缝隙缺陷问题。采用Visual C++语言将该算法实现提高打印表面精度。
|