コミュニティ
Fusion - 日本語
製品テクニックや情報を共有、質問、解答したり、情報を検索など使い方は様々です。お役立てください。
キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

言語を指定して起動する方法

10件の返信10
解決済み
返信
メッセージ1/11
kandennti
635 件の閲覧回数, 10 件の返信

言語を指定して起動する方法

無茶なお話だとは重々承知しているのですが、ご存知の方がいらっしゃいましたらお願いします。

 

当方、頻繁に日本語・英語を切り替えてFusion360を起動させています。

言語の切り替えはこちらで行えることは周知しております。

1.png

 

こちらで言語を切り替えた際、再起動となるのですが(ダイアログで簡単に出来るようになっているのは

ありがたいです)、再起動が結構面倒です。

又、前回どちらの言語で終了させているのかが、起動してみるまで分からない状態です。

(英語で起動したい!!と言う場面がしばしばあります)

 

一番理想的なのは、各言語での起動出来るようなショートカットが作成出来ると助かるのですが

何か方法は無いでしょうか?

 

個人的には、この ”基本設定” がPC内の何処かにファイルとして書き出されているような気が

しております。(予想ではxmlファイル)

このファイルをご存知の方はいらっしゃらないでしょうか?

 

※以下は、当方が試した結果から得られた感触です。

・アカウントAでFusion360を起動。言語を日本語->英語に変更し、再起動を行わない。

 ↓

・サインアウトし、アカウントBでサインイン。画面の表示は日本語のままで、

 基本設定は英語になっている。

 ↓

・Fusion360を終了。

 ↓

・Fusion360を起動。英語に切り替わっている。

 

又、

・会社のPCで日本語で終了。

 ↓

・自宅のPCで起動すると英語。(前回、英語で終了させている場合です)

 

 

上記から、

・言語設定(や他の設定)については、アカウント紐付いていない。

 (ローカルの何処かに記録されている・・・はず)

 

・サインアウト・サインインはFusion360を再起動している訳では無い。

 (これは以前から感じてます)

  ->ローカルのアカウントに紐付いたフォルダ内では無く、

   共通で利用されているフォルダ内にファイルがあるのでは?

タグ(2)
10件の返信10
メッセージ2/11
Bunga777
次のアカウントへの返信: kandennti

あはは、 @kandennti さんも私と同じ悩みを抱えていて笑った(^_^;)

理由は本場の掲示板との兼ね合いですよね、もちろん。

 

で、、、私は再起動するのが嫌なので、日本語を立ち上げた状態で設定から英語にしたら、そのまま再起動せずに新たに新しいFusion360を立ち上げて日本語表示と英語表示を2重起動してしまっています。

 

ちょっと重くなるかなぁ……という印象ですが、再起動を繰り返すよりも楽だなと思って、海外の掲示板への投稿をする時には2重起動させてしまっています。

 

@kandennti さんがおっしゃるように、再起動なしでどうにかならない?って思う今日このごろだったりします。

メッセージ3/11
kandennti
次のアカウントへの返信: Bunga777

@Bunga777 さん ありがとうございます。

 

>Fusion360を立ち上げて日本語表示と英語表示を2重起動してしまっています。

あぁこれは思い付きませんでした。確かに最悪これも有りですね。

 

他のCADの場合ですが、設定ファイルがあるのですが、実際の設定値はメモリ上にあります。

起動時にファイルを読み込み、終了時にメモリ上の設定をファイルに書き出しています。

その固定観念があったのですが、上記の動作を考えるとFusion360の場合は設定値を

変更した際にファイルに書き出していますね。

 

>再起動なしでどうにかならない?って思う今日このごろだったりします。

例えばコマンドを実行する際のダイアログを表示させる直前に、何度も言語毎のメッセージ

ファイルを読み込むのは、動作が遅くなる可能性が有るので、最初に読み込んでしまうのでは

無いのかかな? と感じているので仕方ない部分のような・・・。

 

PowerMill(Autodesk社)は、起動中に言語を切り替えると、不完全な部分はあるのですが、

メニュー類も全て設定言語に切り替わります。(PowerMillすごい)

 

 

”言語設定を頻繁に切り替える” と言う行為が、あまり一般的では無い操作なので、

海外サイトでも情報が見つからないんですよね・・・。

