CAMソフトで結構手間取るのが、ポスト処理を行うためのファイル。
(Fusion360CAM ポストコンフィグって呼ぶんですね)
ちょっとした改良をしようと思ってファイルの中を見ても…想像以上にプログラムチック。
JavaScriptのようです。
フォーラム見ても、盛んに
「カスタムポストにつきましては、弊社製品の販売店にて受け付けております。」
って書いてありますね。 納得。
JavaScriptのわからんド素人が、ちょっとだけ挑戦してみようと思いました。
テーマは前回の実績を記録できるよう、カスタムマクロを仕込むだけです。
加工時間の実績を取る - C#ATIA
1から作成するなんて当然無理なのですが、ちょっと追加するぐらいですから。
まずはコンフィグファイルを探し出します。
何か経路作ってポスト処理ダイアログ表示させれば、フォルダのパスが表示ので
ここあるみたいです。
以前利用した "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"); ・・・
一旦保存時実際にポスト処理をさせようとすると
お、ちゃんと認識されているみたいです。 で、実際に処理させると
ん、違う。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" は、チラチラ見かけていたので何となく出来るかな?と思い
利用してみました。 実際処理すると
出来てます。 残り最後部分もついでに追加し
・・・ 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("%"); }
処理をすると
何とかなったみたいです。
ちょっとした追加ぐらいなら何とかなりそうだし、先日のクーラントのエアーも
switch文の条件を追加すれば良いだけのような気がします。
が、当方JavaScriptのわからんド素人なので、自己責任でお願いします。