Gコードとは何か、機械がどう使うのか、そしてSVGやラスタ画像からペンプロッター、レーザー彫刻機、3Dプリンター、CNCミル向けの実機用ファイルへつなぐ制作フロー全体を解説します。
Gコード(Geometric Code)は、CNC機械を動かすためのプレーンテキスト言語です。一般的には `.gcode`、`.nc`、`.cnc` などの拡張子を持ち、機械をどこへ動かすか、どの速度で動かすか、いつツールを有効化するかを上から順に指示します。
設計データを設計図、Gコードをナビゲーションと考えるとわかりやすいです。3DプリンターはJPGをそのまま処理できませんし、ペンプロッターも文字の「A」がどんな形かを自動では理解しません。Gコードは、あらゆる形状を直線、円弧、ツールのオンオフといった基本動作に分解し、どのモーションコントローラーでも実行できる形へ置き換えます。
この規格は1950年代のMITに起源があり、1963年にRS-274として整理され、1982年にはISO 6983として国際規格化されました。古い仕組みでありながら、現在でも趣味用デスクトップ機から産業用5軸加工機まで、加工現場の共通言語であり続けています。


1行(ブロック)ごとに1つの完結した命令になります。機械は行をまたいで状態を保持するため、たとえば10行目で指定した送り速度は、変更しない限り200行目でも有効です。これをモーダル状態と呼びます。
以下は50×50mmの四角形を描くペンプロッター用プログラムです。
G21 ; 単位はミリメートル
G90 ; 絶対座標指定
G0 Z5.0 ; ペンを上げる
G0 X0 Y0 ; 原点へ移動
M3 S1000 ; ペンダウン
G1 X50.0 Y0 F2000
G1 X50.0 Y50.0
G1 X0 Y50.0
G1 X0 Y0
M5 ; ペンアップ
M2 ; 終了
`G1 X50.0 Y25.3 F1500` を分解すると、`G1` は直線描画、`X50.0 Y25.3` は移動先座標、`F1500` は1500mm/分の送り速度です。`G1` が一度しか書かれていない点にも注目してください。次の行では、`G0` や別の動作命令が現れるまで、自動的に同じ動作モードが引き継がれます。セミコロン以降はコメントで、機械は無視します。

以下の命令は、趣味用途のGRBLから産業用Fanucまで、ほぼすべての主要ファームウェアで使われます。
GRBLでは秒単位なので `G4 P1.5` は1.5秒停止です。Marlinではミリ秒単位なので、同じ1.5秒停止は `G4 P1500` になります。単位を間違えると、ほぼ止まらないか、逆に数分止まることもあります。必ず使用中のファームウェア仕様を確認してください。


プロッターが理解できるのはパスだけで、ピクセル画像、塗り、テキストのままでは扱えません。Inkscape、Illustrator、Affinity DesignerなどでSVGのストロークパスを作成し、文字はアウトライン化します。塗り、ビットマップ、視覚効果は変換時に無視されるため、事前に取り除いておきます。
重複パスは統合し、ノードが密集しすぎた箇所は簡略化します。ペンが同じ線を二度なぞる事態を防ぐためです。さらに、後のDPI換算トラブルを避けるため、ドキュメント寸法はピクセルではなくミリ単位で設定します。
コンバーターは各パスをG1移動へ変換し、離れたストローク間にはM3/M5のペン上下命令を挿入します。特に重要なのがパス順序の最適化です。並びが悪いと、ペンが紙面全体を何度も無駄に往復してしまいます。最近傍ソートを使えば、密度の高い作品で移動時間を50%以上削減できることもあります。
Universal Gcode Sender(UGS)やbCNCを使って、GRBLファームウェアへファイルをストリーミング送信します。送信ソフトは行単位で命令を送り、GRBLがそれをステッパーモーターのパルスへ変換します。
ベクターモードは一定出力でパスをなぞり、外形切断や線彫刻に向いています。ラスターはプリンターのように往復走査しながらピクセルごとに出力を変えるため、写真や濃淡入りの塗りに向いています。1つのジョブ内でレイヤーを分ければ両方のモードを併用できます。
LightBurnやLaserGRBLは、レーザーをオンにする `M3 S[value]` と、停止する `M5` を出力します。ラスターでは各G1行ごとにS値が変化し、グレースケールを再現します。この動作には、GRBLがレーザーモードで構成されている必要があります。これにより速度変化時の補正が調整され、出力応答が素早くなります。
必要な出力と速度は材質によって大きく変わります。本番前に、必ず同じ素材の端材で小さなパワー・スピードテストを行ってください。
レーザーでは、使用波長に合った保護メガネを着用してください(CO2は10,600nm、ダイオード機は約450nmで、必要な保護具は異なります)。換気も必須です。ほとんどの素材は加工時に有害な煙を出します。稼働中のレーザーから目を離してはいけません。CNCでは、主軸を回す前に必ずワークを固定してください。固定不足の材料は高速で飛ばされる危険があります。作業前に非常停止の位置と操作方法を把握しておくことが前提です。
Fusion 360、Blender、FreeCADなどで設計します。STLは標準的な交換形式で、STEPは工業部品向けにより正確な形状情報を保持できます。
PrusaSlicer、Cura、Bambu Studioなどのスライサーは、モデルを0.1〜0.3mm程度の水平層に分割し、ツールパス、サポート、インフィル、ブリッジを計算します。典型的な命令は `G1 X42.5 Y88.3 E0.0234 F4500` のような形で、ヘッドを動かしながら0.0234mm分のフィラメントを押し出します。印刷開始前には、ノズルとベッドを加熱するためのM109やM190も挿入されます。
Marlin、Klipper、RepRapFirmwareがファイルを実行します。Klipperは計算の一部をRaspberry Pi(ラズベリーパイ)側へオフロードし、入力シェーピング(Input Shaping)にも対応しています。加速度センサーでフレーム共振を計測し、動作命令から振動成分を抑えることで、リンギングを減らしながら高速印刷を可能にします。
Fusion 360、SolidWorks、FreeCADなどを使います。機械加工部品では0.01〜0.05mm程度の公差が求められることも多く、モデル精度がそのまま部品品質に直結します。
Fusion 360 CAM、VCarve、MastercamなどのCAMでは、使用工具、切削戦略(アダプティブ、輪郭、ポケットなど)、切り込み深さ、主軸回転数、送り速度を設定します。目的は、工具を破損させたり材料を焼いたりせず、効率よく加工することです。
産業用CNCは、Fanuc、Siemens Sinumerik、Heidenhain、Haasなど、それぞれ独自の方言を持っています。CAM内のポストプロセッサーが、汎用ツールパスをその機械専用の構文へ変換します。誤ったポストを使うと不良品になるだけでなく、機械がワークへ衝突し、工具破損や安全事故につながる恐れがあります。
SVGパスにはベジェ曲線、円弧、直線が含まれます。一方、G1が描けるのは直線だけなので、コンバーターはこの差を埋める必要があります。
1つ目の方法はファセット化です。曲線を細かな直線群へ分割します。滑らかな曲線ほど分割数が増えるため、ファイルは大きくなり、機械のコマンドバッファが追いつかないと動作がカクつくことがあります。
より賢いのがアークフィッティングです。短い直線群が実質的に円弧を構成していると判断できれば、それらを1つのG2またはG3命令へ置き換えます。たとえば360行のG1で表現された円も、1行の円弧命令にまとめられます。ファイルは最大90%程度縮小し、動きも非常に滑らかになります。ただし、すべてのGRBLビルドがG2/G3に対応しているわけではないため、事前確認が必要です。

