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 日按以下一手資料核對。它們解釋共同的行結構,也展示了不同控制器為什麼會形成不同方言。