Fusion360 CAM ポストプロセッサ徹底解説・概要編

Fusion360

数回にわたって、Fusion360 CAM のポストプロセッサの説明をしようと思います。
しかし、筆者自身も独学なので、わかっている範囲での説明になりますし、もしかすると間違いもあるかもしれませんので、ご了承ください。
ただ、ポストプロセッサはNCデータを出力する機能であり、それ自身が機械を動かすわけではありません。
最終的にはポストプロセッサによって出力されたNCデータを確認する事が重要になります。

ポストプロセッサ情報

各工作機械のサンプルポストプロセッサは、こちらのサイトからダウンロードできます
英語版ですが、このサイト上部メニューの「Manual」リンクから、トレーニングガイドを取得できます。
さらに、「API」リンクでは、ポストプロセッサ言語のクラスや関数も含めた詳細の資料が公開されています。
また、Fusion360のポストプロセッサは、JavaScript言語を利用しているので、標準関数や構文は、JavaScript言語の知識が必要になります。
JavaScript言語の詳細は、ネット上や参考書が沢山存在するので、そちらを参照してください。

開発環境

ポストプロセッサファイルは、テキストファイルなので、慣れているエディタで編集や開発は可能です。
ただし、Autodesk としては、こちら「Post Processor Training Guide」の「2-13」ページにあるように、Microsoftの「Visual Studio Code」を推奨しています。
C#やPythonなど、かなり多くの言語をサポートしていて高機能なので、最初はちょっと戸惑いますが、普通のエディタとしても問題なく使用できます。
無料で利用できますし、開発者からの人気もかなりのようなので、こだわりのエディタがない場合には、こちらを使ってみるのもいいと思います。

Visual Studio Code インストール

入手はこちらから、「今すぐダウンロード」でこの画面になります。

ご自分の環境に合った、インストーラをダウンロードします。
インストール方法は、通常のインストールとほとんど同じです。

  • ダウンロードしたインストーラの実行ファイルを実行
  • 使用許諾誓約書を確認し、同意して「次へ」
  • インストールディレクトリの設定
  • プログラムグループはデフォルトで「次へ」
  • 追加ラスクの選択は、全部のチェックしたほうが、右クリックなど使えて便利なようです。
  • 「インストール」
  • 「完了」

これでインストールは完了です。
早速起動してみますが、「英語」モードになっています。
「拡張機能」で「日本語」表示に変更できます。
通常のエディタとしての利用では、これでも十分利用可能ですが
Fusion360 のポストプロセッサを開発・編集するには、Fusion360用のユーティリティも追加したほうが便利です。

拡張機能

拡張機能は、左サイドバーのアイコンをクリックします

その後、「Marketplaceで拡張機能を検索する」の検索窓に、キーワードを入力すると、対象の拡張機能が表示されます。
日本語化の場合には、「japan」と入れると、対象機能がでてきます

「Japanese Language Pack for Visual Studio Code」が日本語機能になりますので「インストール」します。
Fusion360ユーティリティは、「Fusion」で検索すると、表示されます。

同様に「インストール」します。

実際のポストプロセッサを表示してみる

それでは、Fusion360が標準で用意しているポストプロセッサを表示してみます。
標準ポストは、Fusion360を立ち上げ、「製造モード」でなにかしら「パス生成」を行った後、「ポスト処理」を立ち上げます。

そのダイアログの「設定」の項目から「インストールしたポストライブラリを使用」を選択すると、インストール済みフォルダが自動的に設定されます。
画像赤線のフォルダ位置をコピーし、エクスプローラーで開くと、かなり沢山のポストがインストールされているのが確認できます。

その中から、「fanuc.cps」をVSCodeで開いてみましょう。
VSCode を起動して、そこにドロップしてもいいですし、ファイルの右クリックから「Codeで開く」から開く事ができます。

これで準備完了ですが、ステータスバーに設定情報があるので、確認しておきます
「スペース:2」は、プログラムコードを見やすくするための自動字下げの幅の設定値です。
私は、「スペース2文字」で設定しています。
「Shift JIS」はエンコードの設定です。漢字などが文字化けなどする場合に設定します。
「CRLF」は改行コードです。Windowsでは、「CRLF」ですが、AppleやLinuxの場合、違ってきます。
「JavaScript」は、対象ファイルの言語モードの設定です。
拡張機能により、Fusion360 Post の拡張子は「.cps」と認識されているので、「fanuc.cps」の場合でも、拡張子は「.cps」なので自動で「JavaScript」が設定されています。
これにより、プログラム言語に合わせたチェックや自動補完などしてくれるようです。

秀丸 と VisualStudioCode

今まで、テキストファイル編集だけでなく、Fusion360ポスト編集にも、ずっと秀丸エディタを使っていましたが最近この「VisualStudioCode」をインストールしてみました
まだ使い始めたばかりですが、なかなかよさそうに感じてます。
同じような方の意見も、こちらで見つけました
同感です。

ポストプロセッサ概要

