NSDT工具推荐Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - AI模型在线查看 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割 - 3D道路快速建模

STL(StereoLithography:立体光刻)文件是 3 维表面几何形状的三角形表示。 表面被逻辑地细分或分解为一系列小三角形(面)。 每个面由垂直方向和代表三角形顶点(角)的三个点来描述。 切片算法使用这些数据来确定制造商要构建的 3 维形状的横截面。

本文描述了 STL 文件格式的技术细节,主要面向有兴趣开发可读写 STL 文件的硬件或软件的人提供。大多数用户不需要关心,可以使用 3DConvert在线工具将其他格式的3D模型转换为STL格式。

1、STL格式规格

STL 文件由构面数据列表组成。 每个面由单位法线(垂直于三角形且长度为 1.0 的线)和三个顶点(角)唯一标识。 法线和每个顶点分别由三个坐标指定,因此每个面总共存储 12 个数字。

1.1 STL 文件中的面方向

图1:面的方向由单位法线的方向和顶点列出的顺序决定

面(facet)定义了 3 维对象的表面。 因此,每个面都是对象内部和外部之间边界的一部分。 面的方向(哪个方向是“外”,哪个方向路是“内”)以两种方式冗余指定,这两种方式必须一致。 首先,法线的方向是向外的。 其次,从外部观察对象时,顶点按逆时针顺序列出(右手定则)。 这些规则如图 1 所示。

1.2 顶点到顶点规则

每个三角形必须与其相邻的每个三角形共享两个顶点。 换句话说,一个三角形的顶点不能位于另一个三角形的一边上。 图 2 对此进行了说明。

图2:顶点到顶点规则。 左图显示了违反规则的情况。 正确的配置如右图所示

所代表的物体必须位于全正八分圆内。 换句话说,所有顶点坐标必须是正定(非负且非零)数。 STL文件不包含任何比例信息; 坐标采用任意单位。

官方 3D Systems StL 规范文档指出,有一项规定包含“建筑参数的特殊属性”,但没有给出包含此类属性的格式。 此外,该文件还指定了“三角形边的最小长度”和“三角形最大尺寸”的数据,但这些数字的含义是可疑的。

建议按 z 值升序对三角形进行排序,但不是必需的,以便优化切片程序的性能。

通常,STL 文件以扩展名“STL”保存,不区分大小写。 切片程序可能需要此扩展名,也可能允许指定不同的扩展名。

StL 标准包括两种数据格式:ASCII 和二进制。 下面分别进行描述。

2、STL ASCII 格式

ASCII 格式主要用于测试新的 CAD 界面。 其文件较大,不适合一般用途。

ASCII STL 文件的语法如下:

粗体表示关键字; 这些必须以小写形式出现。 注意:

  • facet normalouter loop中都有空格, end开头的关键字都没有空格。
  • 缩进必须有空格; 不允许使用 tab
  • 符号 {…}+表示大括号中的内容可以重复一次或多次。
  • 斜体符号是要替换为用户指定值的变量。
  • 平面法线和顶点线中的数值数据是单精度浮点数,例如 1.23456E+789
  • 面法线坐标可能有一个前导减号; 顶点坐标可能不会。

3、STL 二进制格式

二进制格式使用 IEEE 整数和浮点数值表示形式。

二进制 STL 文件的语法如下:

符号 {…}+ 表示大括号中的内容可以重复一次或多次。 属性语法未记录在正式规范中。 指定属性字节计数应设置为零。


原文链接:The StL Format

BimAnt翻译整理,转载请标明出处