Illustratorは72 DPI、Inkscapeの旧版(v0.92以前)は90 DPI、現在の多くのツールは96 DPIを使います。コンバーターが96 DPI前提なのに、元ファイルがIllustrator由来なら、寸法は約33%大きくなります。100mmの形状が133mmで出てしまう計算です。対策は、コンバーターのDPI設定を元アプリに合わせるか、最初からSVGドキュメント寸法をミリ単位で定義して、DPI依存をなくすことです。
基本的な移動命令(G0、G1、G2、G3)は広く共通していますが、それ以外の起動シーケンス、ツール交換、コメント記法などはファームウェア系統ごとに異なります。業務用CNCで別系統向けのGコードをそのまま流すと、結果が狂うだけでなく、ワークへ急突入する危険もあります。
写真にはピクセルしかなく、パス情報は含まれていません。プロッター描画やベクター彫刻に使うには、まずSVGへ変換する必要があります。代表的なアプローチは次のとおりです。


Pixel2Linesは、写真をペンプロッターやレーザー彫刻向けの制作スタイルで、クリーンな実機対応SVGへ変換します。ラインドローイング、ハッチング、スティップリングなどに対応し、出力パスは個別ストロークとして整理されるため、ペンアップ回数や移動距離を抑えやすくなります。
SVGができたら、SVG to G-Codeコンバーターで最終ファイルを生成します。送り速度、ペンアップ高さ、レーザー出力、パス順序まで細かく制御できます。
この二段階フロー、つまり Pixel2Lines で写真をSVGへ変換し、その後コンバーターでGコード化する流れを使えば、ベクターデザインやGコードの専門知識がなくても、写真から実機用ファイルまで到達できます。

はい。単純な形状であれば学習用途として非常に有効です。ただし、複雑な案件ではCAMソフトや専用コンバーターを使うのが現実的です。
基本動作命令はかなり共通していますが、起動シーケンス、ツール交換、拡張機能は大きく異なります。GRBL向けのGコードをFanucのミルで動かすには大幅な調整が必要になることがあり、産業機械で方言を間違えると衝突事故にもつながります。
GRBLはArduinoクラスのマイコンで動くオープンソースCNCファームウェアです。ホビー向けペンプロッター、自作レーザー彫刻機、小型CNCルーターで広く使われています。RS-274系の基本命令に加え、加速度対応のモーションプランナーと先読みバッファを備えています。
目安として、ボールペンは5000〜8000 mm/分、フェルトペンや筆ペンは2000〜4000 mm/分、万年筆やガラスペンは1500〜3000 mm/分です。実際には紙質や筆圧、ペン先状態で変わるため、必ず試し書きで調整してください。
はい。GRBLのレーザーモードでは、各G1行ごとにS値を変化させられるため、1回の走査の中で滑らかなグレースケール表現ができます。
HPGL(Hewlett-Packard Graphics Language)は、1970〜90年代のHPプロッターで使われていた言語です。`PU`(ペンアップ)、`PD`(ペンダウン)、`PA`(絶対描画)といった2文字命令を使い、単位もミリやインチではなく1mmあたり40単位の独自スケールです。現在の多くのプロッターツールは両方の形式を扱えます。
最も手早いのは NCViewer(ncviewer.com)で、ファイルを貼り付けるだけでツールパスを即表示できます。CAMoticsはCNC向けに3D切削シミュレーションが可能です。Universal Gcode Senderにもパスプレビューがあります。画面上の確認だけで終わらせず、最後は安全高さでのドライランも行ってください。
写真をアップロードしてPixel2LinesでクリーンなSVGを作成し、そのまま実機向けGコードへつなげられます。ペンプロッター、レーザー彫刻機、CNC機械に対応します。
写真を変換する
コメント
コメントを読み込み中...