「製造モード(CAM)」で、加工機能を定義し「生成」すると、「CLファイル(Cutter Location)」と呼ばれる事もある中間ファイルが作成されます。
ただ、このファイルでは工作機械を動かす事ができません。
工作機械を動かすには、工作機械制御機が理解できる言語(NCデータファイル:GCodeなど)が必要です。
CAMが生成した、CLファイルを、NCデータに変換するのがポストプロセッサの役割でポストプロセッサファイルで定義します。
同じメーカーの制御機でも、違い(方言)がある事もあります。
場合によっては、機械ごとのポストプロセッサファイルを用意する必要もでてきます。

Fusion360のポストプロセッサファイル言語

ポストプロセッサファイルの拡張子は、「.cps」で、JavaScript言語に基いて定義されます。
JavaScript言語は、大文字小文字を区別するので、注意が必要です。
「Tool」と「tool」は別物になります。
その他、JavaScriptの言語の理解が必要に加え、Fusin360 CAM 用のクラスや変数など、連携方法の情報も必要です。
ただ、記事を書いている私も、それほどJavaScriptを理解している訳ではありません。
インストール済みのサンプルファイルを編集してみて、その出力結果などからなんとなく理解しながら、好みのNCデータが出力するように改造しています。

コメント

プログラム言語には、コメント文を挿入できるようになっています。
コメント文は、処理的には無視されますが、プログラマが分かりやすくするために適当なコメントを書き込む事ができます。
NC言語にも、コメント文がありますね。
ファナックであれば、 (  と  )  に囲まれた中身はコメントとして扱われますね。
JavaScript の場合は、2種類の方法があります。
「 // 」から行末までと、「 /* 」~「 */ 」に囲まれた文字列です。

/*
 これはコメントです。
  ・
  ・
 ここまでコメントです。
*/

ver max // 最大値( //以下はコメントです)

変数

Fusion360 ポストファイルのサンプルを見てみると、変数の宣言には、「var」が使われています。
しかし、JavaScript言語で調べてみると、「var」「let」「const」の3種類があるようです。
・「var」は再宣言、再代入が可能
・「let」は再宣言が禁止
・「const」は、再宣言、再代入が禁止
さらに、変数のスコープ(有効範囲)なども違うみたいです。
筆者としては、「再宣言、再代入が可能」というのはちょっと引っかかります。
「let」を使ったほうがいいのではないか?と思っています。
また、定数(変化しない値)は「const」とした方がいいと思います
ここでは詳細は省略しますが興味ある方は、調べてみてください。
Fusin360 のサンプルを参照すると、「var」が使用されているので、説明は「var」でおこないますが、私自身は「let」を主に使用しようと思います。
では、サンプルを開いてみると下記のように宣言されています。

var firstFeedParameter = 500;
var useMultiAxisFeatures = true;
var forceMultiAxisIndexing = false; // force multi-axis indexing for 3D programs
var maximumLineLength = 80; // the maximum number of charaters allowed in a line
var minimumCyclePoints = 5; // minimum number of points in cycle operation to consider for subprogram
var cancelTiltFirst = false; // cancel G68.2 with G69 prior to G54-G59 WCS block
var useABCPrepositioning = false; // position ABC axes prior to G68.2 block

このように、「var」で変数名を宣言し、「=」の右辺でデータ値で「初期化」します
変数宣言後、別の行で「var」なしで「代入」する事も可能です。
変数は定義済みであれば、通常の値と同様に使用できます。

Kernel Setting

サンプルファイルの上部を見ると、変数宣言されていない(ver がない)変数があります。
これは、CAMのポスト処理の部分で、使用される特殊な変数です。
「=」での初期化・代入方式の変数以外にも、複数のオブジェクトを定義している「properties 」変数も見つかります。

 ・
allowHelicalMoves = true;
allowedCircularPlanes = undefined; // allow any circular motion
highFeedrate = (unit == IN) ? 500 : 5000;
 ・
 ・
properties = {
  writeMachine: true, // write machine
  writeTools: true, // writes the tools
  preloadTool: true, // preloads next tool on tool change if any
   ・
  operations on same holes
  useRigidTapping: "yes" // output rigid tapping block
};

Fusion360 CAM でポスト処理を実行してみましょう

接頭に(ビルトイン)なのが、「ver」のない変数で定義されている変数です。
properties = {…..}で定義されているオブジェクトは、(ビルトイン)が付きません。
ポストファイルで、この変数を変更したり、追加したりすることで、このポスト処理ダイアログのデフォルト表示を変更する事ができます。

Function(関数)

「Function」で始まる宣言は、関数の定義となります。
やらせたい操作を、定義しておくことで、同様の動作を呼び出すだけで指令できます。

自動呼出し、関数

Fusin360ポストプロセッサでは、関数の中でも「on」始まる関数はポストプロセッサ実行後に自動的に呼び出される関数になっています。
例えば、ポスト処理の開始時に呼ばれる関数や、早送り・直線補間、円弧補間などの図形要素が来た時などです。
その中で、NCデータの構成を決定するのが、次の4つの関数です。

onOpen( )
 ポスト処理開始時に呼ばれます。
 例えば、Fanuc であれば、「%」や「O番号」や初期設定コードなどの
 出力に使用されます。

