こちらの件ですが、他の方はあまり必要とされる方が少ないと思いますが、
共有しておきます。
以下のコードを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を起動する際のショートカットのプロパティを開き"リンク先" の
ファイルパスを上記部分にコピペして頂くのが確実です。

又、2行目は起動時に "基本設定" が記録されている "NMachineSpecificOptions.xml" の
ファイルパスに書き換える必要があります。
Const XML_PATH = "@xmlpath"
↓
Const XML_PATH = "C:\Users\<PCアカウント名>\AppData\Roaming\Autodesk\Neutron Platform\Options\NMachineSpecificOptions.xml"
この2行を書き換えた上で、vbsファイルをダブルクリックすると、次の味気ない
ダイアログが表示されます。任意の言語ボタンをクリックしてください。

上記のvbsファイルを作成するのが面倒な場合は、こちらのアドインの
https://github.com/kantoku-code/Fusion360_Developers_Small_ToolKit
こちらのボタンを押す事で、修正なしで使用出来るvbsファイルを作り出します。

念の為、安全を考慮し"基本設定"の保存ファイル(NMachineSpecificOptions.xml)を
書き換えていますが、次の手順で処理を行っています。
・連続起動を防止するための "block.txt" ファイルを作成。
・バックアップ用にxmlファイルをコピー。
・xmlファイルを書き換え。
・Fusion360を起動。
・5秒後、書き換えたxmlファイルを削除。
・バックアップしたxmlファイルを元のファイル名にリネーム。
・block.txt" ファイルを削除。
簡単な表現を行うと、言語を指定して起動後は"基本設定"の保存ファイルは
元の状態に戻しています。(安全のために)
個人的には、1個目は通常通りFusion360を起動し、異なる言語で起動したい
タイミングにvbsファイルで起動させるような使い方を推奨です。