Ich habe das jetzt mal Quick & Dirty gemacht, ohne Screenshots. Vielleicht ist das im ersten Wurf schon ausreichend. Bitte einfach mal testen und rückmelden. Man (ich) kann das ja iterativ soweit ergänzen, bis es nachvollziehbar ist und später ggf. ins Wiki packen.
ANMERKUNG
Bitte <path> durch den entsprechenden Pfad auf dem jeweiligen System ersetzen.
INSTALLATION
1. Windows 8.1 (als meine Referenz - funktioniert natürlich auch auf anderen Systemen)
2. FreeCAD ab Version 0.19.19758 (Integration für Remote-Debugging mit VS-Code)
3. ptvsd
-> Konsole: <path>\FreeCAD\bin\Scripts
-> pip install ptvsd
Sofern pip nicht in das korrekte Verzeichnis installiert, kann das Zielverzeichnis explizit angegeben werden:
-> pip install ptvsd -t "<path>\FreeCAD\bin\Lib\site-packages"
4. pylint
-> pip install pylint
bzw. (siehe oben)
-> pip install pylint -t "<path>\FreeCAD\bin\Lib\site-packages"
KONFIGURATION VS-CODE
(exemplarisch)
'settings.json' (Konfiguration für Linting und Code-Completion)
-> File -> Open Folder (öffnen des Arbeitsverzeichnisses)
-> File -> New File
-> File -> Safe As (-> Python)
Um die 'settings.json' automatisch generieren zu lassen. Ctrl + Shift + p -> tippen: Settings -> Preferences: Open Workspace Settings
Wenn im Settings-Dialog lediglich eine Einstellung temporär getoggelt wird, wird automatisch das Unterverzeichnis '.vcode' und die Datei 'settings.json' erstellt.
Code: Select all
{
"python.linting.pylintEnabled": true,
"python.linting.enabled": true,
"python.linting.pylintPath": "<path>\\FreeCAD\\bin\\Lib\\site-packages\\bin\\pylint.exe",
"python.linting.pylintArgs": [
"--init-hook=\"import sys; sys.path.append('<path>\\FreeCAD\\Mod\\A2plus')\""
],
// "python.pythonPath": "C:\\ProgramData\\Miniconda3\\python.exe",
"python.pythonPath": "<path>\\FreeCAD\\bin\\python.exe",
"python.autoComplete.extraPaths": [
"<path>\\FreeCAD\\Mod\\A2plus",
"<path>\\FreeCAD\\lib",
"<path>\\FreeCAD\\bin"
]
}
Soll der Linter besondere Verzeichnisse berücksichtigen, müssen diese durch einen 'init-hook' wie oben gezeigt definiert werden. Hier ist exemplarisch lediglich das Modul 'A2plus' vorgesehen. Ich gehe davon aus, dass eine Beschränkung auf '<path>\\FreeCAD\\Mod' alle Module berücksichtigt (bitte testen). Gleiches gilt für die Extra-Pfade im Bereich Code-Completion.
'launch.json' (Konfiguration für Remote-Debugging)
-> Debug -> Start Debugging
-> 'Python' als Environment aussuchen
-> Remote Attach (beide Fragen mit Enter bestätigen -> Fehlermeldung -> Cancel)
-> auf der rechten Seite erscheint der Hinweis "To customize Run and Debug cerate a launch.json file" -> click
Es gibt sicher einen direkteren Weg, die 'launch.json' automatisch zu erzeugen. Wer ihn findet, bitte ersetzen / ergänzen!
Code: Select all
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: Attach",
"type": "python",
"request": "attach",
"port": 5678,
"host": "localhost",
"pathMappings": [
{
// Für die Arbeit mit Workspaces:
// "localRoot": "${workspaceFolder}",
// "remoteRoot": "${workspaceFolder}"
// Für die Arbeit mit Verzeichnissen:
"localRoot": "${fileDirname}",
"remoteRoot": "${fileDirname}"
// Für die Arbeit mit absoluten Pfadangaben:
// "localRoot": "<path>\FreeCAD\Macro\VSC_Debugging_Test",
// "remoteRoot": "<path>\FreeCAD\Macro\VSC_Debugging_Test"
}
]
}
]
}
ANWENDUNG
FreeCAD: -> Macro -> Attach to remote debugger -> VS Code -> OK
FreeCAD "friert ein" und wartet auf den Verbindungsaufbau durch den Remote-Debugger (in diesem Fall VS-Code)
VS-Code: -> Debug -> Start Debugging
Remote-Verbindung wird aufgebaut. Die aktive Remote-Verbindung wird durch einen Farbwechsel der Statusleiste unten angezeigt (blau -> orange)
Beispiel Breakpoint:
- Skript in VS-Code öffnen
- Breakpoint setzen
- Skript aus FreeCAD starten
- Skript stoppt am Breakpoint in VS-Code
Die Code-Completion kann an der jeweiligen Stelle des Cursors mit der Tastenkombination Strg + Space erzwungen werden, sofern sie nicht automatisch einsetzt.
PROBLEME
- Code-Completion zögerlich [Loading ...] (bekanntes Problem von VS-Code)
- keine Code-Code-Completion für die Module FreeCAD und FreeCADGui (Uhrsache bekannt, siehe Erläuterung Werner im Post)
- sporadischer Zeilenversatz zwischen Debugger (VS-Code) und FreeCAD bei der Codeausführung (gestern bemerkt, schaue ich mir an)
VG Mark