G-code 描述什么

G-code 是一种逐行执行的指令语言,3D 打印机、CNC 和其他运动系统都会使用。一行可以要求机器移动、改变持续生效的模式、设置温度,或调整某个控制器特有的功能。

单独拿出一条指令往往不能确定结果。单位、坐标模式、挤出模式、机器配置和实际固件都会改变它的含义,因此本参考既说明常见含义,也说明哪些上下文会让结果不同。

先记住

G-code 更像一组有共同祖先的方言,而不是所有打印机完全一致的文件标准。核心移动写法相似,但可用指令、参数、默认状态和扩展功能要以目标固件及其配置为准。

读懂一行指令

G1 X120 Y40 E1.6 F1800
G1

要求机器沿直线协调移动。

X / Y

根据 G90/G91,表示目标位置或相对移动距离。

E

根据 M82/M83,表示挤出机位置或本次送出距离。

F

设置进给速度。打印机文件通常按毫米/分钟书写,而且该值往往会被后续移动继续使用。

; ...

分号后的内容通常是给人或软件看的注释。切片软件会用它标记层和路径类型,但注释命名并不统一。

字母本身没有脱离上下文的固定单位:X 可以是坐标,F 可以是进给速度,S 在温度、风扇或其他指令中又会表示不同的设定值。阅读时要先看指令,再解释它后面的参数。

一份打印文件通常分成三段

准备阶段

设置单位和坐标模式,启动加热,回零,选择工具,并执行调平、清洁或起始宏。这里决定后续数字应怎样解释。

逐层打印

大量移动、挤出、回抽、风扇和温度变化构成模型。层和路径类型常由切片软件注释标记,不一定对应单独指令。

结束阶段

停止加热和风扇,抬起或停放喷头,释放电机,并可能运行机器自己的结束宏。缺少结束段会改变打印完成后的机器状态。

; 准备:先建立状态
G21
G90
M83
G28

; 主体:先空走,再打印
G0 X40 Y20 Z0.20 F9000
G1 X80 Y20 E1.40 F1800

; 结束:关闭输出
M104 S0
M140 S0
M107

这只是结构示意,不是可直接用于任何机器的完整文件。回零方向、加热顺序、停放位置和宏名称都必须匹配具体打印机。

固件不同,含义也可能不同

Marlin、Klipper、RepRapFirmware 和 CNC 控制器在核心移动指令上有重叠,但它们并不是完全可以互换的同一种语言。为了实现同一个机器目标,不同系统可能使用不同指令名、参数或数值尺度。

系统扩展方式阅读时注意
MarlinRepRap 风格指令大量功能由编译配置决定;同一版本也可能因为功能开关而支持不同指令。
Klipper标准子集 + 可读扩展指令它有意只支持常用标准指令,并使用 SET_PRESSURE_ADVANCE 这类长名称;宏还可能新增或覆盖行为。
RepRapFirmwareG-code everywhere + 宏和表达式配置、控制和状态查询大量使用 G-code;新版本还支持元命令和表达式。
LinuxCNC / RS274NGCCNC 模态组和坐标系统主轴、刀具补偿、工件坐标和固定循环等 CNC 语义,不能直接套用 3D 打印机的 E 轴与加热假设。

因此“固件名称 + 版本 + 配置”才是判断兼容性的最低上下文。只看文件扩展名,或只在别人的机器上验证过,都不能证明自己的机器会以同样方式执行。

怎样阅读一份陌生 G-code

  • 先确认文件来自哪种切片软件、为哪台机器和哪种固件生成;找不到时,把兼容性当作未知。
  • 先读开头的单位、轴坐标、挤出坐标、回零、工具和加热设置,再解释后面的移动。
  • 把 X/Y/Z 的位置变化与 E 的变化分开跟踪,才能区分空走、打印、回抽和补回。
  • 把分号注释当作切片软件给出的线索,而不是机器一定执行的命令;不要假设所有切片软件都使用同一套标签。
  • 遇到宏、长名称指令或不熟悉的 M-code,回到该固件版本的官方文档核对,不要仅凭编号猜含义。
  • 最后检查结束段是否关闭加热、风扇或其他输出,并确认停放动作不会越界或撞到成品。

每个指令页包含什么

  • 先用一句话说明用途,再解释正确理解它所需的前置状态。
  • 给出写法、参数含义和可以直接阅读的 G-code 示例。
  • 说明会改变机器行为的固件差异和常见错误。
  • 明确写出本地查看器能确认什么、不能确认什么。

查看器能显示什么

显示的是文件,不是真实打印机

查看器能显示支持的路径和部分文件详情,但无法还原打印机的实际设置,也不能准确预测真实机器最后会怎样执行。

从这些关键指令开始

本页依据的官方资料

内容于 2026 年 8 月 5 日按以下一手资料核对。它们解释共同的行结构,也展示了不同控制器为什么会形成不同方言。