こちらの続きです。
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つのファイルしか
出来ませんでした。
以後は「.vscode」フォルダが出来るようになってます。
フォルダ内のファイルは、スプリクト実行時には何の影響も無く開発時に
必要なファイルだけ入っています。
中身はこんな感じです。
それぞれのファイルの役割は、説明できる程の知識が無いため割愛します。
やり方によっては「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の基本設定のこちらの値が影響するはずです。
「settings.json」「launch.json」については変更・削除しても
再度Fusion360からVSCode(編集)を呼び出す度に元に戻されます。
素人感覚でも、起動する際何処からかコピーしている事は感じます。
探したところ、こちらのパス内のファイルが該当しそうです。
C:\Users\[ユーザー名]AppData\Roaming\Autodesk\Autodesk Fusion 360\API\Python\vscode
「pre-run.py」って何のファイルでしょうかね?
何らかの理由で毎回「settings.json」「launch.json」を変更しなければ
ならない場合は、こちらのファイルを編集する必要が有りそうです。
(但し、先程のportを変更した際も、こちらが書き換えられているっぽいです。)
これらの手法は、こちらのトピを元にAutodeskが採用したのだろうと
思われます。
Solved: Python environment to use another editor - Autodesk Community
機能するけど、使い勝手は悪いのが本音ですね。