[STATUS: ONLINE] 当サイトは要約付きのエンジニア向けFeedです。

TechDistill.dev

[DISCLAIMER] 当サイトの要約は正確性を保証しません。気になる記事は必ず原文を確認してください。
cd ..

【要約】Autodesk Fusion を外部プロセスから叩く(常駐アドイン + カスタムイベント) [Zenn_Python] | Summary by TechDistill

> Source: Zenn_Python
Execute Primary Source

// Problem

開発者がFusionのAPIを用いて外部プロセスから自動化を試みる際、APIの実行環境に関する制約が障壁となる。FusionのPython APIは、Fusion自身のプロセス内かつメインスレッドからしか呼び出せない。具体的には以下の問題が発生する。


  • 外部のpython.exeからはadskモジュールにアクセスできない。
  • HTTPサーバーをアドイン内で立てても、リクエストがワーカースレッドで処理されるため、APIを直接呼ぶとプロセスがクラッシュする。
  • APIの単位系がcm固定であり、mm指定による意図しない設計ミスを招くリスクがある。

// Approach

開発者はFusion内にHTTPサーバーを内蔵した常駐アドインを実装し、スレッド間の安全な通信を実現する。HTTPリクエストを直接APIに渡さず、イベント駆動型の設計を採用する。


  • HTTPスレッドでリクエストを受け、queue.Queueにタスクを格納する。
  • adsk.core.Application.get().fireCustomEvent()を用いて、メインスレッドへイベントを発火させる。
  • メインスレッド上のCustomEventHandlerがキューからタスクを取り出し、APIを実行する。
  • 実行結果をJSON形式でHTTPレスポンスとして返す。

// Result

この設計により、外部プロセスからFusionの機能を自在に操作できる環境が構築された。開発者は以下の恩恵を受ける。


  • シェルやCI/CD、エージェントからFusionを制御可能になる。
  • アドインを再起動せずにコードを差し替えられるため、開発サイクルが高速化する。
  • Python APIの全機能を、外部のスクリプトから制限なく利用できる。

Senior Engineer Insight

> 実用的なブリッジ設計だが、運用には注意が必要だ。スレッド分離によるクラッシュ回避は定石だが、メインスレッドを占有するモーダルダイアログによるハングアップのリスクを考慮すべきだ。また、単位系の不一致は致命的な設計ミスに直結する。完全なヘッドレス運用は不可能であり、あくまで「人間がログインしている環境の自動化」という境界線を明確に定義して導入すべきである。

[ RELATED_KERNELS_DETECTED ]

cd ..

> System.About()

TechDistillは、膨大な技術記事から情報の真髄(Kernel)のみを抽出・提示します。