自从3D打印诞生以来,STL 一直扮演着3D设计软件与3D打印机硬件之间的桥梁作用。STL 文件格式在 1987 年由3DSystems 公司连同光固化立体造型术一起发明。STL 是 Surface Tesselation Language 的缩写,也有人说 STL 的缩写来自于 STereoLithography(光固化)或者是 Standard Transform Language(标准转换语言)。
STL 文件规格
STL 文件通过将物体表面分割成小的三角形来描述物体。每个小的三角形都由三个顶点坐标以及一个名为法线、用来表示方向的数量定义。顶点坐标与法线各包含三个数字,因此每个三角形由 12 个数字组成。有了这些三角形数据,3D打印机就能够完成分层并且计算路径,进而完成打印。值得注意的是,这些数字是没有单位的,意味着 STL 文件中定义的物体可以自由缩放。
文本格式的 STL 文件
将每个三角形的 12 个数字以文本格式保存,便构成了文本格式的 STL 文件。文本格式的语法如下,
其中的粗体字是 STL 的关键字,他们必须是小写的。和绝大多数我们熟悉的文本文件不同,STL 文件中的缩进必须用空格定义,而不能使用 Tab。斜体字的地方便是定义三角形的数值。文本格式的 STL 文件通常都很大,所以实际应用中不太遇到。
二进制格式的 STL 文件
二进制格式的 STL 文件更为紧凑。它的语法如下,
和大多数二进制文件一样,文件以一个头部记录开始。该头部包含 84 字节,其中的前 80 个用于保存作者的名字以及其他文件信息,之后的 4 个字节记录文件中的三角形数量。文件头之后便是三角形记录。每个三角形记录占用 50 字节,前 48 个字节是三角形的坐标以及法线,最后的 2 个字节未使用。
二进制文件牺牲了文本文件的可读性,不过却大大节省了文件空间。对于一个包含 50000 个三角形的物体而言,二进制文件的大小可能只有文本文件的 1/5。
STL 文件的限制
3D打印技术自诞生以来已经有了长足的进步,但是 STL 文件却变化不大,如今它已经有些跟不上时代了,比如它无法定义打印的材料,颜色以及物体材质。甚至有人开始诟病 STL 文件不包含单位。即便如此,它仍然是3D打印的事实标准,在3D打印中扮演着重要角色。