C#ATIA

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

Fusion360DevTools

Fusion360DevToolsと言う開発者向けの便利なツールがgithub
公開されているのです。
GitHub - AutodeskFusion360/Fusion360DevTools: A collection of utilities to assist in developing Fusion 360 Add-ins

便利なんですが、中には使った後にFusion360がクラッシュするコマンドが
ありました。

ちょっとドキュメントの属性を利用したいのでテストしているのですが、
属性はユーザーが見ることが出来ない事がありがたい反面、開発中に
確認出来ないと言うもどかしさがあるのですが、上記のアドインの
こちらが利用出来て便利なはずなんです。
f:id:kandennti:20220407164655p:plain

ところが全く無反応・・・、Update前は動いていたような記憶は
あるのですがダメです。

確認出来ないと話にならないので作ります・・・作りました。

アクティブドキュメントの属性をテキストコマンドウィンドウに全てダンプ。

# Dump Document Attributes
# Fusion360API Python script

import traceback
import adsk.cam
import adsk.fusion
import adsk.core
import adsk.drawing

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

        doc: adsk.fusion.FusionDocument = app.activeDocument
        attrs: adsk.core.Attributes = doc.attributes

        app.log('TextCommandWindow.Clear')
        app.log('-- Dump Document Attributes --')
        attr: adsk.core.Attribute
        for gpName in attrs.groupNames:
            app.log(f'GroupName : {gpName}')
            for attr in attrs.itemsByGroup(gpName):
                app.log(f'  {attr.name}:{attr.value}')

作る事がAPIでしか出来ないのですが、削除もAPIからしか出来ません。
ドキュメントの属性を全部削除するスクリプト

# Remove Document Attributes
# Fusion360API Python script

import traceback
import adsk.cam
import adsk.fusion
import adsk.core
import adsk.drawing

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

        doc: adsk.fusion.FusionDocument = app.activeDocument
        attrs: adsk.core.Attributes = doc.attributes

        app.log('TextCommandWindow.Clear')
        app.log('-- Remove Document Attributes --')
        app.log(f'before count:{attrs.count}')
        attr: adsk.core.Attribute
        for gpName in attrs.groupNames:
            app.log(f'GroupName : {gpName}')
            for attr in attrs.itemsByGroup(gpName):
                attr.deleteMe()
        app.log(f'after count:{attrs.count}')

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

中々進まない・・・。