メッセージ4/11
kandennti
次のアカウントへの返信: kandennti

比較的良く出てくる、こちらのオプションファイルですが、

C:\Users\<PCアカウント>\AppData\Roaming\Autodesk\Neutron Platform\Options\NMachineSpecificOptions.xml

ボリュームが大きいので "language" とか "lang" で検索しても、それらしい項目は

見当たらなかったので、このファイルでは無いと感じています。

(見落としの可能性は否定できませんが)

メッセージ5/11
kandennti
次のアカウントへの返信: kandennti

言語の設定については、上記の "NMachineSpecificOptions.xml" のファイル内に

記載されている事が分かりました。

 

但し、Fusion360が日本版(と言うものがあるのかどうか定かではないのですが)で

日本語設定の場合は、設定値をxml内には記載しないようです。

恐らく、デフォルト値の場合は記載しない と言う仕様なのだろうと思われます。

 

他にも少しわかった事があるで、ある程度まとまり、それなりのものが出来次第

再度記載します。

メッセージ6/11
Bunga777
次のアカウントへの返信: kandennti

@kandennti さん

 

なんかやってくれそうな気配にワクワクしますよ(^o^)

メッセージ7/11
kandennti
次のアカウントへの返信: Bunga777

あのxmlファイルのここに言語の設定が有りました。
1.png
ここを書き換え、Fusion360を起動すると該当する言語で起動します。
きちっと調べていないのですが、恐らくこんな値です。
"de-DE":"ドイツ語"
"en-US":"英語"
"es-ES":"スペイン語"
"fr-FR":"フランス語"
"it-IT":"イタリア語"
"ja-JP":"日本語"
"ko-KR":"韓国語"
"zh-CN":"中国語"
"pl-PL":"ポーランド"
"pt-BR":"ポルトガル_ブラジル"
"tr-TR":"トルコ"
但し、日本語版で日本語設定の場合は34行目自体が記載されません。
(恐らく、空白行は全てデフォルト設定を意味しているのだと思います)
 
実はAPIで基本設定の言語部分は変更できます。
こちらの設定を切り替えればOKです。
 
APIで言語を切り替え@Bunga777 さんが教えてくれた、もう一つFusion360を起動させる方法を
手動で行うと、残念ながら言語が切り替わらずに起動しました。
恐らく、基本設定のダイアログの"OK"を押さないとファイルに書き込まないのだろうと
思われます。(あと、Fusion360が終了時にも書き込んでいるような気はしてます)

1.png

極端な話、アンマッチを避ける為に言語をAPIで切り替え、xmlを直接書き換えれば
この部分はクリア出来そうです。
 
xmlを書き換え後、APIから新たにFusion360を起動させれば良いと思いこんな感じので
実行させてみました。(Windowsのみ有効です)
subprocess.run(exeファイルパス)
新たなFusion360は起動しますが、残念なことにスクリプトを実行した側のFusion360が
無反応となりタスクを止めるしか方法が有りませんでした。残念。
 
となると、xmlを書き換えつつexeファイルを実行出来、インストール不要な言語で
自分が書けそうなのはvbscriptぐらいなので、Fusion360からvbscriptをデスクトップに
書き出すスクリプトか何かを作ろうかと・・・。
で、悩んでます。
メッセージ8/11
kandennti
次のアカウントへの返信: kandennti

こちらの件ですが、他の方はあまり必要とされる方が少ないと思いますが、

共有しておきます。

 

以下のコードをVBScriptファイル(拡張子.vbs)として保存してください。

その為、Winのみとなるはずです。文字コードは"Shift-JIS"です。

Const FUSION_PATH = "@fusionpath"
Const XML_PATH = "@xmlpath"
Const SLEEP_TIME = 5000
Const BLOCK_NAME = "block.txt"

call main()

Sub main()

    Dim blockPath
    blockPath = getBlockPath()

    Dim msg
    msg = canExec(blockPath)
    if len(msg) > 0 Then
        msgbox msg
        exit Sub
    end if

    msg = _
        "言語を指定してFusion360を起動します。" & vbCrLf & _
        "[はい] : 日本語" & vbCrLf & _
        "[いいえ] : 英語" & vbCrLf & _
        "[キャンセル] : 中止"

    lang = ""
    Select Case MsgBox(msg, vbYesNoCancel)
        Case vbYes
            lang = "ja-JP"
        Case vbNo
            lang = "en-US"
        Case Else
            Exit Sub
    End Select

    createBlockFile blockPath

    startFusion lang, blockPath

