STL文件的起源
美国3D Systems公司于1987年制定了STL (STereoLithography)文件格式,它以小三角面片为基本单位,离散地近似描述三维实体模型的表面.STL 文件最初应用于快速成形(Rapid Prototyping ,RP)领域 ,并迅速成为RP领域事实上的工业标准;同时,STL 文件也在快速成形之外的各种需要三维实体模型的领域中获得了广泛的应用.
STL文件规则
(1)共顶点规则
每一个三角面片必须与其相邻的每一个面片共两个顶点 ,即一个三角面片的顶点不能落在相邻的任何三角面片的边上;
(2)取向规则
单个面片法向量符合右手法则且其法向量必须指向实体外面;
(3)充满规则
小三角面片必须布满三维模型的所有表面,不得有任何遗漏;
(4)取值规则
每个顶点的坐标值必须为非负 ,即 STL 文件的实体应该在坐标系的第一象限.
STL文件的分类
目前的STL文件格式包括二进制文件(BINARY)和文本文件(ASCII)两种.
二进制格式
二进制STL文件用固定的字节数来给出三角面片的几何信息。
前面84个字节描述3D模型文件信息。文件起始的80个字节是文件头,用于存贮零件名;紧接着用 4个字节的整数来描述模型的三角面片个数。
后面逐个给出每个三角面片的几何信息.每个三角面片占用固定的50个字节,依次是 3个4 字节浮点数(角面片的法矢量)3个4 字节浮点数(第一个个顶点的坐标)3个4 字节浮点数(第二个顶点的坐标)3个4 字节浮点数(第三个顶点的坐标)最后2个字节用来描述三角面片的属性信息。
ASCII文件格式
ASCII码格式的STL文件逐行给出三角面片的几何信息,每一行以1个或2个关键字开头。在STL文件中的三角面片的信息单元 facet 是一个带矢量方向的三角面片,STL 三维模型就是由一系列这样的三角面片构成。整个STL文件首行给出了文件路径及文件名。在一个 STL 文件中,每一个 facet 由 7 行数据组成,facet normal是三角面片指向实体外部的法矢量坐标,outer loop说明随后的3行数据分别是三角面片的 3 个顶点坐标,3 顶点沿指向实体外部的法矢量方向逆时针排列。
solid filename stl //自定义文件头
facet normal x y z //三角面片法向量的3个
outer loop
vertex x y z //三角面片第一个顶点坐标
vertex x y z //三角面片第二个顶点坐标
vertex x y z //三角面片第三个顶点坐标
endloop
endfacet //完成一个三角面片定义
……
endsolid filename stl ∥整个STL文件定义结束
一个具体STL 文件如下:
solid AutoCAD
facet normal -9.9619470e-001 0.0000000e+000 8.7155743e-002
outer loop
vertex 0.0000000e+000 2.0000000e+002 0.0000000e+000
vertex 0.0000000e+000 0.0000000e+000 0.0000000e+000
vertex 3.4995465e+000 3.4995465e+000 4.0000000e+001
endloop
endfacet
facet normal -9.9619470e-001 7.3350837e-017 8.7155743e-002
outer loop
vertex 0.0000000e+000 2.0000000e+002 0.0000000e+000
vertex 3.4995465e+000 3.4995465e+000 4.0000000e+001
vertex 3.4995465e+000 1.9650045e+002 4.0000000e+001
endloop
endfacet
facet normal 0.0000000e+000 9.9619470e-001 8.7155743e-002
outer loop
vertex 2.0000000e+002 2.0000000e+002 0.0000000e+000
vertex 0.0000000e+000 2.0000000e+002 0.0000000e+000
vertex 3.4995465e+000 1.9650045e+002 4.0000000e+001
endloop
endfacet
facet normal 1.4670167e-016 9.9619470e-001 8.7155743e-002
outer loop
vertex 2.0000000e+002 2.0000000e+002 0.0000000e+000
vertex 3.4995465e+000 1.9650045e+002 4.0000000e+001
vertex 1.9650045e+002 1.9650045e+002 4.0000000e+001
endloop
endfacet
facet normal 9.9619470e-001 0.0000000e+000 8.7155743e-002
outer loop
vertex 2.0000000e+002 0.0000000e+000 0.0000000e+000
vertex 2.0000000e+002 2.0000000e+002 0.0000000e+000
vertex 1.9650045e+002 1.9650045e+002 4.0000000e+001
endloop
endfacet
facet normal 9.9619470e-001 -1.4670167e-016 8.7155743e-002
outer loop
vertex 2.0000000e+002 0.0000000e+000 0.0000000e+000
vertex 1.9650045e+002 1.9650045e+002 4.0000000e+001
vertex 1.9650045e+002 3.4995465e+000 4.0000000e+001
endloop
endfacet
facet normal 0.0000000e+000 -9.9619470e-001 8.7155743e-002
outer loop
vertex 0.0000000e+000 0.0000000e+000 0.0000000e+000
vertex 2.0000000e+002 0.0000000e+000 0.0000000e+000
vertex 1.9650045e+002 3.4995465e+000 4.0000000e+001
endloop
endfacet
facet normal -7.3350837e-017 -9.9619470e-001 8.7155743e-002
outer loop
vertex 0.0000000e+000 0.0000000e+000 0.0000000e+000
vertex 1.9650045e+002 3.4995465e+000 4.0000000e+001
vertex 3.4995465e+000 3.4995465e+000 4.0000000e+001
endloop
endfacet
facet normal 0.0000000e+000 0.0000000e+000 -1.0000000e+000
outer loop
vertex 2.0000000e+002 0.0000000e+000 0.0000000e+000
vertex 0.0000000e+000 0.0000000e+000 0.0000000e+000
vertex 0.0000000e+000 2.0000000e+002 0.0000000e+000
endloop
endfacet
facet normal 0.0000000e+000 0.0000000e+000 -1.0000000e+000
outer loop
vertex 2.0000000e+002 0.0000000e+000 0.0000000e+000
vertex 0.0000000e+000 2.0000000e+002 0.0000000e+000
vertex 2.0000000e+002 2.0000000e+002 0.0000000e+000
endloop
endfacet
facet normal 0.0000000e+000 0.0000000e+000 1.0000000e+000
outer loop
vertex 1.9650045e+002 1.9650045e+002 4.0000000e+001
vertex 3.4995465e+000 1.9650045e+002 4.0000000e+001
vertex 3.4995465e+000 3.4995465e+000 4.0000000e+001
endloop
endfacet
facet normal 0.0000000e+000 0.0000000e+000 1.0000000e+000
outer loop
vertex 1.9650045e+002 3.4995465e+000 4.0000000e+001
vertex 1.9650045e+002 1.9650045e+002 4.0000000e+001
vertex 3.4995465e+000 3.4995465e+000 4.0000000e+001
endloop
endfacet
endsolid AutoCAD