MacOS Xでの2D CNCワークフロー
ShapeOkoを駆動するためのツールチェーンを試行錯誤しています。ツール類はRepRap系がMacでもそこそこ揃っているようですが、単純な2次元の場合だとあまり情報が無いようです。とりあえずうまくいったケースについて参考として書いておきます。またうまくいかなかった事例も後に書いておきたいとおもいます。
全体手順です。
InkscapeでDXFを生成
PyCAMでG-Codeを生成
スクリプトでG-Codeのフォーマットを修正
Pronterface-Macでコントローラへ送信
Sanguinololu w/ Marlinでモータを駆動
事前にツール類のインストールしておきます。
CADとして、InkscapeとBig Blue Saw DXF Outputというエクステンション
CAMとして、PyCAM(と関連するpythonのパッケージ)
G-Code送信ツールとして、Pronterface-Mac
まずInkscapeでパスを生成します。ここでは文字の例です。
文字の場合には、メニューからPath>Object To Pathでパスに変換しておきます。
メニューからObject>Ungroupでグループ解除しておきます。
そして、File>Save AsでDXFフォーマットで保存します。このとき、Big Blue Saw DXF Outputを選択します。
DXFファイルができたら、次にCAMにかけます。PyCAMを起動し、メニューからFile>Open Modelを選び、先ほど生成したDXFファイルを指定します。
このとき、Modelタブで、Inch->mmボタンを一度押しておくと、Inkscapeで作成したサイズと一致した結果が得られます。
Toolsタブで、使うツール(ビット or 刃物)を選びます。ここでは紙にペンで絵を描くので最小径のPenというツールをNewボタンを押し径を指定し、作っておきます。
Boundsタブで100% Marginという設定を、すべて100%を指定して作っておきます。
Tasksタブで、Gravureのみにチェックを入れておき、Generate Allボタンを押します。するとToolpathが生成され、Toolpathsタブにエントリが生成されます。
プレビューウインドウには、ツールパスを生成する前はモデルが青色で描画されていますが、ツールパスが追加されるとオレンジで描かれます。ツールの上げ下げの線もあることが判ります。
Toolpathタブで、Export Visibleボタンを押して、G-Codeファイルを保存します。
さて、これでG-Codeファイルが得られたわけですが、このG-Codeは、MarlinなどのRepRap系のコントローラで読むことができません。MarlinなどRepRap系のファームウェアが受け付けるG-Codeは制約があるようで、CAMが生成するG-Codeを素直に受け付けてくれません。
この制約に合うように、スクリプトでファイルフォーマットを修正します。修正するためのスクリプトの例をこちらに。
https://gist.github.com/3736930
このスクリプトでファイルを変換します。
$ ./gc4marlin.rb helloworld.ngc > helloworld.gcode
変換前と後のG-Codeはこんな感じです。
https://gist.github.com/3746370
こうして得られたhelloworld.gcodeを、ツールを使ってコントローラに送り込みます。
ツールとしてPronterface-Mac-Mar2012を起動します。
USBでコントローラと接続し、ポート(デバイス名/dev/tty.usbserial-xxx)とシリアル速度(250000)を確認して、Connectボタンを押します。正常に接続すると右のコンソールに、コントローラからのグリーティングメッセージが表示されるはずです。
接続が成功したら、プリンタの設定として、
M92 X22 Y22 Z640
と入力し、SENDボタンを押します。
つづいて原点合わせです。モーターがフリーな状態(Motor OFFボタンを押す)でテーブルを手で動かし原点にペン先を合わせます。そして、Z軸をボタンクリックで少しずつ下げて、紙にちょうど良い筆圧で触れる位置に合わせます。そして、次のコマンドを送って原点をセットします。
G92 X0 Y0 Z0
原点を合わせたら、Z軸の上ボタンを押して、ペン先を上げておきます。
続いて、Loadボタンを押して、G-Codeを読み込みます。
最後にPrintボタンを押すと、G-Codeが送信され始めて、テーブルが動きます。Pauseボタンを押すと一時停止、Resumeすると再開します。Restartボタンを押すと、最初から動作を再開します。
以上のフローでMarlinを駆動することができました。
ペンで描いた結果はこんな感じです。
わかったことは、MarlinなどのRepRap系のG-Codeインタープリタは、必ずGかMの指定がすべての行に必要で、一般的なCAMが生成するGコマンドを切り替えとして扱うタイプの標準的なフォーマットをうまく解釈できないことです。3Dプリンタ向けのSlicr3などのツールは、Marlin的フォーマットに合わせて作られているため問題にはならなさそうです。Grblは標準的G-Codeを解釈できるようです。
上記のフローでPyCAMが生成したG-Codeにはアーク系のコマンドG2/G3が含まれないので、Marlin以外のアークをサポートしないファームウェアでも動作できるかもしれません。
InkscapeでDXFファイルを生成するために、Big Blue Saw DXF Outputを使いました。Inkscapeには元々Desktop Cutting Plotter DXFという選択肢が用意されていますが、こちらではうまくいきませんでした(一部のオブジェクトが落ちるようです)。
PyCAMは、SVGファイルを読み込めるようですが、内部でInkscapeを使うようで、Macでは連携させる方法が判っていません。
G-Code送信ツールとしては、Repetier-Hostも使用可能です。でもShapeOkoでお勧めされているUniversal-GCodeSenderはMarlinに使えません。これはGrblにのみ使うことを前提としたツールのようです。
Sketchupで直接G-Codeを生成するPhlatboyz Scriptというプラグインがありますが、一部のパスを生成することができませんでした。また、出力にアーク系のG2/G3が含まれることに注意が必要です。
ツールのインストール(特にMacOS X関連)についての参考リンクです。
Big Blue Saw DXF Export http://www.bigbluesaw.com/saw/big-blue-saw-blog/general-updates/big-blue-saws-dxf-export-for-inkscape.html
PyCAM http://www.shapeoko.com/wiki/index.php/PyCAM-MacOS
Pronterface-Mac https://github.com/kliment/Printrun
PyCAMは、依存するパッケージ類が多くインストールが面倒でした。バージョン依存性もあるようです。MacOS Xの.appとしてまとまると良いのですが。
G-Code書き換えスクリプトはrubyにしましたが、気がついてみると他はすべてCADからCAM、送信ツールまですべてPython系のツールです。こうなったらPythonにすべきでしょうか。











