fusion360でlogicoolのゲーミングソフトウェアのリンクが切れるのでスクリプト書いた

なぜに必要?

Fusion360は結構頻繁にアプデが行われます。
それ自体はぜんぜんOKなのですが、それのせいで.exeファイルの場所が変わってしまいます。
私はlogicoolのG602のマウスと、ボタン機能をカスタマイズするlogicoolゲーミングソフトウェアを使っており、 それでFusion用にマウスのボタンをカスタマイズしているのですが、.exeの場所が変わると機能しなくなってしまいます。

アプデが入るたびに手動でFusionのexeの場所を探して、再設定していたのですが、それがあまりにも面倒くさかったので、スクリプト組みました。

使い方

このプログラムはWindowsでしか機能しないので悪しからず。

↓プログラム github.com

リンク先のリポジトリを以下のフォルダにクローンします。

Windows – %appdata%\Autodesk\Autodesk Fusion 360\API\Scripts\

よくわからない人は、リンク先右上のClone or downloadから、ZIPをダウンロードして、上記のフォルダに解凍してください。

そのあと、Fusion360を開いて、 ツール→アドイン→マイスクリプトの+→解凍したフォルダを選択→UpdateFusionPathForLogicoolの項目が出てくるので実行

実行したらこんな感じのウィンドウが出ます

中身

logicoolのプロファイルファイルは
C:\Users\*\AppData\Local\Logitech\Logitech Gaming Software\profiles\*.xml にあります。

どのexeにリンクさせるかを記しているのは、xmlファイル内の <profiles><profile><target>タグのpath属性で定められています。
なのでそれを今のFusion360のリンクに書き換えているだけです。

xmlを操作できるpythonの標準ライブラリであるxml.etree.ElementTreeを使用して完結させたかったのですが、ネームスペースが多用されている今回の例では、結構面倒臭かったので、
path属性の値を取得するところまではElementTreeを使って、値の書き換えはまんま文字列置換をしました。

なので、ちょっと環境が変わったりすると不具合が発生しやすい気がします。 lxmlのライブラリを使えばネームスペースの処理もいい感じにできるらしいのですが、標準ライブラリだけで完結させたかったので、今回はこんな感じです。
動いたのでよしとします

不具合発見した方はgithubのissueかブログのコメントに気軽に書き込んでください。