C#ATIA

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

工具の設定を変更する

こちらの最後に記載した内容の続きです。
アクティブなドキュメントに工具を作る - C#ATIA

Toolオブジェクトの設定を変更する際、パラメータから行うと
変更されずにインポートする前のjsonを書き換えてから対応していました。

で、分かりました。

ツールライブラリ側のUpdateメソッドを利用しないと、設定が
変わらないです。
Fusion 360 Help
絶対に忘れそう・・・。
FeedBackに記載しましたが、ドキュメントの説明書きが "updateFeedAndSpeed"
だと送りと回転を更新するのかと思っちゃいますよ。


こちらは、事前にツールを一本以上作成してから実行する必要が
有りますが、最初の工具のTコードを+1するだけのスクリプトです。

# Fusion360API Python script

import traceback
import adsk.core as core
import adsk.cam as cam

def run(context):
    ui: core.UserInterface = None
    try:
        app: core.Application = core.Application.get()
        ui = app.userInterface

        # Active Doc ToolLibrary
        activeToolLib: cam.DocumentToolLibrary = get_cam_product().documentToolLibrary
        if activeToolLib.count < 1:
            return

        # get tool
        tool: cam.Tool = activeToolLib[0]

        # get tool_number Parameter
        prm: cam.CAMParameter = tool.parameters.itemByName('tool_number')

        # change tool_number
        prm.value.value += 1

        # ToolLibrary Update
        # https://help.autodesk.com/view/fusion360/ENU/?guid=GUID-34200AFB-2CC9-463D-8BCC-502F57D1E81B
        activeToolLib.update(tool, True)

    except:
        if ui:
            ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))


def get_cam_product() -> cam.CAM:
    '''
    CAMの取得
    '''
    app: core.Application = core.Application.get()
    activete_cam_env()

    return app.activeProduct


def activete_cam_env() -> None:
    '''
    CAMアクティブ
    '''
    app: core.Application = core.Application.get()
    ui: core.UserInterface = app.userInterface

    camWS: core.Workspace = ui.workspaces.itemById('CAMEnvironment') 
    camWS.activate()

いやー出来るな、自動化。