admin管理员组

文章数量:1530884

2024年7月22日发(作者:)

3D打印机和扫描仪的最常用数据格式STL

STL文件格式是由3D SYSTEM公司制定的文件接口协议,它以小三角面片为基本单

位,离散地近似描述三维实体模型的表面,STL只能用来表示封闭的面或者体。STL文件

格式简单,只能描述三维物体的几何信息,不支持颜色材质等信息。 STL的三角面片是平

面片,而另一种通用的3D数据格式IGS的四边形面是曲面,针对曲面的变形修正目前有比

较成熟的算法,所以用户如果需要变形修正STL数据再用于打印或雕刻的话,一般先要把

它转换成IGS格式后用Solidworks或UG等3D设计软件自由修正后再转会STL,这个转

换功能Geomagic等逆向软件可以做。

STL 文件最初应用于快速成形(Rapid Prototyping ,RP)领域 ,并迅速成为RP领域

事实上的工业标准;同时,STL 文件也在快速成形之外的各种需要三维实体模型的领域中获

得了广泛的应用。

STL数据在3D打印机应用中,需要把它转换成一层层堆叠的数据后再转成通用的机械

加工用的G代码,用于控制打印机的各个电机进行打印,这就是3D打印机打印软件的最

基本功能。许多开发者对现有的打印软件的打印参数设置感到局限,想自己重写打印软件来

打印出特异的效果,这就需要详细了解STL数据文件的格式,以下详细介绍:

1. STL文件规则

(1) 共顶点规则

每一个三角面片必须与其相邻的每一个面片共两个顶点 ,即一个三角面片的顶点不能

落在相邻的任何三角面片的边上;

(2) 取向规则

单个面片法向量符合右手法则且其法向量必须指向实体外面;

(3) 充满规则

小三角面片必须布满三维模型的所有表面,不得有任何遗漏;

(4)取值规则

每个顶点的坐标值必须为非负数,即STL文件的实体应该在坐标系的第一象限。

2. STL文件的分类

目前的STL文件格式包括二进制文件(BINARY)

和文本文件(ASCII)两种。

2.1二进制格式

二进制STL文件用固定的字节数来给出三角面片的几何信息。

前面84个字节描述3D模型文件信息。文件起始的80个字节是文件头,用于存贮零件名;

紧接着用 4个字节的整数来描述模型的三角面片个数(4个字节可最多表达近43亿个三角

面)。

后面逐个给出每个三角面片的几何信息。每个三角面片占用固定的50个字节,依次是

3个4 字节浮点数(三角面片的法矢量)、3个4 字节浮点数(第一个个顶点的坐标,4字节的

浮点数因为STL只表示非负数,所以可精确表达的数据十进制位数可以达10位)、3个4 字

节浮点数(第二个顶点的坐标)、3个4 字节浮点数(第三个顶点的坐标)。

最后2个字节用来描述三角面片的属性信息(这两个字节一般空着备用)。

2.2 文本格式

文本格式就是可以被文本编辑器打开和编辑(如Windows的Notepad)。ASCII码文本

格式的STL文件逐行给出三角面片的几何信息,每一行以1个或2个关键字开头。在STL

文件中的三角面片的信息单元 facet 是一个带矢量方向的三角面片,STL 三维模型就是由

一系列这样的三角面片构成。整个STL文件首行给出了文件路径及文件名。在一个 STL 文

件中,每一个 facet 由 7 行数据组成,facet normal是三角面片指向实体外部的法矢量坐

标,outer loop说明随后的3行数据分别是三角面片的 3 个顶点坐标,3 顶点沿指向实体

外部的法矢量方向逆时针排列(即右手法则,大拇指代表法矢量)。

以下用Notepad记事本软件随便文本格式的STL文件的前几行文字。(“//”及其后中文

字为作者加的注释文字,Notepad上不显示。)

-------------------------------------------------------------------------------------------

solid filename //自定义文件头,solid及最后的endsolid表示其间文本代表整个三角面构

成的网络的数据;filename就是这个stl文件的文件名。

facet normal x y z //facet和后面的endfacet表示其间文本代表一个三角面片的数据;法

向量的3个分量值,normal就是该三角面的法矢量,x、y、z是该法矢量的三个数值。

outer loop

vertex x y z //三角面片第一个顶点坐标 ,vertex是顶点的意思。

vertex x y z //三角面片第二个顶点坐标

vertex x y z //三角面片第三个顶点坐标

endloop

endfacet //完成一个三角面片定义

……

endsolid filename stl ∥整个STL文件定义结束

--------------------------------------------------------------------------------------------

从以上可估算出文本格式的数据量是二进制的五倍左右,所以用户从thingiver。com

下载的STL文件多少二进制的。但文本格式可读性强。

上述的法矢量(又叫法向量,指垂直于对应三角面且指向整个实体外面的向量)的三个

分量值其实可以通过随后的三个顶点的坐标值通过线性代数的行列式方法计算出(具体算法

可专门写篇文章,在此省略),所以许多读取和显示STL的软件通常都跳过法矢量数据以节

省内存和读取时间。

顺便提一下:被广泛使用的Autocad的DXF一般情况下也是文本格式文件,DXF的数

据是顶点坐标和三角形顶点的顺序,没有法向量信息,所以DXF转换到STL的过程中软件

要通过顶点坐标和先后顺序计算出法向量信息。

3. CAD造型方法

在CAD软件包中,当您输出STL文档时,您可能会看到的参数设定名称,如弦高(chord

height)、误差(deviation)、角度公差(angle tolerance)、或是某些相似的名称。建议储存值

为0.01或是0.02。

以下几种常用3D设计和造型软件设计完成后要输出STL文档时的设置:

AutoCAD:

输出模型必须为三维实体,且XYZ坐标都为正值。在命令行输入命令“Faceters” -> 设定

FACETRES为1 到10 之间的一个值 (1为低精度,10为高精度) -> 然后在命令行输入命

令“STLOUT” -> 选择实体 -> 选择“Y”,输出二进制文件 -> 选择文件名。

本文标签: 文件面片顶点信息打印