End Sub

Sub startFusion(lang, blockPath)

    'バックアップ
    Dim backUpPath
    backUpPath = getUniquePath(XML_PATH)

    Dim fso
    Set fso = getFso()

    fso.copyFile XML_PATH, backUpPath

    'xml書き換え
    Set dom = get_dom(XML_PATH)
    If dom Is Nothing Then
        Exit Sub
    End If

    Set nodeRoot = dom.DocumentElement
    Set BootstrapOptionsGroup = getElementByTagName(nodeRoot, "BootstrapOptionsGroup")
    Set userLanguageOptionId = getElementByTagName(BootstrapOptionsGroup, "userLanguageOptionId")
    If userLanguageOptionId Is Nothing Then
        Set userLanguageOptionId = BootstrapOptionsGroup.appendChild(createNode(dom))
    End If

    Set langValue = getAttributeByName(userLanguageOptionId, "Value")

    langValue.Value = lang

    dom.Save XML_PATH

    '起動
    Dim ws
    Set ws = CreateObject("WScript.Shell")
    ws.Run FUSION_PATH, vbNormalFocus, False

    '削除,復旧
    WScript.Sleep SLEEP_TIME
    removeFile blockPath

    fso.DeleteFile XML_PATH
    renameFile backUpPath, XML_PATH

End Sub


Function getBlockPath()

    Dim blockAry
    blockAry = splitPathName(XML_PATH)
    ary = split(BLOCK_NAME, ".")
    blockAry(1) = ary(0)
    blockAry(2) = ary(1)

    getBlockPath = joinPathName(blockAry)

end Function


Function canExec(blockPath)

    Dim fso
    Set fso = getFso()

    Dim msg
    msg = ""

    If Not fso.FileExists(FUSION_PATH) Then
        msg = "[FusionLauncher.exe]のパスが間違っています。" & vbcrlf
    End If

    If Not fso.FileExists(XML_PATH) Then
        msg = msg & "[NMachineSpecificOptions.xml]のパスが間違っています。"
    End If

    If fso.FileExists(blockPath) Then
        msg = msg & "他のプロセスが実行中です。もう少し時間を置いて実行してください。"
    End If

    canExec = msg

End Function


Function createBlockFile(blockPath)

    Dim fso
    Set fso = getFso()

    Dim msg
    msg = "本ファイルに心当たりが無ければ、削除して大丈夫です。"

    With fso.CreateTextFile(blockPath)
        .WriteLine msg
        .Close
    End With

End Function


Function removeFile(path)

    Dim fso
    Set fso = getFso()

    fso.DeleteFile path

End Function


Function renameFile(target, result)

    Dim pathAry
    pathAry = splitPathName(result)

    Dim newName
    newName = pathAry(1) & "." & pathAry(2)

    Dim fso
    Set fso = getFso()

    fso.GetFile(target).name = newName

End Function


Function getUniquePath(path)

    Dim pathAry
    pathAry = splitPathName(path)

    Dim fso
    Set fso = getFso()

    Dim tmpPath
    tmpPath = joinPathName(pathAry)
    If Not fso.FileExists(tmpPath) Then
        getUniquePath = tmpPath
        Exit Function
    End If
    
    Dim baseName
    baseName = pathAry(1)

    Dim count
    count = 1
    Do
        pathAry(1) = baseName & "-" & count
        tmpPath = joinPathName(pathAry)
        If Not fso.FileExists(tmpPath) Then
            getUniquePath = tmpPath
            Exit Function
        End If
        count = count + 1
    Loop

End Function


Function joinPathName(ary)

    joinPathName = ary(0) + "\" + ary(1) + "." + ary(2)

End Function


Function splitPathName(path)

    Dim ary(2)
    With getFso
        ary(0) = .GetParentFolderName(path)
        ary(1) = .GetBaseName(path)
        ary(2) = .GetExtensionName(path)
    End With
    splitPathName = ary

End Function


Function getFso()

    Set getFso = CreateObject("Scripting.FileSystemObject")

End Function


