Update config, docs and add box model
- server.py: Output-Verzeichnis default auf models/ relativ zu server.py - README.md: Claude Code statt Desktop, models/-Ordner, korrekte settings.json - models/box.py: Offene Box 30x30x20mm, alle Maße als Variablen Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -10,7 +10,7 @@ Zusätzlich ist CQ-editor als GUI-Vorschau-Tool integriert.
|
||||
|
||||
1. [Voraussetzungen](#1-voraussetzungen)
|
||||
2. [Installation](#2-installation)
|
||||
3. [Claude Desktop einbinden](#3-claude-desktop-einbinden)
|
||||
3. [Claude Code einbinden](#3-claude-code-einbinden)
|
||||
4. [CQ-editor starten](#4-cq-editor-starten)
|
||||
5. [Verwendung in Claude](#5-verwendung-in-claude)
|
||||
6. [Projektstruktur](#6-projektstruktur)
|
||||
@@ -24,7 +24,7 @@ Zusätzlich ist CQ-editor als GUI-Vorschau-Tool integriert.
|
||||
|---|---|---|
|
||||
| Windows 10/11 | 64-Bit | Getestet auf Windows 11 |
|
||||
| Python | ≥ 3.10 | [python.org](https://www.python.org/downloads/) – „Add to PATH" aktivieren |
|
||||
| Claude Desktop | aktuell | [claude.ai/download](https://claude.ai/download) |
|
||||
| Claude Code | aktuell | CLI-Tool von Anthropic |
|
||||
| Git | optional | Für Versionsverwaltung |
|
||||
|
||||
> **Hinweis:** Python 3.13 wird vollständig unterstützt (CadQuery 2.7.0 liefert fertige Wheels).
|
||||
@@ -76,57 +76,52 @@ Installierte Pakete (Auswahl):
|
||||
# Ausgabe: cq-editor OK
|
||||
```
|
||||
|
||||
### 2.5 Test-STL erzeugen
|
||||
### 2.5 Output-Verzeichnis anlegen
|
||||
|
||||
```powershell
|
||||
.venv\Scripts\python -c "
|
||||
import cadquery as cq
|
||||
from cadquery import exporters
|
||||
from pathlib import Path
|
||||
|
||||
output = Path.home() / '3d-models'
|
||||
output.mkdir(exist_ok=True)
|
||||
result = cq.Workplane('XY').box(20, 20, 10)
|
||||
exporters.export(result, str(output / 'test_box.stl'))
|
||||
print('OK:', output / 'test_box.stl')
|
||||
"
|
||||
mkdir models
|
||||
```
|
||||
|
||||
Die STL-Datei wird in `C:\Users\<Benutzername>\3d-models\` gespeichert.
|
||||
STL-Dateien und Vorschauen werden in `cadquery\models\` gespeichert.
|
||||
|
||||
---
|
||||
|
||||
## 3. Claude Code einbinden
|
||||
|
||||
**Claude Code** (CLI) nutzt `settings.json`, nicht `claude_desktop_config.json`.
|
||||
**Claude Code** (CLI) nutzt `settings.json` — **nicht** `claude_desktop_config.json`.
|
||||
|
||||
### 3.1 Konfigurationsdatei
|
||||
|
||||
```
|
||||
C:\Users\thors\.claude\settings.json
|
||||
C:\Users\<Benutzername>\.claude\settings.json
|
||||
```
|
||||
|
||||
### 3.2 CadQuery-Server eintragen
|
||||
|
||||
Der CadQuery-Server ist bereits eingetragen (Auszug):
|
||||
Den folgenden Block in `"mcpServers"` einfügen:
|
||||
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"cadquery": {
|
||||
"type": "stdio",
|
||||
"command": "C:/Users/thors/Documents/Claude/cadquery/.venv/Scripts/python.exe",
|
||||
"args": ["C:/Users/thors/Documents/Claude/cadquery/server.py"]
|
||||
"command": "C:/Users/<Benutzername>/Documents/Claude/cadquery/.venv/Scripts/python.exe",
|
||||
"args": ["C:/Users/<Benutzername>/Documents/Claude/cadquery/server.py"],
|
||||
"env": {
|
||||
"CADQUERY_OUTPUT_DIR": "C:/Users/<Benutzername>/Documents/Claude/cadquery/models"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
> **Hinweis:** In `settings.json` werden Pfade mit Forward-Slashes (`/`) geschrieben.
|
||||
> **Wichtig:** `<Benutzername>` durch den tatsächlichen Windows-Benutzernamen ersetzen.
|
||||
> Pfade in `settings.json` werden mit Forward-Slashes (`/`) geschrieben.
|
||||
|
||||
### 3.3 Claude Code neu starten
|
||||
|
||||
Nach Änderungen an `settings.json` muss Claude Code neu gestartet werden.
|
||||
Nach Änderungen an `settings.json` muss Claude Code **vollständig** neu gestartet werden
|
||||
(nicht nur eine neue Konversation öffnen — die App selbst beenden und neu starten).
|
||||
Die MCP-Tools erscheinen dann automatisch in der Werkzeugliste.
|
||||
|
||||
---
|
||||
@@ -139,26 +134,16 @@ CQ-editor ist ein Qt-basierter GUI-Editor mit Live-3D-Vorschau.
|
||||
|
||||
```powershell
|
||||
# Direkt über die installierte Executable:
|
||||
C:\Users\<Benutzername>\Documents\Claude\cadquery\.venv\Scripts\cq-editor.exe
|
||||
.venv\Scripts\cq-editor.exe
|
||||
|
||||
# Alternativ über Python:
|
||||
.venv\Scripts\python -m cq_editor
|
||||
```
|
||||
|
||||
### Startskript (optional)
|
||||
|
||||
Für einfacheres Starten kann eine Datei `start-cq-editor.bat` im Projektverzeichnis
|
||||
angelegt werden:
|
||||
|
||||
```batch
|
||||
@echo off
|
||||
C:\Users\<Benutzername>\Documents\Claude\cadquery\.venv\Scripts\cq-editor.exe
|
||||
```
|
||||
|
||||
### Workflow mit CQ-editor
|
||||
|
||||
1. CQ-editor starten
|
||||
2. CadQuery-Code im Editor schreiben
|
||||
2. Datei aus `models\` öffnen (z.B. `box.py`)
|
||||
3. **F5** drücken → Live-Vorschau rechts aktualisiert sich
|
||||
4. Datei → Export → STL zum Speichern
|
||||
|
||||
@@ -168,10 +153,10 @@ C:\Users\<Benutzername>\Documents\Claude\cadquery\.venv\Scripts\cq-editor.exe
|
||||
|
||||
### 5.1 Verfügbare MCP-Tools
|
||||
|
||||
Nach dem Neustart von Claude Desktop stehen drei Tools zur Verfügung:
|
||||
Nach dem Neustart von Claude Code stehen drei Tools zur Verfügung:
|
||||
|
||||
#### `mcp__cadquery__render_stl`
|
||||
Führt CadQuery-Python-Code aus und exportiert eine STL-Datei.
|
||||
Führt CadQuery-Python-Code aus und exportiert eine STL-Datei nach `models\`.
|
||||
|
||||
```
|
||||
Parameter:
|
||||
@@ -180,7 +165,7 @@ Parameter:
|
||||
```
|
||||
|
||||
#### `mcp__cadquery__preview_png`
|
||||
Exportiert eine SVG-Vorschau des Modells.
|
||||
Exportiert eine SVG-Vorschau des Modells nach `models\`.
|
||||
|
||||
```
|
||||
Parameter:
|
||||
@@ -189,7 +174,7 @@ Parameter:
|
||||
```
|
||||
|
||||
#### `mcp__cadquery__list_models`
|
||||
Listet alle STL-Dateien im Output-Verzeichnis auf.
|
||||
Listet alle STL-Dateien in `models\` auf.
|
||||
|
||||
### 5.2 Code-Konventionen
|
||||
|
||||
@@ -213,11 +198,23 @@ result = cq.Workplane("XY").box(20, 20, 10)
|
||||
|
||||
### 5.3 Beispiele
|
||||
|
||||
**Einfacher Quader:**
|
||||
**Offene Box mit parametrischen Maßen (siehe `models/box.py`):**
|
||||
```python
|
||||
import cadquery as cq
|
||||
|
||||
result = cq.Workplane("XY").box(30, 20, 10)
|
||||
# Maße
|
||||
breite = 30 # mm (X)
|
||||
tiefe = 30 # mm (Y)
|
||||
hoehe = 20 # mm (Z)
|
||||
wandstaerke = 2 # mm
|
||||
|
||||
result = (
|
||||
cq.Workplane("XY")
|
||||
.box(breite, tiefe, hoehe)
|
||||
.faces(">Z")
|
||||
.shell(-wandstaerke)
|
||||
)
|
||||
|
||||
show_object(result)
|
||||
```
|
||||
|
||||
@@ -234,13 +231,13 @@ result = (
|
||||
show_object(result)
|
||||
```
|
||||
|
||||
**Parametrisches Modell:**
|
||||
**Quader mit abgerundeten Kanten:**
|
||||
```python
|
||||
import cadquery as cq
|
||||
|
||||
breite = 40
|
||||
hoehe = 20
|
||||
tiefe = 10
|
||||
tiefe = 20
|
||||
hoehe = 10
|
||||
radius = 3
|
||||
|
||||
result = (
|
||||
@@ -252,29 +249,15 @@ result = (
|
||||
show_object(result)
|
||||
```
|
||||
|
||||
**Assembly (Baugruppe):**
|
||||
```python
|
||||
import cadquery as cq
|
||||
|
||||
box = cq.Workplane("XY").box(20, 20, 10)
|
||||
zylinder = cq.Workplane("XY").cylinder(15, 5)
|
||||
|
||||
asm = (
|
||||
cq.Assembly()
|
||||
.add(box, name="basis", loc=cq.Location((0, 0, 0)))
|
||||
.add(zylinder, name="zapfen", loc=cq.Location((0, 0, 10)))
|
||||
)
|
||||
show_object(asm)
|
||||
```
|
||||
|
||||
### 5.4 Output-Verzeichnis
|
||||
|
||||
STL-Dateien werden gespeichert in:
|
||||
STL-Dateien und SVG-Vorschauen werden gespeichert in:
|
||||
```
|
||||
C:\Users\<Benutzername>\3d-models\
|
||||
cadquery\models\
|
||||
```
|
||||
|
||||
Diesen Pfad kann man über die Umgebungsvariable `CADQUERY_OUTPUT_DIR` überschreiben.
|
||||
Der Pfad wird über `CADQUERY_OUTPUT_DIR` in `settings.json` gesetzt.
|
||||
Fallback (wenn nicht gesetzt): `cadquery\models\` relativ zu `server.py`.
|
||||
|
||||
---
|
||||
|
||||
@@ -283,6 +266,8 @@ Diesen Pfad kann man über die Umgebungsvariable `CADQUERY_OUTPUT_DIR` überschr
|
||||
```
|
||||
cadquery/
|
||||
├── .venv/ # Python Virtual Environment (nicht ins Git)
|
||||
├── models/ # Generierte STL- und SVG-Dateien + Python-Modelle
|
||||
│ └── box.py # Beispiel: offene Box mit parametrischen Maßen
|
||||
├── server.py # MCP-Server (FastMCP)
|
||||
└── README.md # Diese Datei
|
||||
```
|
||||
@@ -309,14 +294,15 @@ in eine Variable namens `result` speichern.
|
||||
|
||||
### STL-Datei wird nicht erstellt
|
||||
|
||||
- Output-Verzeichnis prüfen: `C:\Users\<Benutzername>\3d-models\`
|
||||
- Output-Verzeichnis prüfen: `cadquery\models\` muss existieren
|
||||
- Schreibrechte auf das Verzeichnis prüfen
|
||||
|
||||
### Claude Desktop zeigt keine MCP-Tools
|
||||
### Claude Code zeigt keine MCP-Tools
|
||||
|
||||
1. `claude_desktop_config.json` auf korrekte Pfade und JSON-Syntax prüfen
|
||||
2. Claude Desktop vollständig beenden (Taskleiste → Rechtsklick → Beenden)
|
||||
3. Claude Desktop neu starten
|
||||
1. `settings.json` auf korrekte Pfade und JSON-Syntax prüfen
|
||||
2. Claude Code **vollständig** beenden (nicht nur Konversation schließen)
|
||||
3. Claude Code neu starten
|
||||
4. MCP-Server-Log prüfen: `%APPDATA%\Claude\logs\mcp-server-cadquery.log`
|
||||
|
||||
### Download bricht ab (cadquery-ocp / PyQt5-Qt5)
|
||||
|
||||
|
||||
+8
-15
@@ -1,23 +1,16 @@
|
||||
"""
|
||||
Offene Box: 40 x 60 x 50 mm, Wand- und Bodenstärke 2 mm
|
||||
"""
|
||||
import cadquery as cq
|
||||
from cadquery import exporters
|
||||
from pathlib import Path
|
||||
|
||||
OUTPUT = Path.home() / "3d-models"
|
||||
OUTPUT.mkdir(exist_ok=True)
|
||||
|
||||
wall = 2
|
||||
# Maße
|
||||
breite = 30 # mm (X)
|
||||
tiefe = 30 # mm (Y)
|
||||
hoehe = 20 # mm (Z)
|
||||
wandstaerke = 2 # mm
|
||||
|
||||
result = (
|
||||
cq.Workplane("XY")
|
||||
.box(40, 60, 50)
|
||||
.box(breite, tiefe, hoehe)
|
||||
.faces(">Z")
|
||||
.shell(-wall)
|
||||
.shell(-wandstaerke)
|
||||
)
|
||||
|
||||
out = OUTPUT / "box_40x60x50.stl"
|
||||
exporters.export(result, str(out))
|
||||
print(f"STL gespeichert: {out}")
|
||||
print(f"Größe: {out.stat().st_size // 1024} KB")
|
||||
show_object(result)
|
||||
|
||||
@@ -13,7 +13,8 @@ from mcp.server.fastmcp import FastMCP
|
||||
import cadquery as cq
|
||||
from cadquery import exporters
|
||||
|
||||
OUTPUT_DIR = Path(os.environ.get("CADQUERY_OUTPUT_DIR", Path.home() / "3d-models"))
|
||||
_default_output = Path(__file__).parent / "models"
|
||||
OUTPUT_DIR = Path(os.environ.get("CADQUERY_OUTPUT_DIR", _default_output))
|
||||
OUTPUT_DIR.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
mcp = FastMCP("cadquery")
|
||||
|
||||
Reference in New Issue
Block a user