C#ATIA

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

ユーザーパラメータの属性

中々納得出来る状態になりません。
よくよく考えたら、監視している曲線とユーザーパラメータとの
関係がはっきりすれば良いので、ドキュメントの属性に書き込むより、
ユーザーパラメータの属性に監視している曲線のentityTokenを
関連付ければ良い事に気が付きました・・・今更。

今までは、1曲線につき1属性を作っていたのですが、試した所
1属性に結構な量の曲線のentityTokenを突っ込んでも大丈夫だと
分かってきましたよ。

# Fusion360API Python script

import traceback
import adsk.fusion
import adsk.core
import json

GROUPNAME = 'kantoku'

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

        # new doc
        doc: adsk.fusion.FusionDocument = app.documents.add(
            adsk.core.DocumentTypes.FusionDesignDocumentType
        )

        # init UserParameter
        des: adsk.fusion.Design = app.activeProduct
        root: adsk.fusion.Component = des.rootComponent
        prm: adsk.fusion.UserParameter = des.userParameters.add(
            'test',
            adsk.core.ValueInput.createByReal(0),
            des.unitsManager.defaultLengthUnits,
            'hoge'
        )

        # get data
        lst = [
            root.entityToken,
            root.originConstructionPoint.entityToken,
            root.xYConstructionPlane.entityToken
        ]
        tokens = {str(idx): v for idx, v in enumerate(lst)}

        # UserParameter attribute
        prm.attributes.add(
            GROUPNAME,
            'test',
            json.dumps(tokens)
        )

        # dump
        attr: adsk.core.Attribute
        for groupName in prm.attributes.groupNames:
            group = prm.attributes.itemsByGroup(groupName)
            app.log(f'GroupName:{groupName}')
            for attr in group:
                app.log(f'  Name:{attr.name}  ValueSize:{len(attr.value.encode())}')

                dict = json.loads(attr.value)
                for key in dict.keys():
                    app.log(f'    {key}:{dict[key]}')

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

valueのサイズが2MBまでとなっていますが、全然余裕あります。
Fusion 360 Help

ほぼ作り直しになりますが、後から悩むより、今のタイミングで
大幅修正した方が正解のような気がしてます。