Fusion360のシートメタルなのですが、APIでフラットパターンを
作成し、DXFで出力する事は可能なのですが、削除の方法が分からなくて
困っていました。
削除する必要性は、
・一つのコンポーネント内に複数のシートメタルボディが作成可能。
・一つのコンポーネント内で作成出来るフラットパターンは一つ。
と、若干矛盾した仕様になっている為です。
最初はこちらで削除可能だと思っていました。
# Fusion360API Python script import traceback import adsk.core as core import adsk.fusion as fusion def run(context): ui = core.UserInterface.cast(None) try: app: core.Application = core.Application.get() ui = app.userInterface des: fusion.Design = app.activeProduct root: fusion.Component = des.rootComponent flat: fusion.FlatPattern = root.flatPattern if not flat: return flat.deleteMe() except: if ui: ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
これ実際に実行してみても、Tree上に残ってしまいます。
中身を見ると、確かにフラットパターンの面影はありません。
中身無いのだから、新規に作成しても良いのかな?と思い実際に
作成してみると、エラーになります。
結論から書くと、フラットパターンはTree上から削除しなければなりません。
フラットパターンはAPIとして比較的新しいので見つけにくかった
のですが、もっと上位のオブジェクトを削除する必要がありました。
# Fusion360API Python script import traceback import adsk.core as core import adsk.fusion as fusion def run(context): ui = core.UserInterface.cast(None) try: app: core.Application = core.Application.get() ui = app.userInterface des: fusion.Design = app.activeProduct root: fusion.Component = des.rootComponent flat: fusion.FlatPattern = root.flatPattern if not flat: return # flat.deleteMe() flatComp: fusion.FlatPatternComponent = flat.parentComponent flatProd: fusion.FlatPatternProduct = flatComp.parentDesign flatProd.deleteMe() except: if ui: ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
これが分かれば、事前にフラットパターンを作成しなくても全ての
シートメタルボディのフラットパターンをDXFでエクスポート出来そう。