Fusion360 CAMポストプロセッサのカスタマイズ

スクリーンショット 2017-02-08 20.26.03Fusion360のCAM機能でCNC工作機械を動かすためのGコードを作成する処理をポスト処理と呼びます。その時に使っている機械に合わせたGコードを作成する必要があります。ホビーユーザーであればMach3かUSBCNCを使っている人が多いと思います。私はMach3を使っています。Fusion360にはMach3用のGコードを作成するポストプロセッサが用意されています。このファイルをカスタマイズする方法を紹介します。

まずはなんでカスタマイズが必要になるかという話ですが、標準では問題がいくつかあります。標準のMach3用のポストプロセッサの仕様でしょうが、書き出されたGコードに使いにくい部分があります。私が使いにくいと思った点は次の通りです。
1. スピンドルをonにしてから切削を始めるまで待機時間が無い。スピンドルの回転が上がるまで待ち時間が欲しい。
2. Z軸を移動させる前にXYの移動が入っている。材料の底面で0合わせをしている場合は事前にZ軸を上げておかないと事故になる。
3. 切削終了後にXYの原点に戻るようになっている。クランプでギリギリを押さえている場合とかスピンドルがクランプにぶつかってしまう事がある。

というわけでこれらの問題を解決するためにポストプロセッサのカスタマイズを行います。macOS、Windowsどちらでも同じような作業になります。通常の書き出しでは雛形ポストからmach3mill.cpsを選びます。

スクリーンショット 2017-02-08 20.26.29

ポストプロセッサファイルをコピーする。
まずは既存のポストプロセッサファイルをコピーします。ファイルはmach3mill.cpsです。場所はmacOSとWindowsでそれぞれ以下の場所になります。
macOS:/Applications/Fusion360.app/Contents/Libraries/Applications/CAM360/Data/Posts/
スクリーンショット 2017-02-08 21.19.19
Fusion360のアプリアイコンを右クリックしてパッケージの内容を表示を選び中身を表示して行きます。私が使っているのはAppStoreからインストールしたものなのでAutoDeskのサイトからダウンロードした場合はインストール先が違うかもしれません。
Windows:スクリーンショット 2017-02-07 19.19.00W

どちらのOSでもPostsフォルダの中に雛形の.cpsファイルが入っています。そこからmach3用のファイルをコピーします。このファイルはテキストエディタで開く事が出来ます。中身はC言語っぽいもので書かれています。このファイルに書かれたプログラムに従ってGコードを書き出しているようです。

ファイルの修正
ここで私が手を入れたファイルをダウンロードできるように公開するとライセンス上の問題がありそうなので、修正点のポイントを書きますので各自でファイルを修正してください。

例えばGコードの先頭部分は以下のfunctionが書き出しの処理を行っています。120行あたりにあります。

[c]
function onOpen() {

if (false) {
var aAxis = createAxis({coordinate:0, table:true, axis:[-1, 0, 0], cyclic:true, preference:1});
machineConfiguration = new MachineConfiguration(aAxis);

setMachineConfiguration(machineConfiguration);
optimizeMachineAngles2(1); // map tip mode
}
[/c]

一番簡単な修正方法はいらない部分はコメントにしてしまう手があります。先頭に//を入力するだけです。
以下のコードはGコードファイルに「G40」と出力するには

[c]
writeBlock(gFormat.format(40));
[/c]

と書きます。
Mコードは

[c]
writeBlock(mFormat.format(5));
[/c]

といった要領です。
20秒間停止する「G4 P20」の場合は

[c]
writeBlock(gFormat.format(4), "P20" );
[/c]

こんな感じです。
例としてGコードの最後に書き出す部分を載せます。onClose()という関数になっています。

[c]
function onClose() {
writeln("");

onCommand(COMMAND_COOLANT_OFF);

if (properties.useG28) {
//writeBlock(gFormat.format(28), gAbsIncModal.format(91), "Z" + xyzFormat.format(machineConfiguration.getRetractPlane())); // retract
zOutput.reset();
}

setWorkPlane(new Vector(0, 0, 0)); // reset working plane

if (!machineConfiguration.hasHomePositionX() && !machineConfiguration.hasHomePositionY()) {
if (properties.useG28) {
// writeBlock(gFormat.format(28), gAbsIncModal.format(91), "X" + xyzFormat.format(0), "Y" + xyzFormat.format(0)); // return to home
}
} else {
var homeX;
if (machineConfiguration.hasHomePositionX()) {
homeX = "X" + xyzFormat.format(machineConfiguration.getHomePositionX());
}
var homeY;
if (machineConfiguration.hasHomePositionY()) {
homeY = "Y" + xyzFormat.format(machineConfiguration.getHomePositionY());
}
// writeBlock(gAbsIncModal.format(90), gFormat.format(53), gMotionModal.format(0), homeX, homeY);
}
//M05
writeBlock(mFormat.format(5));

onImpliedCommand(COMMAND_END);
onImpliedCommand(COMMAND_STOP_SPINDLE);
writeBlock(mFormat.format(30)); // stop program, spindle stop, coolant off
}
[/c]

3行ほどコメントにしています。これで切削完了後に主軸の移動が無くなります。

切削開始時にスピンドル回転後に一定秒数待つ部分とXY移動の前にZ軸を移動距離まであげる部分です。ファイルの550行目あたりにあります。ただこの行番号は改良後のものなのでオリジナルファイルとは若干異なります(コメントを追加しているのでそのぶん伸びてます)。

[c]
//wait G04 P20
writeBlock(gFormat.format(4), "P20" );

forceAny();
gMotionModal.reset();

var initialPosition = getFramePosition(currentSection.getInitialPosition());

//add by mkbtm
writeBlock(gMotionModal.format(0), zOutput.format(initialPosition.z));

if (!retracted) {
if (getCurrentPosition().z < initialPosition.z) {
writeBlock(gMotionModal.format(0), zOutput.format(initialPosition.z));
}
}
[/c]

initialPosition.zというのがZ軸の移動高さらしいです。

編集の終わったファイルを所定の位置に置く
編集が終わったらファイルを別名で保存しておきます。私はmach3mill_mkbtm.cpsという名前で保存しました。このファイルを所定の場所に入れます。
Windowsではカスタムテンプレートを入れる場所が決まっています。スクリーンショット 2017-02-09 7.38.40セットアップのボタンをクリックして「カスタムポストを使用」を選択するとコンフィグフォルダに次のパスが表示されるのでそこに先ほどのファイルを入れます。そうするとポストコンフィグで作成したファイルを選択できるようになります。

スクリーンショット 2017-02-09 7.38.53

macOSの場合は/Users/mkbtm/Autodesk/Fusion 360 CAM/Postsがそのフォルダかなと思うのですがそのフォルダに入れてソースでカスタムポストを選択してもポストプロセッサが「ポストは使用できません」とグレーのままです。入れる場所が違うのか?macOS版ではカスタムポストに対応していないのか?

スクリーンショット 2017-02-09 8.22.13そこで元のフォルダ(/Applications/Fusion360.app/Contents/Libraries/Applications/CAM360/Data/Posts/)に入れてます。とりあえずこれで使えるようです。

ちなみにポストプロセッサの作成を依頼すると30万円かかるらしいです。
http://fusion360.3dworks.co.jp/service/fusion360-cam-postprocessor/