こちらの続きです。
TSMファイル4 - C#ATIA
まずお詫びです。サンプルコード内に記載していた拡張子が間違っていました。
さすがに恥ずかし過ぎたので修正しました。
前回試した作業スペースIDを調べましたが、こちらも必要ありませんでした。
インポートに成功したコードがこちらです。
#Fusion360 python import adsk.core, traceback def run(context): try: #インポートファイルパス path = r'C:\temp\tsm_test.tsm' #おまじない的な準備 app = adsk.core.Application.get() ui = app.userInterface product = app.activeProduct des = adsk.fusion.Design.cast(product) root = des.rootComponent #タイムライン内のformFeatureのコンテナ取得 forms = root.features.formFeatures #新たにformFeatureを作る fFeat = forms.add() #tSplineBodyのコンテナを取得 tBodies = fFeat.tSplineBodies #formFeatureの編集に入る!!! fFeat.startEdit() #tsmファイルをインポート tBody = tBodies.addByTSMFile(path) #formFeatureの編集から抜ける fFeat.finishEdit() ui.messageBox('done:\n{}'.format(tBody.name)) except: if ui: ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
スカルプトの作業スペースをアクティブにするのではなく、FormFeatureを
取得し(今回は新作しましたが、タイムライン上のものを取得しても大丈夫なはず)
編集モードに入った上でインポートすると大丈夫でした。
無理矢理メリットを探し出すとすれば、通常の場合はBrep(サーフェスやソリッド)
状態でしか他ファイルにコピーできないのですが、tsmファイルを利用すれば
スカルプトの状態を他ファイルにコピーすることが可能です。
(コピー後もスカルプトで変更が可能な状態でコピー出来ます)
使い道無いな…。