Inkscapeプラグイン “g-code tools” の使い方

自作レーザ加工機

 
しばらく体調不良でしたが、復活しました。風邪+花粉症のように思われますが、病院にもいっていないので不明です。花粉症の事実を直視したくないのです。マスクをしていると楽というあたり完全に外堀は埋まっているのですが….

さて、先日投稿したツールの話の中で、G-code tools の使い方についてkenboさんからコメントをいただき、またメールでも同様の質問をいただきましたので、一番シンプルな使い方をここにまとめておきたいと思います。

情報は Shapeoko のサイトにあります。非常に詳しく説明されておりますので、これをレーザカッター向けにちょいとだけ変更して応用してみました。

Inkscapeとg-code tools は準備されているとして説明していきます。例として、前回カッティングしたこのボーカロイドを使ってgcodeを作ってみます。

この絵は一色だけで出来ている影絵のようなものですが、良く見るとエッジ部分はグラデーションがかかっており、二値の絵ではありません。
これを元に、GIMPで下処理を行い、Inkscapeでベクター化、Gcode化をしていきます。
まず、元絵をGIMPに読み込みます。

ベクター変換は、明るさの境界を手がかりに線を作っていく方法をとりますので、モノクロ化します。
さらに、拡大してみてエッジのグラデーションが気になるようであればシャープネスを上げたりして調整します。この絵であればおそらく何もしなくても大丈夫です。写真のようなもっとグラデーションが多いものをお使いになるときはベクター化の結果を見ながら微調整が必要になるでしょう。

次に、このモノクロ絵をInkskapeに読み込み、「ビットマップをトレース」でベクター化します。
この絵であれば、設定はデフォルトのままで大丈夫です。モノクロ絵なので「明るさの境界」でOKです。それぞれのオプションやしきい値の違いがどのような結果の差になるかは、今回の例のような絵よりも写真のようなものを使って実験すると良くわかります。流れがわかったらいろいろお試しになることをおすすめします。

トレースされました。 が、一見何も起こってないように見えますのでご注意を。トレース結果があまりに見事で、かつ元絵と重なっているのでわからないだけです。選択している部分をずらしてみると似たような絵が二枚重なっているのがわかります。
この絵の場合、どちらがトレースでどちらが元絵かわからないほどにきれいにベクター化されます。

ベクター化されたほうの絵は簡単にわかります。なぜなら、元絵は点の集まり、ベクター化後は線で囲まれた範囲の塗りつぶしになっているからです。「フィルとストローク」パネルでフィルをなし(×)に、ストロークに適当に色をつけて見るとすぐにわかります。たとえばフィルを無しにしてストロークを黒線にすると 下のようになる方がベクター化された絵です。
ここで念のためにsvgで保存しとくと良いでしょう。

さて、いよいよG-code tools を使っていきます。
Inkscape で新規画面を出して、この画面を設定していくところからです。デフォルトはピクセル単位の縦長用紙が表示されます。
これをレーザカッターの仕様にあわせたサイズと、mm 単位系にあわせていきます。

「ファイル→ドキュメントの設定」を開きます。
「デフォルトの単位」を mm に、ページサイズをカスタム欄に設定します。私の加工機の場合、横 300mm、縦 200mm にします。

設定された用紙に先ほどベクター化したデータを読み込みます。

 「エクステンション→G-code tools」からOrientation points を選択します。加工原点を設定する画面です。ここで、下のように設定します。ポイントは単位の所を mm にすることです。
次に Z surface と Z depth です。
 surfaceはそのとおりワークの表面がどこ(高さ)にあるかを決めてやります。平板を掘り込んでいく通常のCNC加工を想定すると、板材の表面が0、掘り込み方向がマイナスになります。これをちゃんと設定しておかないと、軸を動かすときにビットがワークに引っかかることになりますので、CNCルータなどを使う加工のときには重要です。 が、レーザ加工の場合は通常ワークとヘッドはかなり離れていますのであんまり気にしなくても良いと思います。
より気を使うべきは depth です。これはワークをどれだけ掘り込んでいくかを決める所です。CNCの場合は、ここで設定する depth をあとで指定するステップで割った回数に分けて少しずつ掘り込んでいくことになります。通常のレーザ加工では一発で切ることがほとんどですので、この値がどうなっていようと別途設定するステップと一致(またはステップより小さい)していれば一回切断のGcodeが出来ます。ということで、どんな値でも良いようにも思われますが、私の加工機の場合Z軸の切り込み命令をレーザの ON に使っています(そういう方は多いと思います)ので、この距離があまりに大きいと切り込み速度の設定によっては、切り込み点に必要以上の長時間レーザがあたり続けることになります。(加工開始点は「切り込み→移動」となるため)これは加工跡が醜くなりますので避けたいところです。
よってここでは depth を 1mm (別途設定するステップも 1mm )と小さくしています。私の加工機ではよほど厚い材料でない限り切り込み時間はほぼ0で問題ないことがわかっています。

さて、長くなりましたが、この設定を行った後に「適用」を押すと、下記のように用紙の左下に加工原点の表示が現れます。100, 0 という点も同時に出ますので単位系が間違ってないことも確認できます。
私の設定では幅 300mm ですので、100, 0 の点は用紙の左から1/3の付近に表示されます。

次に、G-code tools のメニューから「tools liblary」を選択します。そして、cylinder を選択して「適用」します。ほかのオプション(plasmaとか)が気になりますが、試していません。