onSection( )
 Fusio360 CAM では、セットアップで加工モデルやストックを設定後
 等高線などの加工工程(セクション)を定義していきますが
 選択されているポスト処理させたい工程(セクション)ごとに呼ばれます
 ここでは、工具交換させたり、回転や冷却処理などを指令します。

onSectionEnd( )
 上記セクションの終了時に呼び出されます。
 主軸回転や冷却の停止。安全位置への移動など指示します

onClose( )
 各セクションの処理終了後、NCプログラム終了時の指令を定義します。
 Fanuc であれば、「M30」や「%」を出力させます。

まずはこの4つの関数で、NCデータの構成が定義できるので、動作させたいマシンの制御機と類似のサンプルポストファイルをコピーし、4つの関数を編集する事で望みの構成にする事が可能性です。
ある程度、慣れも必要なので、JabaScriptをそれほど理解していなくても、修正・出力・修正・出力を繰り返す事でだんだん理想に近いデータになってきます
ポストファイルに不具合があると、Fusion360ポストはエラーを吐き出します。
Fusion360が壊れる事はないと思うので、気楽にサンプルファイルをコピーして、とりあえず、編集してみるのが上達の早道だと思います。

個人用ライセンスとサブスクリプションライセンス

最近、ライセンス形態が見直されたからか、ポスト処理も個人用では制限がでてきたようです。
筆者はCAM作業は会社のサブスクライセンスで作業していたので気が付きませんでしたが、この記事を書くにあたり、自宅の個人ライセンスでテストしてみたところ、この制限に気が付きました。
具体的には、複数工具を使用するセクションを一度に処理してくれません
ポスト処理は、一工程(セクション)ずつの制限があるようです。
確かに、自動工具交換を行うような加工機械を趣味で所有している方はごく少数でしょうからね~。
お仕事で使用する場合は、かならずサブスクリプションライセンスをお取りください。
個人ではせいぜい、卓上CNC装置程度だと思いますから、単セクション処理でも問題ないとの仕様だと思います。

まとめ

今回は、Fusion360 CAM のポストプロセッサの概要を説明しました。
ポストプロセッサは、JavaScriot 言語を使用するため、そちらにも若干触れました。
次回は、もう少し具体的な編集作業を行ってみたいと思います


Fusion360 ポスト記事


  1. 概要編
  2. 構成編
  3. 変数
  4. グローバルセクション
  5. 関数
  6. NCプログラム仕様検討
  7. onOpen( )
  8. onSection( ) No1
  9. onSection( ) No2
  10. onSectionEnd( ) & onClose( )

1 2 3 4 5 6 7 8 9 10

コメント

  1. kantoku より:

    こんにちは。

    ポストコンフィグの修正を何度か挑戦しましたが、難しいです。
    CAD側のAPI(他のソフトのマクロ)の方がはるかに楽です。

    プロパティ部分の一部ですが、日本語化する方法を偶然見つけました。
    https://forums.autodesk.com/t5/fusion-360-ri-ben-yu/posuto-chu-li-puropatino-ri-ben-yu-hua/m-p/9467137

    又、試していませんが個人ライセンスの制限(ツールチェンジと回避速度)に
    対応出来る(出来そう?)なアドインを公開されている方がいらっしゃいます。
    https://github.com/TimPaterson/Fusion360-Batch-Post

    機械をぶつけてからじゃ遅いので、ライセンスを購入した方が良いとは
    思いますが・・・。

    • kazuban kazuban より:

      kantokuさん、こんにちは
      情報ありがとうございます。
      私は逆に、python がわからないので、API にはまだ手を付けていません。
      ポストはJavaScriptの構文が、C++と似ている所があったのでよかったです。
      会社では、ほとんどの機械は自作ポストで対応できてます。
      特に、国内にはあまりない「レダース機」用のデータは、おそらく他のCAMではベンダーさんに依頼するしか対応できないと思いますが、Fusion360ポストで動作しています。
      なので現在はレダースのパスはFusion360でしか作成できない状態です。

      「propertyDefinitions」は、ポスト設定でのプロパティの説明を表示するに使っているようです。
      設定画面のプロパティの上部にマウスを置くと内容が表示されます。
      なので、このオブジェクトはなくてもいいみたいですし、日本語に編集すればそれが出てきますね。

      ライセンス制限は、先日自宅で記事を書いてて知りました。
      工具交換以外にも、早送りに制限がありますね~
      工具交換に関しては、サブプロ化して、メインプロを他ソフトで作成すればどうにかなりそうですが、こんなアドインを作成している人がいるんですね。
      ちょっと怖いですね
      私も、仕事での使用であれば、サブスク購入がいいと思います。

      私のわかる範囲で、ポストの記事も書こうと思っているので、いろいろご意見いただければ助かります。

  2. zinY より:

    はじめまして。
    わかりやすく知識を公開していただきありがとうございます。

    加工機を動かすためにGコードの加工経路以外の入口と出口はいつも手打ちしていましたが、チャレンジしてみようと思います。

タイトルとURLをコピーしました