Preview3D
获取

什么是 .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 开头的文件骗不了它。

Preview3D 中的 Drop.stl:尺寸 213.8 × 266.7 × 72.0,没有单位,147,140 个三角形和 441,420 个顶点——每个三角形三个
Preview3D 中的 Drop.stl:尺寸 213.8 × 266.7 × 72.0,没有单位,147,140 个三角形和 441,420 个顶点——每个三角形三个

关于折边线和三种视图,我写了《着色、加边线还是线框:用三种方式看同一个模型》。

常见问题

STL 用的是什么单位?

没有单位。坐标只是数字,切片软件通常把它们当作毫米读取。

为什么我的模型导入后变得很小?

最可能是因为它以英寸设计。在切片软件中把它缩放到 2540%,或者以毫米重新导出。

应该导出 ASCII 还是二进制 STL?

二进制。它小得多。

STL 能保存颜色吗?

按标准不能。有些程序把颜色存在二进制编码中,但方式有两种,互不兼容。需要颜色的话,请使用 3MF。

STL 能转换为 STEP 吗?

形式上可以,但三角形仍然是三角形。精确的圆柱和孔无法从 STL 中恢复。

Mac 不装其他应用能打开 STL 吗?

在 macOS 27 上可以:预览能打开它,快速查看也能显示它。不过根据 Apple 的指南,预览只能把 3D 模型存储为 USD 或 USDZ,而不能存储为其他用于打印的格式。

相关页面

资料来源

你是否遇到过打开后尺寸不对的 STL,或者因为网格错误被切片软件拒绝的 STL?请写信到 apps@xfanta.com,告诉我它来自哪个程序,我会把它补充到这里。

在 Preview3D 中打开

在 Mac、iPad、iPhone 和 Vision Pro 上打开 STEP、3MF、STL、G-code、BGCODE 等格式。一次购买,无需账户,无需联网。

App Store 上的 Preview3D