什么是 .stl 文件?为什么它没有单位,以及如何在 Mac 上打开它
STL 是 3D 打印中最普及的格式,只用一串三角形来描述模型的表面;它诞生于 20 世纪 80 年代末的 3D Systems,用于立体光刻,几乎所有 CAD 程序和 3D 扫描仪至今仍会导出它。它没有单位,也没有颜色,你在使用它时遇到的大多数麻烦都源于此。
概览
- 扩展名
- .stl
- 类型
- 三角网格
- 创建者
- 3D Systems
- 始于
- 1988
- 标准
- 不是正式标准
- macOS 自身(不装应用)
- 能打开,也能显示预览
信息核对于 2026年11月4日
只有三角形
STL 不知道什么是圆柱、孔或圆角。它用平面三角形拼出每一个曲面,并为每个三角形存储三个顶点和一个法线——三角形朝外的方向。一个边长为 20 的立方体,文本形式是这样开头的:
solid cube
facet normal 0 0 -1
outer loop
vertex 0 0 0
vertex 0 20 0
vertex 20 20 0
endloop
endfacet有两点一眼就能看出来。数字 20 没有单位:可能是 20 毫米、20 英寸,也可能是 20 米。而且每个三角形都会把它的顶点重新写一遍,包括与相邻三角形共用的顶点。读取文件的程序必须自己把网格缝合起来。
所以一个圆润的形状需要大量三角形。三角形越多,模型越平滑——文件也越大。
文本还是二进制
同一个扩展名背后有两种编码。文本(ASCII)就是上面看到的样子。二进制则有一个 80 字节的文件头、三角形数量,然后每个三角形占 50 字节。所以二进制 STL 的大小恰好是 84 + 50 × 三角形数量。
同一个有 12 个三角形的立方体,文本形式是 1,478 字节,二进制是 684 字节——正好是 84 + 12 × 50。模型大时差别就明显了:一百万个三角形的二进制文件约 50 MB,文本形式则要大得多。
除非你需要在文本编辑器中阅读文件,否则请导出二进制。文本 STL 以单词 solid 开头——但要注意,二进制文件头也可能以同一个单词开头。可靠的判断方法是看大小:二进制文件的大小与上面的公式完全吻合。
为什么你的模型小了 25.4 倍(或差了 10 倍)
STL 规范说坐标采用任意单位。切片软件通常把它们当作毫米读取。所以以英寸设计的模型导入后会小 25.4 倍,以厘米设计的会小 10 倍。Prusa、Autodesk Fusion、Rhino 和 Bambu Lab 的论坛上一再有人问这个问题。
切片之前先检查尺寸。如果一个本应是 100 mm 的盒子量出来是 3.9,那它原本是英寸:在切片软件中把它缩放到 2540%。以毫米导出,或者使用会记录单位的 3MF,就能彻底避免这个问题。
颜色:两种互不兼容的附加方案
STL 标准里没有颜色,文本 STL 也无法保存颜色。尽管如此,一些程序还是把颜色存进二进制编码中未使用的字节里,方式有两种。VisCAM 和 SolidView 为每个三角形存一种颜色;Materialise Magics 则在文件头中加一种颜色,并以相反的方式解读同一个逐三角形的位。读取程序无法分辨文件用的是哪种约定,所以颜色会出错。
Preview3D 不读取 STL 中的颜色,会以中性色显示模型。如果你需要带颜色的模型,请使用 3MF。
网格错误
由于每个三角形都带着自己的顶点,没有什么能保证相邻的三角形真正接合。导出的 STL 经常有孔洞、翻转的三角形,或被两个以上的面共用的边(非流形),切片软件随后会报错或修复它们。Library of Congress 提到了 1997 年和 2003 年的研究,那时就已记录了这种情况。
STL 从何而来
Chuck Hull 于 1986 年参与创立了 3D Systems,以将他的立体光刻专利商业化,而 STL 就是为了把 CAD 数据送进它的机器而制定的。根据 Library of Congress 的说法,它最早在 1988 年有文档记录;1989 年 10 月的规范是最后一次发布的版本。Paul Bourke 和 Wikipedia 认为它是由 Albert Consulting Group 开发的。
最初的规范有一些奇怪的规定。整个模型必须位于正坐标中,不能有任何低于零的部分;它还建议按高度对三角形排序,以加快切片。这种格式已经没有人再开发,也没有维护者。按照 Library of Congress 的引用,Autodesk 的 Meshmixer 文档称它为“有史以来最糟糕的网格格式”(the worst mesh format, ever)。它仍然是 3D 打印中最普及的格式。
STL、3MF 还是 STEP?
对于要拿去打印的成品零件,STL 就够了。当单位、颜色或整个切片项目很重要时,3MF 是更好的选择。只要对方可能要编辑或制造这个零件,就发送 STEP,因为精确曲面无法从 STL 中恢复。
如何在 Mac、iPad 和 iPhone 上打开 STL
STL 是 macOS 自己就认识的少数 3D 格式之一。在 macOS 27 上(在 27.0.1 上核实过),预览可以打开它,按空格键(快速查看)和访达缩略图也都能显示它。在较旧的版本上情况不一;在 Autodesk 论坛上,有人抱怨 OS X 中的预览打不开二进制 STL。
如果只是快速看一眼,这就够了。Preview3D 补充了预览做不到的事:
- 模型信息中的尺寸和三角形数量,让你在文件送进切片软件之前发现单位错误;
- 网格检查:孔洞、翻转的三角形、被两个以上的面共用的边,以及独立部件;
- 三种视图——着色、着色加边线和线框——对于 STL,还会突出显示折边线,让模型依然清晰可读;
- 用于由多个独立实体组成的模型的爆炸视图滑块;
- 在 Mac 上,把 STL 转换为 OBJ 或 PLY;
- iPad、iPhone 和 Apple Vision Pro。在 iPad 和 iPhone 上,AR 会把模型以真实大小立在你的桌上。Preview3D 把 STL 按毫米读取,所以以英寸设计的模型在那里也会小 25.4 倍,你就能在打印之前发现单位错误。
它根据大小而不是开头的字节来识别二进制 STL,所以文件头以 solid 开头的文件骗不了它。

