C#ATIA

↑タイトル詐欺 主にFusion360API 偶にCATIA V5 VBA(絶賛ネタ切れ中)

TSMファイル5

こちらの続きです。
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ファイルを利用すれば
スカルプトの状態を他ファイルにコピーすることが可能です。
(コピー後もスカルプトで変更が可能な状態でコピー出来ます)

使い道無いな…。