Function createNode(dom)

    Dim node
    Set node = dom.createElement("userLanguageOptionId")
    node.appendChild dom.createTextNode("test")
    node.setAttribute "ToolTip", "ユーザ インタフェースの表示に使用する言語です。"
    node.setAttribute "UserName", "ユーザ言語"
    node.setAttribute "Value", "en-US"

    Set createNode = node

End Function


Function getAttributeByName(node, name)

    Set getAttributeByName = Nothing

    Dim attr
    For Each attr In node.Attributes
        If attr.baseName = name Then
            Set getAttributeByName = attr
            Exit Function
        End If
    Next

End Function


Function getElementByTagName(node, name)

    Set getElementByTagName = Nothing

    Dim lst
    Set lst = node.getElementsByTagName(name)
    If lst.Length < 1 Then Exit Function

    Set getElementByTagName = lst.Item(0)

End Function


Function get_dom(path)

    Dim dom
    Set dom = CreateObject("Msxml2.DOMDocument")

    Dim res
    res = dom.Load(path)

    If res Then
        Set get_dom = dom
    Else
        Set get_dom = Nothing
    End If

End Function

但しこちらはこのままでは実行出来ない為、書き換えが必要となります。

 

1行目については、Fusion360を起動するための "FusionLauncher.exe" のファイルパス

となります。

Const FUSION_PATH = "@fusionpath"
 ↓
Const FUSION_PATH = "C:\Users\<PCアカウント名>\AppData\Local\Autodesk\webdeploy\production\6a0c9611291d45bb9226980209917c3d\FusionLauncher.exe"

Fusion360を起動する際のショートカットのプロパティを開き"リンク先" の

ファイルパスを上記部分にコピペして頂くのが確実です。

1.png

 

又、2行目は起動時に "基本設定" が記録されている "NMachineSpecificOptions.xml" の

ファイルパスに書き換える必要があります。

 

Const XML_PATH = "@xmlpath"
 ↓
Const XML_PATH = "C:\Users\<PCアカウント名>\AppData\Roaming\Autodesk\Neutron Platform\Options\NMachineSpecificOptions.xml"

 

この2行を書き換えた上で、vbsファイルをダブルクリックすると、次の味気ない

ダイアログが表示されます。任意の言語ボタンをクリックしてください。

1.png

 

 

 上記のvbsファイルを作成するのが面倒な場合は、こちらのアドインの

https://github.com/kantoku-code/Fusion360_Developers_Small_ToolKit 

こちらのボタンを押す事で、修正なしで使用出来るvbsファイルを作り出します。

1.png

 

 

念の為、安全を考慮し"基本設定"の保存ファイル(NMachineSpecificOptions.xml)を

書き換えていますが、次の手順で処理を行っています。

・連続起動を防止するための "block.txt" ファイルを作成。

・バックアップ用にxmlファイルをコピー。

・xmlファイルを書き換え。

・Fusion360を起動。

・5秒後、書き換えたxmlファイルを削除。

・バックアップしたxmlファイルを元のファイル名にリネーム。

・block.txt" ファイルを削除。

簡単な表現を行うと、言語を指定して起動後は"基本設定"の保存ファイルは

元の状態に戻しています。(安全のために)

 

個人的には、1個目は通常通りFusion360を起動し、異なる言語で起動したい

タイミングにvbsファイルで起動させるような使い方を推奨です。

メッセージ9/11
Bunga777
次のアカウントへの返信: kandennti

おおお、、、ちょっとした気遣いで凄く便利になるやつ!ありがとうございます。

早速使ってみたいと思います(^o^)

メッセージ10/11
Bunga777
次のアカウントへの返信: kandennti

プラグインからVBScriptを生成して起動するところまで確認しました。

無事起動しました。やはり楽!!ありがとうございます。

メッセージ11/11
kandennti
次のアカウントへの返信: Bunga777

@Bunga777 さん

 

UpdateするとVBScriptを修正する必要があるかもしれません。

但し、"FusionLauncher.exe" が入っているフォルダがバージョンの

フォルダでは無いため、そのままでもイケるのかも・・・。

 

Updateされないとちょっと分かりませんね。

お探しの情報が見つからないときは、コミュニティで質問しましょう。困っている人がいたら、情報を教えてあげましょう。

フォーラムに投稿  

State of Design & Make 2024

EE RESOURCES