关于折边线和三种视图,我写了《着色、加边线还是线框:用三种方式看同一个模型》。
常见问题
STL 用的是什么单位?
没有单位。坐标只是数字,切片软件通常把它们当作毫米读取。
为什么我的模型导入后变得很小?
最可能是因为它以英寸设计。在切片软件中把它缩放到 2540%,或者以毫米重新导出。
应该导出 ASCII 还是二进制 STL?
二进制。它小得多。
STL 能保存颜色吗?
按标准不能。有些程序把颜色存在二进制编码中,但方式有两种,互不兼容。需要颜色的话,请使用 3MF。
STL 能转换为 STEP 吗?
形式上可以,但三角形仍然是三角形。精确的圆柱和孔无法从 STL 中恢复。
Mac 不装其他应用能打开 STL 吗?
在 macOS 27 上可以:预览能打开它,快速查看也能显示它。不过根据 Apple 的指南,预览只能把 3D 模型存储为 USD 或 USDZ,而不能存储为其他用于打印的格式。
相关页面
- .3mf 文件——带单位和颜色的网格
- .step 和 .stp 文件——来自 CAD 的精确几何
资料来源
- Library of Congress:STL、二进制 STL 和 ASCII STL——历史、颜色附加方案、网格错误
- Marshall Burns:STL Format——1989 年规范的重印版,单位,正坐标
- Paul Bourke:STL format——二进制编码
- IANA:model/stl
- Apple:Model I/O 与 STL
- Apple:在预览中导出 3D 文件
- Prusa 论坛:导入 PrusaSlicer 后 STL 太小
- Autodesk 论坛:OS X 预览中的 STL
你是否遇到过打开后尺寸不对的 STL,或者因为网格错误被切片软件拒绝的 STL?请写信到 apps@xfanta.com,告诉我它来自哪个程序,我会把它补充到这里。
在 Preview3D 中打开
在 Mac、iPad、iPhone 和 Vision Pro 上打开 STEP、3MF、STL、G-code、BGCODE 等格式。一次购买,无需账户,无需联网。
App Store 上的 Preview3D