C#ATIA

↑タイトル詐欺 主にCATIA V5 の VBA(最近はPMillマクロとFusion360APIが多い)

TSMファイル1

こちらにチラッと記載したので、簡単なテストをしてみました。
解決済み: Re: tsmファイルのデータ形式について - Autodesk Community

TSMファイルはFusion360のスカルプトのフォーマットの様です。
サーフェス・ソリッドになったものはBrepになるのかな?)

HelpによるとACIS(SAT)に似たフォーマットの様です。
確かに歴史的背景から、そうなるのだろうと思います。
ShapeManager - C#ATIA



まず、スカルプトでボディを1個以上作成し「フォームを終了」でデザインに
戻ります。(戻らずスプリクトを実行するとエラーになります)
この状態で以下のスプリクトを実行すると、無事TSMファイルがエクスポート
出来ました。

#Fusion Python 
#TSM Export Test
import adsk.core, adsk.fusion, 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

        forms = root.features.formFeatures
        fFeat = forms.item(0)
        
        tBodies = fFeat.tSplineBodies
        tBody = tBodies.item(0)
        
        tBody.saveAsTSMFile(path)
        
        ui.messageBox('done:\n{}'.format(tBody.name))
        
    except:
        if ui:
            ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))

このコードでは、恐らくエクスポート出来るのは最初のスカルプトのボディ
1個だけです。


続いてインポートを試してみたのですが、上手く行きません。
取りあえず作成したのは以下のコードです。

#Fusion Python 
#TSM Import Test
import adsk.core, adsk.fusion, 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

        forms = root.features.formFeatures
        fFeat = forms.item(0)
        
        tBodies = fFeat.tSplineBodies

        tBody = tBodies.addByTSMFile(path)
        
        ui.messageBox('done:\n{}'.format(tBody.name))
        
    except:
        if ui:
            ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))

何故? 間違っている気がしないのですが…。