FLASHFORGE FlashPrint が吐き出した G-Code を覗いてみた。

NC工作機械のGコードは仕事でも携わってきたので
3DプリンターのG-codeにも興味がありテキストエディタで覗いてみた
テキストエディタでは、ヘッダー部分はたぶんバイナリデータなんだろうね?
文字化けの文字が並んでて、その後、G-code部分はテキストで出てくる
改行文字は通常のWindowsのテキストの「CR,LF」ではなく「LF」のみ・・
これは、FANUC系の工作機械と同じだね
なので、「メモ帳」では改行されないで、連続文字に見えるかもしれない
私の使ってる秀丸エディタは自動認識で正常に表示してくれた
さて、FLASHFORGE FINDER に同梱されていたサンプルデータ「20mm_Box.gx」
を覗いてみると、下記の感じ

;start gcode
M118 X15.00 Y15.00 Z10.00 T0
M140 S0
M104 S210 T0
M104 S0 T1
M107
G90
G28
M132 X Y Z A B
G1 Z50.00 F400
G161 X Y F3300
M6 T0
M907 X100 Y100 Z40 A80 B20
M108 T0
G1 X-15.00 Y15.00 F4800
;preExtrude:0.20
G1 Z.20 F400
;preExtruder0
G1 X-15.00 Y15.00 F4800
G1 X-15.00 Y-15.00 E4.3504 F1200
G1 X15.00 Y-15.00 E8.7009
G1 X15.00 Y15.00 E13.0513
G1 X-15.00 Y15.00 E17.4017
...
...実際のプリント動作指令
...
G1 X9.03 Y-9.06 E737.1908
G1 X9.06 Y-9.03 E737.1922
M107
;percent
G1 E735.8922 F1800
;end gcode
M104 S0 T0
G162 Z
G28 X Y
M132 X Y Z A B
G91
M18


G1やG90など、NC工作機械にも馴染みのコードもあるけど
主に機械の補助的機能を指令するMコードはあまり互換性がない
調べてみると下記サイトが見つかった
http://reprap.org/wiki/G-code

これみると
  G00 位置決め(早送り)
  G01 直線補間(切削送り)
  G02 円弧補間・時計回り
  G03 円弧補間・反時計回り
  G04 ドウェル・一定時間停止
  G28 機械原点復帰(指令軸のホームへ移動)
  G90 絶対座標系(アブソリュート指令)
  G91 相対座標系(インクレメンタル指令)
  M06 工具交換
ここらは、NC機械と同じですね

プリンタ特有なのは
  M118 ?よく分からない。プリントの最大値なのかな?
  M140 ベット温度設定。これはFINDERではあまり関係なさそう
  M104 エクストローダー温度設定。
  M107 ファンOFF
  M132 軸のオフセット設定?よく分からないが初期設定みないなものかな?
  G161 指令軸の最小点に移動させる
  G162 指令軸の最大点に移動させる
  M907 軸のモータ電流設定?これもよく分からないがおまじない?
  M108 エクストルーダ速度設定
  M106 ファンON
  M18 すべてのモーター無効(終了コード?)
  E指令 フィレメントを押出す長さ指令(mm)
  ;  記号 コメント行
こんなところか。

まぁ、分からない指令は、おまじない的に書くとして
「G0」「G1」「G28」「G161」「G162」あたりの組合せで
ある程度の動作は、させられそうですね。
会社では新しいNC機械が入ってくると、ランニング運転用として
機械の最大最小付近を動作するようなNCデータを作成するのですが
そんなイメージのFINDER用G-Codeを作成してみたいと思います

っと思い、適当にテキストエディタでヘッダーの後にコードを編集し
そのデータを、FlashPrint へロードしてみたけど、読込んでくれない!

う~ん、たぶん、ヘッダー部分をエディタが壊したんだなぁ?
秀丸のバイナリモードで、オリジナルデータと壊れたデータを比べると
なるほど・・・
オリジナルの[0x00]ヌル文字が[0x20]スペース文字に変換されてた。
たぶんテキスト的には、ヌル文字なんて意味がないので
テキストエディタは勝手に変更しちゃうんだろうね
おそらくwindowsのメモ帳も同じような処理をするんじゃないかな?
これじゃ、テキストエディタでは、FlashPrintのG-codeの編集は無理!
そうなると、バイナリエディタで編集するしかないか?
と言う事でネットで探してみるとバイナリエディタ自体は
いろいろ見つかった。その一つを試してみると、
16進表示での編集になりそう。これでG-codeを入力するのには、
ちょっと面倒だなぁ
しょうがない、ヘッダーはバイナリのままで、G-code部分は
テキスト入力で、改行は「LF」にするプログラムを
暇つぶしに作ろうか~
使う人はあまりいないかもしれないけどね~
もしかすると、他のスライサーで出力したデータをコピペで
利用できるようになるかもしれない