Preview3D
入手

.gcode ファイルとは?中身と、1 台のプリンター専用である理由

G-code は、プリンターが 1 行ずつ実行する命令をテキストで並べたもので、ノズルをどこへ動かすか、材料をどれだけ押し出すか、何度に保つかを指示します。スライサーが 3D モデルから特定の 1 台のプリンター向けに書き出し、印刷時間、フィラメントの使用量、プレビューをコメントとして加えます。モデルそのものは入っておらず、あるのはノズルの経路だけです。

概要

拡張子
.gcode, .gco, .g
種類
ツールパス(プリンターへの命令)
開発元
EIA RS-274, RepRap
規格
ISO 6983 (CNC)
アプリなしの macOS
知らない:プレビューもサムネイルもなし

情報の確認日:2026年11月4日

1 行に 1 つの命令

各行は、文字と数字から成る「ワード」で組み立てた 1 つの命令です。G1 X10 Y-5 F2400 は「X 10、Y −5 まで 2400 mm/min で直線移動」という意味です。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 で定められています。3D プリントには RepRap プロジェクトを通じて入ってきました。ただし 3D プリンターには共通の規格がありません。Marlin、Klipper、RepRapFirmware、Prusa のファームウェアなど、それぞれが独自の命令と独自の拡張を持っています。

.gcode のほかに、拡張子 .gco と .g も使われます。Klipper は仮想 SD カードからこの 3 つすべてを一覧に表示し、Marlin も同様です。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

さらに、ファイルには次のものが入っています。

  • プレビュー:; thumbnail begin と ; thumbnail end のような行のあいだに、テキスト(base64)としてエンコードされています。このファイルには 4 枚あります。プリンターのディスプレイ用の QOI 画像が 3 枚(16 × 16、313 × 173、480 × 240 ピクセル)と、コンピューター用の 380 × 285 の PNG が 1 枚です。
  • 経路の各区間の種類。 各区間の前に ;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 が 1 台のプリンターにしか合わない理由

G-code は 1 台のプリンターに合わせてスライスされます。ベッドのサイズ、ノズル径、ファームウェア、開始シーケンスです。NIST は 2000 年の報告書で、ある機械向けのプログラムは別のメーカーの機械ではおそらく動かないと、すでに注意を促していました。3D プリンターでも同じです。

Prusa のプリンターは自分で確認します。この Benchy は次の行で始まります。

M862.1 P0.4 A1 F0
M862.3 P "COREONE"
M862.5 P2
M115 U6.5.3+12780

M862.1 はノズル径を、M862.3 はプリンターの機種を、M862.5 は G-code のレベルを確認します。M115 U はファームウェアのバージョンを比べます。Prusa のドキュメントによると、ファームウェアのほうが古ければ、プリンターは 30 秒間停止して更新を求めます。機種が合わないと、プリンターは G-code が別の種類のプリンター向けにスライスされたと警告します。Prusa のフォーラムでは、そのまま続けても大丈夫かという質問が出ています。

安全な方法はいつも同じです。自分のプリンター向けにモデルをスライスし直してください。完成した G-code を共有して意味があるのは、同じノズルを付けた同じプリンター同士だけです。

スライサーでは G-code のフレーバーを選びます。PrusaSlicer には Marlin 2 から Klipper、RepRapFirmware まで 10 種類以上あります。Bambu Studio はスライスしたプレートを書き出すとき、プレートごとの G-code を入れた .gcode.3mf パッケージを保存します。

G-code をモデルに戻せるか

戻せません。G-code が持っているのはノズルの経路で、形状ではありません。G-code から STL への変換をうたうサイトは、経路からおおよその立体を組み立てますが、サポートやインフィルもそこに含まれます。それは元のモデルではなく、0.2 mm のレイヤーから滑らかな形が戻ることもありません。モデルが必要なら、デザイナーに STL、3MF、STEP を頼んでください。

Mac、iPad、iPhone で G-code の中を見る方法

macOS には G-code のファイルの種類がありません。テキストエディットではテキストとして開け、Finder には白紙のアイコンが表示されるだけで、プレビューもサムネイルもありません。Windows なら PowerToys で対応できますが、Mac ではアプリが必要です。

  • PrusaSlicer G-code Viewer は無料で、PrusaSlicer、Cura、Simplify3D などのスライサーの G-code を読めます。
  • gcode.ws などの Web ビューア は、ブラウザの中で経路をレイヤーごとに表示します。gcode.ws 自身、「slow, memory hungry」(遅く、メモリを食う)と書いています。
  • ThumbHost3mf は、スライサーがファイルに保存したプレビューから Finder のサムネイルを追加します。
  • Preview3D(私のアプリ)は、Mac、iPad、iPhone、Apple Vision Pro で、G-code をウィンドウ、クイックルック、Finder のサムネイルで開きます。

Preview3D が G-code から表示するのは次のとおりです。

  • スライサーと同じように種類別に色分けした経路と、その凡例
  • 実際の幅で描いた押し出し
  • 任意の高さで造形を切り開けるレイヤースライダー
  • ヘッダーから読み取った印刷時間、フィラメント、重量、材料
  • Finder のサムネイルとして、スライサーがファイルに保存したプレビュー

PrusaSlicer、SuperSlicer、OrcaSlicer、Cura、Bambu Studio の G-code を読めます。

iPad の Preview3D で表示した G-code:種類別に色分けしたツールパス、レイヤースライダー、印刷情報
iPad の Preview3D で表示した G-code:種類別に色分けしたツールパス、レイヤースライダー、印刷情報

G-code のプレビューが何の役に立つかは、スライサーを開かずに 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 のページ にあります。

関連ページ

出典

Preview3D が間違った色で表示したのは、どのスライサーの G-code でしたか? apps@xfanta.com まで送ってください。まだ知らない目印を追加します。

Preview3D で開く

STEP、3MF、STL、G-code、BGCODE などを Mac、iPad、iPhone、Vision Pro で。一度の購入で、アカウントもネットワークも不要です。

App Store の Preview3D