基于VS20083D打印切片算法探究.docVIP

  • 5
  • 0
  • 约2.97千字
  • 约 6页
  • 2017-11-27 发布于福建
  • 举报
基于VS20083D打印切片算法探究

基于VS20083D打印切片算法探究   【摘 要】针对3D打印机工作时所需的STL文件,设计了一种无需三角形面片法向量信息的切片算法,采用垂直轴与切平面的空间平面信息进行切片运算,并对切片过程中产生的错误数据进行了分析,在VS2008环境中实现了对STL文件的切片。研究结果表明,此种切片算法,经过对错误信息的处理可以得到片层的完整闭合轮廓信息,切片效率高。 【关键词】3D打印;STL;切片算法;VS2008 0.引言 3D打印是将Solidworks或CAD等其它三维设计软件设计的三维模型直接打印成真实物体。3D打印源于快速成型理念,它将所要打印的物体从底层开始,按照一定的层厚,一层一层堆叠起来,最终形成完整的物体。首先,由三维设计软件设计物体结构,然后将所设计的物体存储为STL格式,其次,计算机读入STL文件,将得到的文件数据运用一定的切片算法进行切片运算,得到每一层的完整轮廓,再次,根据得到的轮廓信息,对轮廓进行填充与路径规划,最后,将得到的路径信息转化为实际的电机控制量,通过电机驱动执行机构实现3D打印。从3D打印的过程中可以看出,对STL文件进行切片是实现3D打印功能的关键,完整正确的切片轮廓是后续计算的前提,它的精度直接决定了打印真实物体的精度。针对STL文件的切片技术国内外有很多算法[1-5]。每种算法都有自己的优缺点,本文采用的算法所需的数据量小,效率高,针对不同的物体能得到任何高度的完整轮廓信息。 1.STL文件概述 应用于3D打印的文件有多种文件格式,由于STL文件结构简单,多数三维设计软件都可以将设计的三维实物直接存储成STL文件,使得STL格式文件被广泛应用。 STL文件有两种格式:二进制格式与ASCII码格式。无论是哪种格式,存储的信息都是三角形的三个顶点与法向量。无数个这样的三角形面片构成了一个完整的STL文件。即三维实体。 二进制格式的STL文件格式如下: 零件名 三角形个数 三角形面片信息 其中零件名占80字节,三角形个数占4字节,每个三角形面片信息占50字节。三角形面片信息包含12字节的法向量、36字节的坐标、2字节的属性项。 ASCII码格式的STL文件格式如下: solid 文件名 facet normal nx,ny,nz outer loop vertex V1x,V1y,V1z vertex V2x,V2y,V2z vertex V3x,V3y,V3z endloop endfacet .............................. endsolid ASCII码格式的文件第一行是文件名,第二行是三角形法向量,第四行到第六行是三角形的三个顶点。二进制格式的STL文件所占用的内存小,ASCII码格式的STL文件可读性强。本文是对ASCII码格式的STL文件操作。 2.基于VS2008切片算法实现 2.1切片算法基本思想 本文设计的算法无需三角形面片法向量计算,只需根据设定的层厚,逐层计算与切平面的交点,求得两个交点坐标,将切平面与所有三角形面片计算得到的交点存储到数组中,将得到的交点坐标按照一定的顺序重新存储,形成有序的实数对以供后续处理。 2.2切片算法实现步骤 以VS2008为开发环境,实现步骤如下: STEP1:解析STL文件,获取各个三角形顶点坐标信息。 STEP2:指定层厚为LYAYETHICK,第一层高度为k*LYAYETHICK.k=1.遍历所有三角形,将与平面z=k*LYAYETHICK相交的三角形存储在一个数组中。 STEP3:找到第一个与平面z相交的三角形,求出交点坐标,并标记此三角形flag=1,表示此三角形已经被处理过,本层不在处理。 STEP4:相邻两个三角形只能共有一条边和两个顶点,利用三角形邻边关系找到与此三角形相邻的三角形,并求与平面z的交点坐标,并标记此三角形flag=1。 求交点公式: x=(x-x)+x (1) y=(y-y)+y (2) ZP=z (3) 其中:三角形一个顶点为(x,y,z),另一个顶点为(x,y,z)。 STEP5:以此类推直到遍历完本层所有三角形。 STEP6:若回到第一个三角形后,本层还有剩余的三角形没有被标记1,说明本层不止一个轮廓,还有其他轮廓,需要找到另一个轮廓的第一个三角形,然后重复STEP3到STEP5。 STEP7:k=k+1,求新的平面z,重复STEP3到STEP6,直到z大于STL文件中零件的高度。 STEP8:处理各层得到的交点,消除间距过小、间距过大及

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档