C#ATIA

↑タイトル詐欺 主にFusion360API 偶にCATIA V5 VBA(絶賛ネタ切れ中)

Fusion360CAM ポストコンフィグをイジル

CAMソフトで結構手間取るのが、ポスト処理を行うためのファイル。
(Fusion360CAM ポストコンフィグって呼ぶんですね)

ちょっとした改良をしようと思ってファイルの中を見ても…想像以上にプログラムチック。
JavaScriptのようです。

フォーラム見ても、盛んに
「カスタムポストにつきましては、弊社製品の販売店にて受け付けております。」
って書いてありますね。 納得。


JavaScriptのわからんド素人が、ちょっとだけ挑戦してみようと思いました。
テーマは前回の実績を記録できるよう、カスタムマクロを仕込むだけです。
加工時間の実績を取る - C#ATIA
1から作成するなんて当然無理なのですが、ちょっと追加するぐらいですから。


まずはコンフィグファイルを探し出します。
何か経路作ってポスト処理ダイアログ表示させれば、フォルダのパスが表示ので
ここあるみたいです。
f:id:kandennti:20160906234637p:plain
以前利用した "fanuc.cps-GenericFANUC" をベースにすることにします。
念の為コピーをしリネームして "fanucGetTime.cps" とします。

これをエディタで開くのですが、前回開いた時は
「・・・無理」
と思ったのですが、海外のフォーラムにこちらのリンクが紹介されているのを
発見しました。
Documentation/Autodesk Post Processor manual-sm-130829.pdf at master · AutodeskCAM/Documentation · GitHub
Fusion360が記載されていない上、ちょっと古いですが、まぁそんなに
変わってないでしょう。 正直、理解出来ていませんが
"onOpen"関数がヘッダー処理っぽくて、"onClose"関数がフッター処理なのだろう
と解釈しました。

改めて先程のファイルをエディタで開き・・・ ふ~ん、JavaScriptって
変数に関数を代入できるんだなぁ と感じつつ "onOpen" を発見。

・・・
  writeln("%");
・・・

から書き出しているのだろうから、こんな感じにしてみました。

・・・

  description = "Generic FANUC GetTime";

・・・

function onOpen() {
・・・

  writeln("%");
  writeln("#3001=0");
・・・

一旦保存時実際にポスト処理をさせようとすると
f:id:kandennti:20160906234720p:plain
お、ちゃんと認識されているみたいです。 で、実際に処理させると
f:id:kandennti:20160906234731p:plain
ん、違う。Oナンバーの後にしたいし、"Nxx"が付いてない。(個人的には要らない)
ならば、と思いこんな感じに

・・・

  description = "Generic FANUC GetTime";

・・・

function onOpen() {
・・・

  writeln("%");

・・・
  } else {
    error(localize("Program name has not been specified."));
    return;
  }

  writeBlock("#3001=0");

  // dump machine configuration
・・・

"writeBlock" は、チラチラ見かけていたので何となく出来るかな?と思い
利用してみました。 実際処理すると
f:id:kandennti:20160906234748p:plain
出来てます。 残り最後部分もついでに追加し

・・・

function onClose() {
・・・

  onImpliedCommand(COMMAND_STOP_SPINDLE);

  writeBlock("G53");
  writeBlock("#1=#3001/1000");
  writeBlock("#502=FIX[#1/3600]");
  writeBlock("#503=FIX[#1/60]-#502*60");
  writeBlock("#504=FIX[#1]-#502*3600-#503*60");

  writeBlock(mFormat.format(30)); // stop program, spindle stop, coolant off
  writeln("%");
}

処理をすると

f:id:kandennti:20160906234801p:plain

何とかなったみたいです。

ちょっとした追加ぐらいなら何とかなりそうだし、先日のクーラントのエアーも
switch文の条件を追加すれば良いだけのような気がします。
が、当方JavaScriptのわからんド素人なので、自己責任でお願いします。