Fusionで角柱を自動生成する

こんにちは、理工学部電気情報工学科2年のFastriver(@fastriver_org)です。最近活動ができない(機構なので現地じゃないと動けない)ので、久々に機構制御班の仕事をしようと今回のようなことをやりました。

CADを書きたくない

ずっと思ってます。昔(F^3RCの頃)はCAD大好きだったのですが、NHK班に入ってから書くのが非常に面倒に思えてきました。

その原因の一つは、

同じような見た目の角柱を大量に作るので精神が削れていく

というわけです。あんなの設計から加工まで自動化してくれよ。

加工を自動化するのは無謀なのでせめてCADだけでも自動化(コードベース)しよう、という取り組みです。

使うもの

  • Fusion 360
  • Fusion 360 API
  • Python

Fusionさん、学生は無償で使えるの素晴らしいですよね。

https://www.autodesk.co.jp/products/fusion-360/students-teachers-educators

を見てダウンロードしてください。普段使っているSolidworksを見送った要因は、APIのダウンロード方法がよくわからなかったからです。Fusionの方が単純にできると思います。

プロジェクトを作る

最初に開いたところから、[ツール]→[アドイン]→[作成]で新しいプロジェクトが作れます。

スクリプトを選びます。アドインは起動時に実行ができるらしいですが、要らないのでスルー。

C++とPythonだったらPythonの方が書きやすそうなのでPythonを選択。公式リファレンスではどっちのサンプルもあるのでどっちでも大丈夫だと思います。

下のフォルダの場所に生成されるのでVSCodeとかで開いて適当に編集しましょう。最初はダイアログが開くだけのスクリプトが入っています。デバッグも可能なそうですがやりかたがわかりませんでした。

書く

公式リファレンスはこちら。

https://help.autodesk.com/view/fusion360/ENU/?guid=GUID-7B5A90C8-E94C-48DA-B16B-430729B734DC

一番見やすかったのでこちらのサイトを参考にコードを書きました。

コードは結構長いためGitHubで見てください。

https://github.com/organic-nailer/PrismGenerator

各ファイルの役割はこんな感じです

  • PrismGenerator.py: 動かすとここのrun関数が呼ばれる
  • DialogHandler.py: パラメータを入力するダイアログのクラス
  • Prism.py: 角柱の生成とかを書いたクラス
  • DataManager.py: 全体で必要なオブジェクトを保持しておくクラス

Python書くのすごくつらいですね、この程度の規模でも泣きそうになってました。

ご乱心

git cloneとかすれば誰でも動かせると思います

動かしてみる

書けたら動かしてみましょう

アドインの画面でスクリプトを選択し、[実行]で動きます。

保存する

やっぱりSolidworksで使いたいので、エクスポートしましょう。

左上の[ファイル]→[エクスポート]からStepファイルで保存します(これが最適解だよね?)。

Solidworksにインポートしたところ普通に動いたので問題ないと思います。

最後に

自動化は正義