什么是 .gcode 文件?里面有什么,以及为什么它只适合一台打印机
G-code 是一份由打印机逐行执行的文本命令清单,规定喷嘴往哪里走、推出多少材料、保持什么温度。切片软件根据 3D 模型为某一台特定的打印机写出它,并加上注释,记录打印时间、耗材用量和预览图。模型本身并不在里面——只有喷嘴的路径。
概览
- 扩展名
- .gcode, .gco, .g
- 类型
- 打印路径(给打印机的指令)
- 创建者
- EIA RS-274, RepRap
- 标准
- ISO 6983 (CNC)
- macOS 自身(不装应用)
- 不认识:没有预览,也没有缩略图
信息核对于 2026年11月4日
每行一条命令
每一行是一条由“字”组成的指令:一个字母加一个数字。G1 X10 Y-5 F2400 的意思是“以 2400 mm/min 的速度直线移动到 X 10、Y −5”。G 表示移动,M 表示其他命令(温度、风扇),T 表示换工具。X、Y 和 Z 是坐标轴,E 是挤出的材料,F 是速度,S 是温度或主轴转速。分号之后的一切都是注释。
下面是一个真实文件中某一层的开头,来自 PrusaSlicer 2.9.5 切出的 3DBenchy:
;LAYER_CHANGE
;Z:0.6
;HEIGHT:0.2
;BEFORE_LAYER_CHANGE
G92 E0.0
;0.6
G1 E-.7 F2700
G1 X135.159 Y110.836 Z.4 F21000
G1 X136.128 Y110.075 Z.6 F4491.905
;AFTER_LAYER_CHANGE
;0.6
G1 X136.128 Y110.075 F21000
G1 Z.6 F720
G1 E.7 F1500喷嘴先把耗材回抽(E-.7),在升到 0.6 mm 的新层的同时快速空移,然后再把耗材推回去(E.7)。
G-code 来自机床。在美国,它由 RS-274 标准定义,其最后一次修订 RS-274-D 可追溯到 1979 年;在国际上则由 ISO 6983 定义。它通过 RepRap 项目进入了 3D 打印领域。不过,3D 打印机并没有统一的标准:每种固件——Marlin、Klipper、RepRapFirmware、Prusa 的固件——都有自己的命令和自己的扩展。
除了 .gcode,也会用到 .gco 和 .g 扩展名。Klipper 会从虚拟 SD 卡中列出这三种,Marlin 也是如此,它会显示 8.3 扩展名以 G 开头的任何文件。
切片软件在文件里写了什么
光有命令,打印机就够用了。但切片软件还会添加注释,几乎能告诉你这次打印的一切。同一个文件的开头:
; generated by PrusaSlicer 2.9.5 on 2026-07-03 at 11:30:45 UTC
; printer_model = COREONE
; filament_type = PC
; nozzle_diameter = 0.4
; layer_height = 0.2
; temperature = 285
; filament used [mm] = 5786.33
; filament used [g] = 16.98
; filament cost = 1.27
; estimated printing time (normal mode) = 1h 4m 39s
; estimated printing time (silent mode) = 1h 10m 11s除此之外,文件还包含:
- 预览图,以文本(base64)编码,位于
; thumbnail begin和; thumbnail end这样的行之间。这个文件有四张:三张供打印机屏幕使用的 QOI 图片(16 × 16、313 × 173 和 480 × 240 像素),以及一张供电脑使用的 380 × 285 PNG。 - 每段路径的类型。每段之前都有一行,例如
;TYPE:External perimeter或;TYPE:Internal infill。这个 Benchy 中有 772 行标记最外层外壁,163 行标记内部填充。查看器根据它们给路径着色。 - 层的边界:
;LAYER_CHANGE、;Z:和;HEIGHT:。这个 Benchy 有 240 层。 - 切片软件的全部设置,位于文件末尾的
; prusaslicer_config = begin和= end之间。这里共有 373 行。 - 打印进度,供屏幕显示:像
M73 P0 R64这样的行说明完成了百分之多少、还剩多少分钟;Q和S则在静音模式下起同样的作用。
不过,每个切片软件都按自己的方式写注释。PrusaSlicer 把路径类型标记为 ;TYPE:External perimeter,Cura 是 ;TYPE:WALL-OUTER,Bambu Studio 和 OrcaSlicer 是 ; FEATURE:。不认识其他切片软件标记的查看器,就无法给那部分路径着色。
所有这些注释让 G-code 变得很大。这个 Benchy 有 180,291 行、4.5 MB,其中 142,090 行是 G1 移动。同一次打印保存为二进制的 .bgcode 只有 1.76 MB。
为什么 G-code 只适合一台打印机
G-code 是为一台打印机切出来的:它的打印床尺寸、喷嘴直径、固件和起始序列。NIST 在 2000 年的报告中就已提醒,为一台机器编写的程序很可能无法在另一家厂商的机器上运行。3D 打印机也是如此。
Prusa 打印机会自己检查。这个 Benchy 以下面几行开头:
M862.1 P0.4 A1 F0
M862.3 P "COREONE"
M862.5 P2
M115 U6.5.3+12780M862.1 检查喷嘴直径,M862.3 检查打印机型号,M862.5 检查 G-code 级别。M115 U 比较固件版本:根据 Prusa 的文档,如果固件较旧,打印机会暂停 30 秒并提示你更新。如果型号不匹配,打印机会警告这个 G-code 是为另一种打印机型号切片的——于是 Prusa 论坛上就有人问,继续打印是否安全。
稳妥的做法永远是同一个:为你自己的打印机重新切片。只有在型号相同、喷嘴也相同的打印机之间分享成品 G-code 才有意义。
在切片软件中,你可以选择 G-code 风格(flavor)。PrusaSlicer 提供十多种,从 Marlin 2 到 Klipper 再到 RepRapFirmware。Bambu Studio 导出切好的打印板时,会保存一个 .gcode.3mf 包,里面是每个打印板的 G-code。
G-code 能变回模型吗?
不能。G-code 携带的是喷嘴的路径,而不是形状。提供 G-code 转 STL 的网站会根据路径构建一个近似的体积,连同支撑和填充一起。那并不是原始模型,而且平滑的形状无法从 0.2 mm 的层中恢复。如果你需要模型,请向设计者索要 STL、3MF 或 STEP。
如何在 Mac、iPad 和 iPhone 上查看 G-code 的内容
macOS 没有 G-code 的文件类型。文本编辑会把它当作文本打开,访达显示空白图标——没有预览,也没有缩略图。在 Windows 上有 PowerToys 可以处理;在 Mac 上你需要一个应用:
- PrusaSlicer G-code Viewer 免费,能读取 PrusaSlicer、Cura、Simplify3D 和其他切片软件的 G-code。
- 网页查看器,例如 gcode.ws,直接在浏览器中逐层显示路径。gcode.ws 自己也说它“慢、吃内存”(slow, memory hungry)。
- ThumbHost3mf 根据切片软件存进文件的预览图添加访达缩略图。
- Preview3D,我的应用,可以在窗口中、在快速查看里以及作为访达缩略图打开 G-code,支持 Mac、iPad、iPhone 和 Apple Vision Pro。
Preview3D 能从 G-code 中显示:
- 按类型着色的路径,带图例,和切片软件的画法一样;
- 按真实宽度绘制的挤出线;
- 层级滑块,可在任意高度剖开打印件;
- 从文件头读取的打印时间、耗材、重量和材料;
- 作为访达缩略图,显示切片软件存进文件的预览图。
它能读取 PrusaSlicer、SuperSlicer、OrcaSlicer、Cura 和 Bambu Studio 的 G-code。

