FreeCAD-Plugin (freecad-bridge): CAD-Konstruktion per Chat — Funktion und Funktionsweise #127
Labels
No labels
herkunft/alpha-feedback
status
blockiert
status
zu-testen
typ
bug
typ
docs
typ
enhancement
typ
feature
typ
idea
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
iris/iris-plugins#127
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Feature-Issue: FreeCAD-Plugin (
freecad-bridge) — CAD-Konstruktion per ChatFunktion: Iris konstruiert, vermisst und exportiert 3D-Modelle auf Zuruf: Gehäuse um eine Platine, Halterungen und Schellen, Platten mit Ausschnitten, Teile aus einer importierten STEP-/STL-Datei, Vasen aus einem Netz. Das Ergebnis sind STEP-/STL-Dateien, Bilder und ein Bericht mit den Maßen — alles liegt direkt im Workspace des Chats. Das Plugin ist nur für den Iris-Linux-Server gedacht (auf dem Mac ist FreeCAD direkt installiert, dort ein anderes Konzept).
Stand: Plugin 1.8.1, Container-Image
iris/freecad-mcpv0.10.1, Registry-Freigabe fehlt noch (– privat, kein.include).Funktionsweise
Drei Teile: das Plugin in Iris (
plugins/freecad-bridge:plugin.json, Skilliris-freecad, Settings-Panel, Viewer-Seite), der Container in einem eigenen Repo (iris/freecad-mcp, FreeCAD 1.1 headless unter Xvfb plus MCP-Server des Addonsghbalf/freecad-ai), und die Server-Seite (linux-server/iris-server/app/freecad_plugin_routes.py).Install-Ablauf: Image aus der Forgejo-Registry ziehen → Token erzeugen (
/data/freecad-mcp/token, 0600) → Container im Netz voniris-hermesanlegen (Bindsworkspaces/freecadundfreecad-mcp/config, 8 GB RAM, 4 CPUs,unless-stopped) → Registrierungsdatei/data/plugin-mcp-servers/freecad.jsonschreiben → warten, bis ein echter Tool-Call (list_documents) antwortet → Hermes bei Idle neu starten. Container-Verwaltung läuft über die Docker Engine API aufdocker.sock, nicht über SSH oder Compose — der Server-Container hat kein Docker-CLI. Der Containername ist<instanz>-freecad-mcp, damit mehrere Iris-Instanzen auf einem Host nicht kollidieren.Dokument pro Chat: jedes Werkzeug bekommt den Pflichtparameter
document(= Chat-ID). Pro Aufruf wird das Dokument gewählt (bei Bedarf angelegt oder aus/workspace/documents/<name>.FCStdgeöffnet) und nach jedem schreibenden Tool gespeichert. Mehrere Chats arbeiten so parallel in getrennten Modellen; ein Neustart verliert nichts. Die Registry läuft seriell auf dem Qt-Thread, Wechsel und Ausführung sind damit atomar.Ergebnisse im Chat-Workspace: Exporte, Bilder und
Bericht.md(Maße und Volumen aller Objekte plus Dateiliste) werden immer im Dokumentordner abgelegt und unter/workspaces/<Chat-ID>/sichtbar — unabhängig davon, was das Modell im Chat schreibt. Anhänge liegen unter/workspaces/<Chat-ID>/Anhänge/….Werkzeugweg:
run_cadqueryist der Standardweg für neue Teile;import_modelfür vorhandene Dateien;cad_helpmit getesteten Rezepten;kit.enclosurebaut ein Gehäuse aus einem Aufruf (Öffnungsachse aus der Geometrie, Anschlüsse als bündige Einzelteile erkannt) — Seitenwahl und Offsets werden nie dem Modell überlassen, weil es bei jeder neuen Platine anders rät.view_insideliefert den Blick in die Öffnung, damit ein Bild etwas beweist.Oberfläche: die echte FreeCAD-Oberfläche lässt sich über den Plugins-Chevron in einem eigenen Fenster ansehen und bedienen (noVNC über
WS /plugins/freecad-bridge/vnc, nur mit cfg_token dieses Plugins oder Bearer-Token).Offene Punkte
freecad-bridgehat kein.includeund keinestore/-Medien — veröffentlicht wird nur auf Alfs Wort.docs/integration-custom-tools.mdbeschreibt sieben Module (primitives, sketch, boolean, transformations, loft), gebaut ist davon nichts. Grund für die Idee:freecad-aihat keine primitiven Erzeuger, das Modell geht für einfache Körper aufwändige Sketch+Pad-Umwege.docs/integration-create-box.mdist der frühere Entwurf zu genau diesem Thema und liegt noch unversioniert im Repo — er ist indocs/integration-custom-tools.mdenthalten. Nach der Regel „eine Information steht an genau einer Stelle" gehört er entfernt oder auf die wenigen Stücke gekürzt, die dort fehlen (Fehlerbehandlung, Testfälle).vase_from_meshdeckt nur rotationssymmetrische Teile ab.documents/<JOB_ID>.FCStd) — ein Löschen oder Archivieren fehlt.hermes-scheduledbekommt den MCP-Eintrag erst beim nächsten Server-Start.PR #3 gemergt: docs(primitives): Entwurf der Primitive-Werkzeuge, Fehlerbehandlung und Testfälle (iris/iris-plugins#127)
iris/freecad-mcp#3
Commits: