以前、フォーラムのこちらで
Fusion360のPythonスプリクト(アドイン)は"SWIG" と言うものを利用している
と書きました。
Re: Auto LISP はいつごろ サポートされますか? - Autodesk Community
これ、公にはされていないと思います。
何故それを知ったのか? のお話です。
まず、新規でスプリクトを作成します。
spyderが起動してこんな感じの雛形コードが出てきます。
#Author- #Description- import adsk.core, adsk.fusion, adsk.cam, traceback def run(context): ui = None try: app = adsk.core.Application.get() ui = app.userInterface ui.messageBox('Hello script') except: if ui: ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
最初に出てくる雛形のコードを変更しようと思えば出来ると思うのですが、
それ程バリバリ開発するわけではないので、そのままです。
雛形コードだけじゃ上手くいかなかったので、こんな感じで修正します。
#Author- #Description- import adsk.core, adsk.fusion, adsk.cam, traceback def run(context): ui = None try: app = adsk.core.Application.get() ui = app.userInterface #ui.messageBox('Hello script') doc = app.documents.add(adsk.core.DocumentTypes.FusionDesignDocumentType) design = app.activeProduct design.designType = adsk.fusion.DesignTypes.ParametricDesignType except: if ui: ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
邪魔なメッセージボックスをコメントにし、サンプルコードで
よく見かける、ドキュメントを新作し作業スペースのデザインの取得までしダイレクトモードに切り替えるところまで追記しました。
追記しました。
続いて
doc = app.documents.add(adsk.core.DocumentTypes.FusionDesignDocumentType)
の部分にブレークポイントを設置します。
・・・こちらの説明の方が的確です。
spyderのデバッガ【python】
spyderのバージョンが異なるので、画像は異なります。
(そもそも由緒正しいpythonユーザーはspyder使わないと思います)
自分もspyderに詳しい訳では無いのですが、今まで触ってきた感触として
付け加えますと
・Debug : デバッグの開始 これを押さないと始まらない
・Step : 一行づつ実行 関数の宣言上で行うと関数の終了まで実行
・Step Info : 本気で一行づつ実行
・Step Return : 関数終了直前まで実行
・Continue : ブレークポイントまで実行
・Exit : デバッグの中止 押すとGUI側でエラー出ます(別に問題有りません)
あまりに自分の言葉での表現で申し訳ないのですが、実際開発する際は
ブレークポイント仕掛ける → Debug → Continue → Exit
のような手順になるのではないかと思います。
念の為お伝えすると、
・デバッグ中にExitを押さずに再度Debugをすると、Fusion360落ちます。
・最初の画像の "スプリクトとアドイン" ダイアログを表示させたまま
デバッグを始めると、Fusion360落ちます。
話を戻して、 Debug → Continue まで進めていきます。
ここで、Step Info(本気で一行づつ実行)を押します。すると
少し待たされるのですが、エディタのタブが増えます!
「core.py」って、最初のimportで読み込ませているライブラリ(正しくは
パッケージ?)です。
エディタのスライドバーをグーっと先頭まで持っていくと
ほら、SWIGって書いてある!
URLも記載されているので、サイトを覗いて説明読むと・・・
そういうことらしいです。
Step Return と Step Info 辺りを利用しながら進めると、「fusion.py」も
開きます。
今回のコードには無関係ですが、「cam.py」も開くと思います。
「core.py」は、Autodeskの3DCADカーネルの "Shape Manager" では無く、
カーネルを仲介しているグルーコードパッケージなんだろうと思います。
詳しくはわからないのですが、この辺り読むと
SWIG を使って C++ のクラスを C# で読み込む方法 | Moonmile Solutions Blog
C / C ++ライブラリを他言語のグルーコードを自動的に作成出来るんじゃないのかな?
使うことはなさそうですが。