关于 G-code 预览有什么用,详见:不打开切片软件,在 Mac 上查看 G-code。
常见问题
G-code 能在所有 3D 打印机上使用吗?
不能。它是为特定的打印机、喷嘴和固件切出来的。在另一台打印机上,它可能打到打印床外面、温度不对,或者根本无法开始。
.gcode、.gco 和 .g 有什么区别?
没有区别——它们是同一种文本格式,只是扩展名不同。
G-code 文件中的打印时间和耗材用量在哪里?
在文件开头或末尾的注释中。PrusaSlicer 写的是 ; estimated printing time (normal mode) 和 ; filament used [g];Cura 和 Bambu Studio 以各自的格式写类似的行。
我可以编辑 G-code 吗?
在文本编辑器中可以,但手动修改打印内容有风险。请在切片软件中修改温度、层高或材料,然后重新切片。
G-code 能转换为 STL 吗?
无法还原成原始模型。你只能根据路径构建一个近似的体积,连同支撑和填充一起。
.gcode 和 .bgcode 有什么区别?
它们包含相同的命令;.bgcode 是二进制的,并且经过压缩。详情见 .bgcode 页面。
相关页面
- .bgcode 文件——PrusaSlicer 的二进制 G-code
- .3mf 文件——切片软件用来生成 G-code 的项目,以及 .gcode.3mf 包
- 不打开切片软件,在 Mac 上查看 G-code
资料来源
- RepRap wiki:G-code——命令语法、注释、扩展名
- NIST:The NIST RS274NGC Interpreter, Version 3——CNC 起源,RS-274-D
- Marlin:G-code 和 Klipper:G-Codes
- Prusa 知识库:Prusa 固件专用的 G-code 命令——M862、M115、M73
- Prusa 知识库:PrusaSlicer G-code Viewer
- PrusaSlicer:G-code 中的缩略图 和 路径类型标记
- CuraEngine:G-code 导出 和 OrcaSlicer:路径类型标记
- Klipper:虚拟 SD 卡上的扩展名 和 Marlin:列出 SD 卡上的文件
Preview3D 把哪个切片软件的 G-code 颜色弄错了?请发到 apps@xfanta.com,我会加上它还不认识的标记。
在 Preview3D 中打开
在 Mac、iPad、iPhone 和 Vision Pro 上打开 STEP、3MF、STL、G-code、BGCODE 等格式。一次购买,无需账户,无需联网。
App Store 上的 Preview3D