C#ATIA

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

言語別の文字を得る

こちらが上手く行かないのでさっさと諦めました。
言語別の文字のファイル - C#ATIA

一応、フォーラムには質問しておきましたが、答えが得られるか
分からないですし、待ってられないです。


多言語対応したいのですが、今までは日本語・英語ぐらいしか
やっていませんでした。文章では無く、単なる単語が欲しいだけです。
この辺のです。

Fusion360はこれだけの言語に対応しているので
全部やります。

過去に対応言語が増えたことあったけど・・・
まぁいいや。

チマチマ調べるのは嫌です。嫌いなんです。
そこをスプリクトで処理したいんです。
先程のデータをまず作ります。
テキストコマンドの中に、ブラウザツリーの表示されている
文字を出力するコマンドがある事を知っていました。

Toolkit.browser

又、言語設定はAPIのこちらのメソッドがで判断出来ます。
Fusion 360 Help
しかし得られる値がこちらのvalue(要は数字)なんです。
Fusion 360 Help

ファイルに出力させたいので、ちょっと不便です。

これもテキストコマンドのこちらで文字として取得できます。

Options.GetUserLanguage

例えば、日本語の場合は "ja-JP" で返してくれます。

結局、雑なこんなスクリプトを作りました。

# Fusion360API Python script

import traceback
import adsk.fusion
import adsk.core

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

        proj: adsk.core.DataProject = None
        for dp in app.data.dataProjects.asArray():
            if dp.name == 'assy_test':
                proj = dp
                break
        if not proj:
            return

        file: adsk.core.DataFile = None
        for df in proj.rootFolder.dataFiles.asArray():
            if df.name == 'assy_inner':
                file = df
                break
        if not file:
            return

        app.documents.open(
            file,
            True
        )

        lang = app.executeTextCommand(u'Options.GetUserLanguage')
        msg = lang
        msg += '\n'
        msg += app.executeTextCommand(u'Toolkit.browser')

        path = r'C:\temp\{}.txt'.format(lang)

        with open(path, mode='w', encoding='utf-8') as f:
            f.write(msg)

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

これを実行すると、該当するf3dファイルを開きブラウザツリーの
文字をファイルに書き出します。書き出すファイル名は<言語名>.txt です。

後は、言語を切り替えスクリプトを実行するだけです。完璧。
見慣れない言語でも、スプリクト実行するだけなので、
アイコンやメニューの位置で何とかなります!!

後は "show/hide" に該当する各言語を調べるだけです。
・・・DeepLって韓国語無いんだ。ウケる、イヤ困る。