こちら想定していなかったです。
Solved: How to tell if a component is a parametric design, or not? - Autodesk Community
恐らくEkins氏も想定していなかったのではないかと思います。
通常、コンポーネントが存在していても、1個のドキュメントで作成されている
場合はパラメトリックかダイレクトのどちらかになります。
しかし、外部のドキュメントをコンポーネントとしている場合はどうなのか?
すら知りませんでした。
試しに上記のデータを用意しました。
赤印はパラメトリックで作成し、緑印はダイレクトで作成しています。
要は混在させています。
GUIで操作する、インプレイス機能(個人ライセンス不可)でそれぞれの
ドキュメントの編集に入ると、パラメトリックはパラメトリックで
ダイレクトはダイレクトで操作する事になります。・・・知らなかった。
APIでも確認したいのですが、フォーラムのコードがちょっと独特なので、
この様に書き換えました。
# Fusion360API Python script import adsk.core, adsk.fusion, traceback def run(context): ui = adsk.core.UserInterface.cast(None) try: app :adsk.fusion.Application = adsk.core.Application.get() ui = app.userInterface des :adsk.fusion.Design = app.activeProduct for comp in des.allComponents: if comp.parentDesign.designType == adsk.fusion.DesignTypes.ParametricDesignType: desType = 'Parametric' else: desType = 'Direct' print(f'{comp.name}:{desType}') except: if ui: ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
結果はこちら
Parametric v3:Parametric Direct v3:Direct assy v2:Parametric
確かにそれぞれのコンポーネント毎に正しいタイプを返してきます。
(そして何故、Treeと逆の順番に出力されるのか?)
Designオブジェクトは、確かにドキュメント毎に持っているんですね。
・・・混在しているデータを使用されるとエラーになりそうなアドインを
いっぱい作っている気がするw