Milestone 2026-07-11 — Weg 2: seitlicher Einschub mit Spielpassung (LERN-Fall)

Learning case — no printable STL for this milestone.
Art: Lern-/Lehr-Fall (kein autonomer fehlerfreier Entwurf, sondern ein von Tim eng geführtes Lernen des „Weg 2"). Bewusst als Milestone festgehalten, um auch so einen Fall zu dokumentieren.
Aufgabe
Ein Quader (zuerst 6×6×6, dann 3×4×5) soll seitlich, in negativer x-Richtung, mit Spielpassung in einen Zylinder (Ø10, Höhe 40) eingeschoben werden. Der Abzugskörper (Sackloch) wird über einen Oberflächen-Frame seitlich abgezogen; Einschubtiefe 4 mm, mit Spiel auch in der Tiefe.
Das verbindliche Vorgehen (Weg 2), das dabei gelernt wurde
- Keine absoluten Koordinaten. Zielinformation per geometrischer Abfrage aus dem Körper holen:
Fläche+Frame über
TofSGFSselect(Zugangsweg = Frame-z). Frame perSGTgetlesen. - Körpermaße messen, nie die Bau-Zahl wiederverwenden. Ausdehnung entlang der Achse per Strahlschnitt
crosspointVLFL(aC=max(dd)-min(dd)), nichtaC=6eintippen. Nur Spezifikationen (Einschubtiefed) sind Zahlen. - Kontur per Projektion — Richtung, nicht Frame —
CPLofSGprojection(SG, ez); und den zurückgegebenen FrameTauswerten (Kontur liegt inTs Orientierung!):V=VLtransT(CVL,inv(TZ)); CPL=V(:,1:2). - Echte Passung:
slc=slfit('c'); Kontur vergrößern mitCPLbuffer(...,'miter')(scharfe Ecken, kein FDM-Verkleben);SGwarnfittinguseam Anfang. - Anordnung nur über Frame-Relationen (
alignT/matchT); relativer Versatz IN die geschweifte Klammer ({FA,FB,TofP([0 0 v])}), nie als trailing,'transz',v(das ist absolut). - Primitive ohne Default-Frames (
SGbox(...,'noframe')); Frames nach Booleans mitSGTcopymitnehmen. - Ergebnis visuell prüfen (nicht nur
nm=0): Sitz, Größe, Orientierung, Spiel.
Nebenprodukt (SG-Lib-Verbesserung)
CPLofSGprojection projiziert jetzt headless & exakt über Manifold (project() via
CLAUDE_sg_manifold.project_vlfl) statt über das Grafikboard (CPLofgcaprojection/getframe), mit Grafik-Fallback.
Siehe ..._projection_manifold_vs_graphics.png (exaktes 4-Punkt-Quadrat statt 9 pixel-getrastert). Apache-2.0-
Lizenzhinweis für Manifold ergänzt (LICENSE_thirdparty_Manifold_Apache2.txt, SG-Lib_LICENSE.txt §9);
SGmanifoldSetup prüft nun auch project_vlfl.
Ehrliche Meta-Lehre (der eigentliche Grund für diesen Milestone)
Der Entwurf hat 2–3 Stunden gedauert — deutlich zu lang. Nicht, weil das Wissen fehlte (die Regeln standen
schon in den md-Dateien), sondern weil ich sie nicht konsequent angewandt habe: pro Regelverletzung (Magic
Number, absolutes transz, Frame statt Richtung, T nicht ausgewertet) eine verlorene Iteration. Konsequenz:
eine Pre-Flight-Checkliste (in CLAUDE_SGLIB_PATH2.md), die vor jedem Lauf abgehakt wird — Regeln
anwenden statt nach dem Fehler wiederentdecken. Das ist die Lehre, die dieser Fall festhält.
Dateien
..._build_sgtestclaude.m— finaler, regelkonformer Build (3×4×5, gemessen, keine Magic Numbers)...._views.png— Ergebnis (Quader seitlich mit Spiel eingeschoben, korrekt orientiert)...._projection_manifold_vs_graphics.png— Projektionsvergleich Manifold vs. Grafik.- Konversation:
..._conversation_de.md/..._conversation_en.md.
Referenzen (Regeln dauerhaft abgelegt)
CLAUDE_SGLIB_PATH2.md (Checkliste + Regeln R1/R2), CLAUDE_SGLIB_LEARN.md (Namens-/Frame-/Mess-Regeln),
CLAUDE_SGLIB_PARAMS.md (CPLofSGprojection, crosspointVLFL, slfit, ⚠️-Inkonsistenzen).
Entwurfs-Konversation (Deutsch)
Konversation (Auszug/Kern) — Weg 2, seitlicher Einschub, 2026-07-11
Verdichtete Wiedergabe der Lehr-Konversation (Tim ↔ Claude). Reihenfolge = Lernpfad.
- Tim: Zweiter Lernpfad „Weg 2" (boolean-kompositionell), Voraussetzung: Booleans jetzt fehlerfrei (Manifold2). Später klargestellt: Wege 1 und 2 haben dieselben Regeln, nur andere Reihenfolge.
- Tim: „Zeig mir Deine Zylinderkonstruktion." → Claude zeigt den alten Zylinderstapel.
- Tim (Regel): Keine absoluten Koordinaten. Zielinfo per geometrischer Abfrage holen — Fläche + Frame
(
TofSGFSselect), der Frame definiert den Zugangsweg. - Tim (Regel): Durchgang/Austritt berechnen, nie als Konstante ablegen —
crosspointVLFLvom Oberflächenpunkt rückwärts. „Verlass Dich nie darauf, die Geometrie zu kennen." - Übung: Zylinder Ø10×40, Frames
TO/TUper Abfrage, mitSGTsetankleben. ✓ - Tim (Regeln): Kontur relativ zum Frame; Sackloch-Länge = Tiefe + Überstand; Abzugskörper nie in
absoluten Koordinaten, sondern relativ zum Oberflächenframe.
SGTgetstatt der selbst berechneten Variable. - Übung: quadratisches Sackloch am
TO. ✓ (Frames überlebenSGsubtract— belegt; sichtbar nur mitSGTplotalpha, nichtSGplotalpha/Montage. Grundregel: Frames zeigen, wenn es um Frames geht.) - Tim (Regeln): Anordnung nur über Frame-Relation (
alignT), Abzugskörper bekommt eigenen Frame'C'. Namenskonvention: Solids/Konturen mit Datentyp-Präfix in Großbuchstaben (SGB,SGHsub,CPLA), Bausatz-Suffix klein (sub/add/supp).SGbox(...,'noframe')bei eigenen Frames.SGTcopyfür Frames. - Tim (Regel): Passungen fest:
slc=slfit('c'),slt=slfit('t'),sli=slfit('i'); jede Funktion mit Passung ruftSGwarnfittinguse.CPLbuffer(...,'miter')(scharfe Ecken, kein Verkleben) —'round'ist ungeeignet. - Problem:
CPLofSGprojectionliefert im headless Batch eine falsche Kontur (Grafikboard/getframe). → Manifold hatProject()(Silhouette auf X-Y) undSlice(height). Eingebaut als headless-exakter Ersatz (project_vlfl), Signatur unverändert, Grafik-Fallback, kein per-call try/catch (Tim: try/catch langsam), Apache-2.0-Lizenz ergänzt. - Fehler 1 (Claude): Magic Number
aC=6. Tim: „Beim nächsten Mal 3×4×5 — die 6 stimmt nicht. Miss die Ausdehnung vom Frame percrosspointVLFL. Wenn das nicht gelingt, muss ich das Lernen einstellen." - Fehler 2 (Claude): relativer Versatz als trailing
,'transz',v→ absolutes Welt-KS → Würfel nach oben statt radial. Tim: Versatz gehört in die geschweifte Klammer ({FA,FB,TofP([0 0 v])}) = relativ. - Fehler 3 (Claude): den von
CPLofSGprojectionzurückgegebenen FrameTnicht ausgewertet → Kontur um 90° verdreht. Tim: „CPLliegt inTs Orientierung, nicht in Deiner." →V=VLtransT(CVL,inv(TU)). - Ergebnis: 3×4×5-Quader seitlich mit Spielpassung korrekt eingeschoben, Maß gemessen, keine Magic Numbers,
richtige Orientierung, Spiel eingehalten.
nm=0. - Tim (Meta): „Jetzt stimmt es — aber wir haben 2–3 Stunden gebraucht. Ich bitte Dich, die Regeln zu
fixieren und wirklich einzuhalten." → Pre-Flight-Checkliste in
CLAUDE_SGLIB_PATH2.md.
Kernlehre: Das Wissen war da; der Zeitverlust kam vom Nicht-Anwenden. Regeln vor jedem Lauf abhaken, nicht nach dem Fehler wiederentdecken.