C#ATIA

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

Fusion360 のPython4

こちらの続きです。
Fusion360 のPython3 - C#ATIA

PyCharmでも上手くいかないので、VSCodeで再度模索中。
丁度、似たような現象が出ていたので・・・
No module named 'adsk' problem - Python script for Autodesk Fusion 360 - Autodesk Community

会社では最初からWin10ProのPCで、自宅ではWin8.1→Win10Homeなのですが
自宅側だけ

import adsk.core, adsk.fusion, adsk.cam, traceback

部分の「adsk」が読み込めない警告が出っぱなしになります。
何故なのかが良くわかっていないのですが、モジュールのインポートする際のパスが
通っていない事は確かです。(PCのログインIDが2バイト文字だからかも)


関係するかもしれないため、Ver2.0.6440以前と以後でAPIでの違いで
わかっている範囲で書き残しておきます。

以前は新規でスプリクトを作成すると、こんな感じで2つのファイルしか
出来ませんでした。
f:id:kandennti:20191002103735p:plain
以後は「.vscode」フォルダが出来るようになってます。
f:id:kandennti:20191002103745p:plain
フォルダ内のファイルは、スプリクト実行時には何の影響も無く開発時に
必要なファイルだけ入っています。

中身はこんな感じです。
f:id:kandennti:20191002103754p:plain
それぞれのファイルの役割は、説明できる程の知識が無いため割愛します。
やり方によっては「launch.json」しか出来ない場合もありますが、
基本的には2つ出来るはずです。

「settings.json」の中身はこんな感じでした。

{
	"python.autoComplete.extraPaths":	["C:/Users/[ユーザー名]/AppData/Roaming/Autodesk/Autodesk Fusion 360/API/Python/defs"],
	"python.pythonPath":	"C:/Users/[ユーザー名]/AppData/Local/Autodesk/webdeploy/production/f0e2e428a92efb9c5ee46c0f9dc446a06adaa1d2/Python/python.exe",
	"python.linting.pylintEnabled":	false
}

"python.autoComplete.extraPaths" で指定されているパスに
「adsk.xxx」のモジュールが有ります。最初の記述はこれが上手く
認識出来ない為の影響だと思われます。(恐らくユーザー名が悪いような…)


続いて「launch.json」の中身はこんな感じでした。

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Attach",
            "type": "python",
            "request": "attach",
            "localRoot": "${workspaceRoot}",
            "remoteRoot": "${workspaceRoot}",
            "port": 9000,
            "host": "localhost"
        }
    ]
}

このファイルのおかげで、VSCodeでのデバッグが実現出来ていると思われます。
"port"については、Fusion360の基本設定のこちらの値が影響するはずです。
f:id:kandennti:20191002103806p:plain

「settings.json」「launch.json」については変更・削除しても
再度Fusion360からVSCode(編集)を呼び出す度に元に戻されます。
素人感覚でも、起動する際何処からかコピーしている事は感じます。

探したところ、こちらのパス内のファイルが該当しそうです。

C:\Users\[ユーザー名]AppData\Roaming\Autodesk\Autodesk Fusion 360\API\Python\vscode

f:id:kandennti:20191002103817p:plain
「pre-run.py」って何のファイルでしょうかね?
何らかの理由で毎回「settings.json」「launch.json」を変更しなければ
ならない場合は、こちらのファイルを編集する必要が有りそうです。
(但し、先程のportを変更した際も、こちらが書き換えられているっぽいです。)


これらの手法は、こちらのトピを元にAutodeskが採用したのだろうと
思われます。
Solved: Python environment to use another editor - Autodesk Community

機能するけど、使い勝手は悪いのが本音ですね。