3D STL
Zwei Eingänge, ein Standard-Ausgabeformat: ein wasserdichtes STL, ein parametrisches Skript, das es erzeugt, und eine Slicer-Tabelle, die den Druck zum Erfolg führt.
| Eingabe | Route | Bibliothek |
|---|---|---|
| Maße, ein beschriebenes Objekt, eine Skizze in Worten | Geometrie-Route | scripts/partlib.py |
| Ein Foto oder Bilddatei | Bild-Route | scripts/imagelib.py |
Einrichtung für die Geometrie-Route:
pip install trimesh shapely manifold3d --break-system-packages -q
Die Bild-Route benötigt nur Pillow und NumPy – keine Mesh-Bibliothek, keine Booleans.
Geometrie-Route
1. Maße vor der Modellierung festlegen
Die meiste Nacharbeit hier entsteht durch Unklarheit, nicht durch schlechte Geometrie. Halten Sie das Teil in einer kurzen Tabelle fest (Maß → Wert → Quelle) und markieren Sie alles, was Sie angenommen haben. Achten Sie besonders auf:
- Außenmaß vs. Bohrungsabstand. „87 mm breit“ und „87 mm zwischen den Schrauben“ sind unterschiedliche Teile – sie unterscheiden sich um eine Wandstärke. Fragen Sie nach.
- Eine fehlende dritte Dimension. Ein Profil plus eine Dicke sind nur zwei von drei; wählen Sie eine sinnvolle Tiefe, sagen Sie das, und machen Sie es zu einem Flag.
- Verbindungsabsicht. „5 mm Schrauben“ können Durchgangslöcher für Metall-M5-Schrauben, gedruckte Gewindestifte oder einen Heizeinsatz bedeuten. Drei verschiedene Modelle.
- Vorhandene Hardware. Wenn das Teil mit etwas verbunden wird, das bereits existiert, sind dessen Lochabstand und Materialstärke Randbedingungen, keine Präferenzen.
Stellen Sie maximal die ein oder zwei Fragen, die die Geometrie ändern; nehmen Sie den Rest an, nennen Sie die Annahme und machen Sie weiter.
2. Mit der Bibliothek modellieren
scripts/partlib.py stellt Profilbauer, extrude, threaded_rod, threaded_pin, hex_nut, place und finish bereit. Importieren Sie diese, anstatt die Mesh-Mathematik neu zu erfinden – das Wendelgewinde ist leicht subtil falsch zu machen.
scripts/example_handle.py ist ein vollständiges bearbeitetes Teil (Brückengriff + integrale Gewindestifte + passende Mutter). Kopieren Sie es als Gerüst für ein neues Teil.
Schreiben Sie das Modell als parametrisches Skript mit argparse-Flags, niemals mit fest codierten Zahlen. Der Benutzer wird innerhalb von Minuten eine Variante wünschen, und die Antwort sollte eine einzige Kommandozeile sein, nicht ein neues Modell. Geben Sie das Skript zusammen mit dem STL zurück.
3. Übliche Teile-Rezepte
| Teil | Aufbau aus |
|---|---|
| Brückengriff, ⊓-Winkel | bridge_profile + extrude |
| Flache Platte mit Löchern | Shapely-Polygon mit Innenringen + extrude |
| Stift, Bolzen, Schraube | threaded_pin, dann place auf seine Achse |
| Mutter, Gewindemuffe | hex_nut, oder subtrahiere threaded_rod(clearance=…) |
| Abstandshalter, Buchse | zwei konzentrische Kreise + extrude |
| Haken, L-Winkel | Polygon der Seitenansicht + extrude, flach auf dem Bett |
| Gehäuse | äußerer Kasten minus innerem Kasten; Lippe mit 0,15 mm Spiel |
Alles, was nicht aufgeführt ist, ist trotzdem ein Polygon, eine Extrusion und eine Boolesche Operation.
Bild-Route
scripts/imagelib.py wandelt ein Bild in ein Höhenfeld um und fügt einen expliziten Vertex-Gitter-Festkörper zusammen – Oberseite, flache Unterseite, vier Seitenwände. Es verwendet keine Boolean-Engine, weshalb es genau bei großen oder ungewöhnlichen Bildern nicht versagt.
python3 imagelib.py photo.jpg --mode lithophane --width 100 \
--out stl_output/lithophane.stl
python3 imagelib.py logo.png --mode relief --width 80 --base 2 \
--out stl_output/relief.stl
| Modus | Abbildung | Typische z |
|---|---|---|
relief | Helle Pixel steigen | 0,6 → 4,0 mm, oft über einer --base-Platte |
lithophane | Dunkle Pixel werden dick, damit sie bei Hinterleuchtung leuchten | 0,8 → 3,0 mm, ohne Basis |
--reslegt die Anzahl der Abtastpunkte auf der langen Kante fest (Standard 200). Eine Auflösung über etwa 0,4 mm pro Abtastpunkt ist verschwendet – die Düse kann es nicht drucken, und die Datei wird aufgebläht. Erhöhen Sie sie nur bei großen Drucken.- Der Kontrast wird beim Laden automatisch gedehnt; ein flaches, kontrastarmes Foto ergibt einen flachen, enttäuschenden Druck. Sagen Sie das, anstatt es zu drucken.
- Lithophanien wünschen sich Gesichter und kontrastreiche Motive. Landschaften und überfüllte Szenen verschwimmen zu Matsch.
check()überprüft, ob jede Kante genau zweimal in entgegengesetzten Richtungen erscheint. Ein reiner Zähler würde eine falsch herum vernähte Wand durchlassen, was ein „gültiges“ STL ergibt, das der Slicer von innen nach außen kehrt. Führen Sie es aus, berichten Sie es.
Fertigstellung, für beide Routen
Zuerst prüfen: finish() (Geometrie) und check() (Bild) melden die Bounding Box, Wasserdichtheit und Dreiecksanzahl. Vergleichen Sie die Bounding Box mit den angeforderten Maßen – das fängt Vorzeichenfehler und Einheitenverwechslungen sofort ab. Präsentieren Sie niemals ein Mesh, das nicht wasserdicht ist.
Bei allem, was optisch nicht offensichtlich ist – Gewinde, Kurven, Baugruppen – rendern Sie eine kurze Matplotlib-Vorschau und schauen Sie sie sich an. Zwanzig Sekunden sind besser als ein sechsstündiger Druck der falschen Form.
Lesen Sie references/design-rules.md, bevor Sie Ausrichtung, Steigung oder Spielräume wählen. Es behandelt schichtrichtungsabhängige Festigkeit, druckbare Gewindeprofile, Passungstoleranzen, bildabgeleitete Teile und die nennenswerten Fehlermodi.
Die Antwort sollte enthalten:
- Eine Maßtabelle, einschließlich der angenommenen Werte.
- Jede Entscheidung, die im Namen des Benutzers getroffen wurde, mit Begründung. Wenn ein gewünschtes Merkmal mechanisch schwach ist, bauen Sie, was verlangt wurde, und nennen Sie die Schwäche mit einer konkreten Alternative – ersetzen Sie niemals stillschweigend.
- Eine Slicer-Tabelle: Schichthöhe, Wände, Füllung, Stützen (genau wo), Material und welche Seite auf das Bett kommt und warum.
- Die einzeilige Befehl zum Neuerzeugen mit anderen Zahlen.
- Alles, was vor dem Druck gegen vorhandene Hardware überprüft werden muss.
Liefern Sie STL-Dateien nach /mnt/user-data/outputs/ auf claude.ai oder in einen stl_output/-Ordner im aktuellen Arbeitsverzeichnis in Claude Code, und präsentieren Sie sie zusammen mit dem Generator-Skript. Die Skripte befinden sich im scripts/-Ordner dieses Skills; rufen Sie sie mit vollständigem Pfad auf oder kopieren Sie sie neben das Teil-Skript. Unter Windows verwenden Sie python anstelle von python3.
Mehrteilige Baugruppen
Wenn Teile zusammenpassen (Stift und Mutter, Deckel und Kiste, Scharnierhälften):
- Erzeugen Sie beide aus gemeinsamen Parametern in einem Skript – ein Spielwert, der in zwei Dateien lebt, wird auseinanderdriften.
- Leiten Sie das weibliche Teil von derselben Funktion ab wie das männliche, versetzt um ein Spiel, sodass sie nicht inkonsistent sein können.
- Geben Sie an, wie viele von jedem gedruckt werden sollen, und schlagen Sie ein Ersatzteil für das kleine vor.
- Wenn eine Passung unsicher ist, bieten Sie einen Toleranztest an: Drucken Sie das kleine Teil mit zwei Spielen und behalten Sie das, das funktioniert.