Was macht agentcad?
1. Die Kernregel
Gib niemals ein Maß, ein Spiel oder ein BESTANDEN (PASS) an, das du nicht an der erstellten Geometrie mit agentcad gemessen hast.
Parameter sind Absicht, kein Beweis. Ein Wert, den du in model.py eingegeben hast, sagt dir, was du wolltest, nicht was existiert.
2. Die Schleife
agentcad new my-part --template blank # oder bracket, box-with-lid
# bearbeite my-part/model.py und my-part/agentcad.toml
agentcad check my-part --json # baut, dann misst
agentcad render my-part # build/renders/: ein PNG pro Ansicht plus sheet.png
agentcad view my-part # Live-Viewer für den Menschen
- Schreibe zuerst die Prüfungen für die Anforderungen (Abschnitt 3) oder während der Modellierung.
- Führe
agentcad check --jsonaus. Lies jedes FEHLGESCHLAGEN (FAIL):summary,measured,limit,where. - Behebe die Geometrie an der Stelle, die
whereangibt. Führe erneut aus. Bearbeite keinen Grenzwert, um ein FAIL verschwinden zu lassen, es sei denn, die Anforderung selbst hat sich geändert. - Führe
agentcad renderaus und öffnesheet.pngmit einem bildfähigen Werkzeug. Sieh es dir an, bevor du sagst, es sieht richtig aus. Renderings finden grobe Fehler (fehlendes Merkmal, falsche Seite); sie beweisen niemals Dicke, Spiel oder Überlappung nach. - Wiederhole, bis alle Bedingungen (Gates) bestanden sind. Führe
agentcad checknach der letzten Bearbeitung erneut aus.
Das overhang-Gate ignoriert Flächen auf der Bauplatte und nach unten gerichtete Flächen, die unterhalb von first_layer_mm (Standard 0,3) zentriert sind, sodass eine Fase an der Unterkante nicht zählt; der ausgenommene Bereich wird als first_layer_area_mm2 gemeldet.
Verwende --only ID,ID, um ausgewählte Gates erneut auszuführen, und --no-build nur, wenn build/ aktuell ist.
3. Anforderungen in Prüfungen umwandeln
Jede funktionale Anforderung in der Aufgabenstellung wird zu einer Prüfung in checks(ctx). Sondenkörper (Abschnitt 4) stehen für das Gegenstück. Alle folgenden Namen sind die echte API.
Eine Passung wird zu einer Spielmessung:
def checks(ctx):
play = ctx.play("lid", "box", direction=(1, 0, 0), max_mm=2.0)
ctx.expect("lid_side_play", play if play is not None else 2.0, min=0.15, max=0.4, part="lid")
„Der Deckel geht ab“ wird zu einem Gleittest:
sweep = ctx.slide("lid", "box", direction=(0, 0, 1), distance=15.0, steps=40)
ctx.expect("lid_lifts_free", max(s["overlap_mm3"] for s in sweep), max=0.01, unit="mm3", part="lid")
„Eine M4-Schraube geht durch“ wird zu einem Sondenzylinder, der nicht kollidieren darf und nahe an der Wand sein muss:
import cadquery as cq
screw = cq.Workplane("XY").circle(2.0).extrude(30).translate((10, 0, -5)) # 4.0 mm Schaft
ctx.expect("screw_interference", ctx.interference("bracket", screw), max=0.01, unit="mm3", part="bracket")
ctx.expect("screw_wall_gap", ctx.distance("bracket", screw), min=0.0, max=0.5, part="bracket")
Das Distanzband beweist, dass die Schraube tatsächlich nahe am Loch ist, nicht 14 mm entfernt mit null Überlappung.
„Passt auf den Drucker“ ist das integrierte bed_fit-Gate: setze [printer] in agentcad.toml auf die reale Maschine (profile oder bed = [X, Y, Z]). „Wände stark genug“ ist min_wall_mm unter [checks].
4. Sondenkörper (Probe Solids)
Erstelle den Stellvertreter für das Gegenstück aus der Anforderung, niemals aus den eigenen Parametern des Modells. Eine M4-Schraube ist ein 4,0 mm Zylinder. Eine 54 mm Kugel ist eine 54 mm Kugel. Ein Kabel ist ein Zylinder entlang seines Verlaufs. Eine Hand ist ein Quader in der Größe der Hand. Wenn die Sonde dieselbe Variable liest, aus der das Loch erstellt wurde, kann die Prüfung niemals fehlschlagen.
Sonden sind cq.Workplane- oder cq.Shape-Objekte, die sich bereits im Verwendungskoordinatensystem (use frame) befinden. Platziere sie mit .translate und übergib sie überall dort, wo ein Teilname akzeptiert wird (ctx.interference, ctx.distance, ctx.slide, ctx.play).
5. Beweise, dass eine Prüfung fehlschlagen kann
Eine Prüfung, die du noch nie fehlschlagen gesehen hast, ist eine Vermutung. Gehe nach dem Schreiben wie folgt vor:
- Verändere die Geometrie (oder die Sonde) so, dass sie die Prüfung auslösen muss: verschiebe das Loch um 3 mm, verkleinere das Spiel auf 0, vergrößere die Sonde um 1 mm.
- Führe
agentcad checkaus. Bestätige, dass diese Prüfung FEHLGESCHLAGEN ist, basierend auf ihrer eigenen Behauptung, mit der von dir erwarteten Zahl. - Stelle die Geometrie wieder her und bestätige BESTANDEN.
Wenn sie trotz Veränderung bestanden wird, misst die Prüfung das Falsche. Korrigiere die Prüfung, bevor du einem anderen Ergebnis vertraust.
6. Koordinatensysteme (Frames)
| Koordinatensystem | Bedeutung | Verwendet von |
|---|---|---|
| model | Das Teil in seinen eigenen Koordinaten | build/step/<part>.step |
| use | Die zusammengebaute Position, Part.use | interference, Sonden, ctx.slide, ctx.play, build/assembly/ |
Auf der Bauplatte, z = 0 unten, XY zentriert, Part.print Rotation | bed_fit, bed_contact, overhang, min_wall, watertight, build/stl/ |
Setze Part.print = Pose(rx=180) (oder eine beliebige Rotation), damit jedes Teil stützenfrei druckt und die Schichten entlang der Last verlaufen. Wähle zuerst die Fläche auf der Bauplatte aus und überprüfe dann overhang in diesem Koordinatensystem. Gekaufte Teile erhalten printed=False. Modelliere Teile in einem bequemen lokalen Koordinatensystem und platziere sie mit Part.use.
7. Berichte, Exit-Codes, Diff und lose Dateien
Exit-Codes: 0 alle bestanden (WARN erlaubt), 1 mindestens ein FEHLGESCHLAGEN, 2 Nutzungs- oder Konfigurationsfehler (einschließlich unbekannter Schlüssel in agentcad.toml), 3 der Modellcode hat eine Ausnahme verursacht oder keinen gültigen Festkörper erzeugt. Behandle 2 und 3 als „kein Ergebnis“, nicht als Bestanden.
agentcad check --json gibt ein Dokument mit "schema": "agentcad.report/1" und einer checks-Liste aus. Jede Prüfung hat id, part, status (PASS, WARN, FAIL, SKIP, ERROR), summary, measured, limit, where. Eine Projektprüfung, die eine Ausnahme auslöst, wird zu ERROR, und die Ausführung wird fortgesetzt.
Vergleiche Bauausgaben mit agentcad diff OLD NEW (zwei manifest.json-Dateien oder zwei Build-Ordner; Volumen, Bounding-Box, Teilesatz), um unbeabsichtigte Änderungen nach einer Bearbeitung zu erkennen. Kopiere build/manifest.json vor einer riskanten Änderung zur Seite.
Um CAD-Dateien zu überprüfen, die du nicht geschrieben hast, messe die Dateien direkt:
agentcad measure part.step --json
agentcad interfere a.stl b.stl --json
agentcad overhang part.stl --max-deg 45 --json
agentcad wall part.stl --thin 1.2 --json
agentcad fit part.stl --printer generic-220 --json
8. Wann aufhören
Höre erst auf, wenn alle folgenden Bedingungen erfüllt sind:
- Alle Bedingungen (Gates) sind im letzten
agentcad check-Durchlauf bestanden, der nach deiner letzten Bearbeitung durchgeführt wurde; - Jede Anforderung in der Aufgabenstellung hat eine Prüfung, und du hast jede dieser Prüfungen einmal fehlschlagen sehen (Abschnitt 5);
- Du hast dir die Renderings angesehen;
- Deine Zusammenfassung zitiert die gemessenen Zahlen mit Einheiten (Spiel, Wandstärke p1, Überhangfläche, Druckbett-Passung);
- Du gibst die Teileanzahl an und alles, was als manuelle Prüfung übrig bleibt (eine Schnappkraft, eine Toleranz des realen Druckers, Materialverhalten).
9. Anti-Patterns und die dadurch verursachten Fehler
- Lesen von Parametern anstatt der erstellten Form. Ein Arbeiter meldete BESTANDEN für ein Gleitschwalbenschwanzspiel, während das Teil 14 mm außerhalb seiner Nut saß, weil seine Prüfung die Parameter las.
- Überspringen des Druckkoordinatensystems. Eine Platte wurde so modelliert, dass sie mit der bedruckten Seite nach unten gedruckt wird, mit etwa 6100 mm2 ungestützter Decke, weil der Überhang nie in der Druckausrichtung überprüft wurde.
- Überspringen der paarweisen Interferenz. Zwei Teile überlappten sich in der Baugruppe um 50 cm3, weil niemand die Interferenz in der Gebrauchsposition überprüft hat.
- Grobe Exporttoleranz. Ein grober STL-Export eines rotationssymmetrischen Teils erzeugte eine Facette, die eine 2,0 mm dicke Wand auf 1,5 mm schnitt. Behebung: Exporttoleranz 0,02 mm, Winkeltoleranz 0,05 rad (die Standardwerte in
[export]). - Ungemessene Prosa. Ein Konstruktionsdokument gab einen Außendurchmesser von 29 bis 33,5 mm an, während das Modell 19 mm maß. Messe jede Zahl, die du in Prosa schreibst.
- Nur auf „es baut“ prüfen. Ein Neubau bestand sein einziges Gate, während alle internen Kanäle versiegelt und ein Ausguss massiv war. Verfolge den funktionalen Pfad: Führe eine Sonde entlang des Wasser-, Kabel- oder Luftwegs.
- Nur das Ganze prüfen. Eine Baugruppe war insgesamt stabil, während eine einzelne lose Stufe allein bei 6 Grad kippte. Überprüfe jede lose Unterstapel.
- Vertrauen auf einen veralteten Bericht. Ein Gate-Bericht war veraltet, weil der Bau nach dem Schreiben des alten Berichts abgestürzt ist. agentcad baut atomar, aber vergleiche dennoch die Zeitstempel der Berichte mit deiner letzten Bearbeitung und führe sie nach jeder Bearbeitung erneut aus.
- Vertrauen auf das Bild. Ein sauberes Rendering verbarg alle oben genannten Probleme.
10. Referenzen
- references/design-for-printing.md: Lies dies, bevor du die Ausrichtung, Wandstärke, Passungen, Schraubenlöcher oder Schnappverbindungen für ein FDM-Teil auswählst.
- references/cadquery-patterns.md: Lies dies, wenn eine CadQuery-Operation fehlschlägt, eine unerwartete Form zurückgibt oder du Selektoren, Schalen, Verrundungen oder Sondenkörper benötigst.
- references/verification-playbook.md: Lies dies, wenn du Prüfungen für eine Aufgabenstellung planst, Bewegung oder Funktion testest oder das CAD eines anderen Agenten überprüfst.