適用すると、用紙の上の方のどこかに下のような緑色の四角が現れます。加工条件を書き込むところです。 ここに条件を書いていきますが、レーザカッターの場合気にすべきは feed(切断速度 mm/min)、penetration feed (切り込み速度 mm/min)、depth step (mm ← 単位系をmmにしているので)です。
 私の条件では下記のようになります。これは4mmのMDFをきる時の条件かな。penetration feed はめっちゃ速いです。ステップは 1mm (注:depth と一致) ですから、切り込みに要する時間は10msecちょっとという超短時間になります。ほとんど0ということです。

ここで、diameter が気になりますよね。これはルータービットの太さを設定する所です。CNCの場合必ずビットはある太さを持っていますから、ワークを狙い通りの寸法に切り出すためにはスピンドルの回転軸中心がビットの太さ分逃げないといけません。
Gcodeはスピンドルの回転中心が描く軌跡を指示するものですから、たとえば100mm 角の正方形を直径2mmのビットで切り出そうとすると、スピンドルの中心が描く軌跡は102mm角の正方形になります。で、この diameter はまさにその逃げというかオフセットと言うか、その値を設定する所のように思われるのですが、実はこの値は単なるメモで、出来上がるGcodeには何の影響も与えません(笑

上記チュートリアルにも、

Compensate for Bit Size

Gcodetools does not account for the diameter of the bit you are
cutting with (even if you provided it with your tool description
earlier), so we will need to adjust our shape before moving on.

と記載があります。
レーザカッターの場合は Gcode が指示する軌跡とレーザビームの中心点は一致していて良いのでオフセットの設定は不要です。値は何でもかまいません。二重の意味で問題ありません。
ということで、ここの設定はこれで終わりです。

次は G-code tools メニューの「Path to Gcode」の設定です。まず「Preferences」タブを選択。
File ネームを適当につけて、Directory を指定します。老婆心ながら、このあたりは2バイト文字を絡めないほうがいろいろ無用なトラブルを避けることが出来ます。
Z safe ~ はトラベル時のZ方向のビット逃げを指定します。これもレーザカッターでは意味はありません。先の Z surface をワークの表面高さとして、ビットが次の加工点へ移動するときにワーク表面からどのくらい上空を移動するかという値を指定する所です。全体のスピードを考えるとここは極小値でOKです。単位はここまでに倣って mm を。
そして、その下の Post-processor は Round all~を選んでください。これ自体は「あんまり細かい数字で座標指定すんなよ」みたいな意味だと思いますが、なぜほかのオプションではなくこれを選ぶのかは私にも良くわかりません。

次に「Path to Gcode」タブを選択して「適用」を押します。なぜかこのタブで「適用」を押さないと文句を言われます。

するとこんな表示になってしばらくかけて Gcode への変換が行われます

出来ました。パスの上に Gcode の軌跡が重ねて表示されます。データが多いので激重になります。

拡大するとこんな感じ。どっちからどっちに動くかわかりますね。

Preferenceで指定したパスの .ngc ファイルをNCVCで見てみます。NCVCは.ngc には対応しておりませんが、.ngc を.ncd に書き換えると(ちょっとおかしいですが)読むことが出来ます。

MACH3では、拡張子フィルタを All にしてやって.ngc のまま読み込めば問題なく加工できます。
作製される Gcode は最適化の点でもう少しがんばって欲しい所です。下から上に向かって順番に書いていく感じですね。無駄に移動している時間が長いです。
もちろんありがたく使わせていただく立場でえらそうなことは申しませんが、NCVCの最適化アルゴリズムのすばらしさに改めて感心する限りです。
Gcode の軌跡を最適化するツールもどっかで見たような気がしますのでそのうち試してみたいですね。

ということで G-code tools の使い方でした。
私の理解も完全ではございませんが、ご質問などございましたらコメントくださいませ。わかる範囲でお答えさせていただきます。

コメント

  1. kenbo より:

    みら太さんこんにちは。

    ご丁寧にご回答いただきありがとうございます。

    gcode toolsのプラグインは入れてあるので、使ってみます。私はレーザーではなく、ルーターなので工具径オフセットが上手くできるとよいのですが・・・

    取り急ぎお礼です。

  2. kenbo より:

    みら太さんこんばんは。

    gcodetools使ってみました。
    ベクトル線図のGcode化はみら太さんを参考に何も問題なくできました。

    また、ポケット加工をするためのパスをGcodetools⇒Area(私のは日本語化されているためか「面積」と表示)⇒Areaで描いてみると
    指定した工具径が反映されている感じです。
    ただし、オフセットパスの計算がいまいちなのか複雑な図形(今回は印鑑の文字)ではパスに一部バグが出ていました。
    私の使い方が悪いだけかも知れませんが・・・(^_^;)

    いづれにしても、お金をかけずにGcodeを生成できるのは事実ですのでありがたい機能ですね。

    • みら太/mirata より:

      kenboさんありがとうございます。多少なりともお役に立っているようでうれしい限りです。
      Areaですか。触ったことがないところです。
      どうかいろいろと試して開拓してくださいませ。Google先生に聞く限り、国内にはg-code tools について詳細に解説したページがないように思われます。ここで開拓していただけると私も含めた後進に大きな力になります。
      どうぞよろしくお願いいたします。何かわかりましたら教えてくださいませ。

      ありがとうございました。

  3. 匿名 より:

    みら太さん,こんにちは.

    最近レーザ加工機を触る機会があり,いろいろと参考にさせて貰っています。

    NCVCのNCデータ(G-code)の読込ですが,NCVCの「オプション」→「拡張子の設定」から追加できると思います.

    • みら太/mirata より:

      お返事遅くなりましてもうしわけないです。
      拡張子設定ができるのですね。
      丁寧なマニュアルがあるのに読んでませんでした。
      有難うございます。