From 7dd45a39a6a40f039d56d855154cc30f0e40f3f2 Mon Sep 17 00:00:00 2001 From: breitenbach76 Date: Thu, 4 Jun 2026 22:51:38 +0200 Subject: [PATCH 1/7] Action-Stein entfernt + Doku bereinigt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - action-stein.scad geloescht: kein Szenario-Traeger mehr. Action Card liegt flach an der aktuellen Station; Station fuehrt die App bzw. zeigen die gestellten Figuren. - materialliste: §3 auf "Szenario-Handling (kein 3D-Teil)" umgestellt, Stueckliste + kritische Masse bereinigt, Aktiv-Feld-Bezug aktualisiert. - README_3d-druck / README_openscad nachgezogen. - bauteile-masse.svg: Pitch 24 -> 30. - versehentlich getrackte Vorschau _af.png entfernt. Co-Authored-By: Claude Opus 4.8 --- 01_3D-Druck/README_3d-druck.md | 5 +-- 01_3D-Druck/bauteile-masse.svg | 2 +- 01_3D-Druck/materialliste.md | 30 ++++++++--------- 01_3D-Druck/openscad/README_openscad.md | 3 +- 01_3D-Druck/openscad/_af.png | Bin 12086 -> 0 bytes 01_3D-Druck/openscad/action-stein.scad | 42 ------------------------ 6 files changed, 18 insertions(+), 64 deletions(-) delete mode 100644 01_3D-Druck/openscad/_af.png delete mode 100644 01_3D-Druck/openscad/action-stein.scad diff --git a/01_3D-Druck/README_3d-druck.md b/01_3D-Druck/README_3d-druck.md index 0d59569..9b5cb76 100644 --- a/01_3D-Druck/README_3d-druck.md +++ b/01_3D-Druck/README_3d-druck.md @@ -31,8 +31,9 @@ Verankerung und Steckmechanik. Avery-Standard — Bezugsquelle prüfen.) - **Figuren werden gestellt/reingestellt** (Sockel Ø 20, kein Pin): am Puck in Mulden Ø 22, am Aktiv-Feld auf flachen Standfeldern Ø 22 (gleiche Größe). -- **Materialempfehlung:** PLA für Pucks/Aktiv-Feld/Chips (formstabil, günstig), PLA + - Gewichtseinlage (M8-Mutter) für den Action-Stein (Standfestigkeit mit aufrechter Karte). +- **Materialempfehlung:** PLA für Pucks/Aktiv-Feld/Chips (formstabil, günstig). +- **Kein Action-Stein mehr:** Das Szenario (Action Card) liegt flach an der aktuellen + Station; die aktuelle Station führt die App / zeigen die gestellten Figuren. ## Drucker-Annahmen diff --git a/01_3D-Druck/bauteile-masse.svg b/01_3D-Druck/bauteile-masse.svg index aaefea2..1b4b147 100644 --- a/01_3D-Druck/bauteile-masse.svg +++ b/01_3D-Druck/bauteile-masse.svg @@ -144,7 +144,7 @@ ~236 74 × 6 mm · R/C/I je 4 (2×2) · A = genau 1 (schematisch) - Ø22 (alle gleich, wie Puck) · Pitch 24 (Sockel Ø20) · keine Löcher + Ø22 (alle gleich, wie Puck) · Pitch 30 (Sockel Ø20) · keine Löcher diff --git a/01_3D-Druck/materialliste.md b/01_3D-Druck/materialliste.md index 54b94aa..24c6fdd 100644 --- a/01_3D-Druck/materialliste.md +++ b/01_3D-Druck/materialliste.md @@ -73,24 +73,22 @@ darauf die Stationen. > über die **Entscheidungs-Chips** (§5). Das „Tor-Gefühl" entsteht durch Farbe + > Icon + das Stellen der Pflicht-Figuren + den Chip-Moment. -## 3. Action-Stein (Szenario-Träger) +## 3. Szenario-Handling (kein 3D-Teil mehr) -| Merkmal | Wert | -|---------|------| -| Fuß | Ø 59 × 5 mm (steht **neben** dem aktiven Puck — keine Verankerung mehr nötig) | -| Körper | Zylinder Ø 35, Höhe 30 mm | -| Kartenschlitz | Breite 64 mm, Tiefe 4 mm, Höhe 25 mm (für Action Card **60 mm** breit) | -| Gewichtseinlage | Aussparung für M8-Mutter im Fuß (Kippschutz) | -| Stabilitäts-Option | zusätzlicher Standring Ø 70 mm, falls Karte zu kopflastig | -| Menge | **1–2** | -| Material | PLA, Infill ≥ 40 % + Metalleinlage | +Der **Action-Stein ist entfallen.** Seine zwei Funktionen werden jetzt anders gelöst: -> Der Stein-Fuß bleibt **außerhalb** des Pucks (markiert „wir sind hier" durch -> Danebenstellen). Da er in keine Mulde mehr passen muss, ist der Fuß-Ø frei wählbar. +- **Szenario tragen:** Die gezogene **Action Card** (aus [`../03_Karten/`](../03_Karten/)) + liegt **flach an der aktuellen Station** und wandert mit der Gruppe die Bahn entlang — + kein aufrechter Kartenträger nötig. +- **„Wir sind hier" markieren:** Die **Companion-App** führt die Stationsreihenfolge; + zusätzlich ist die aktuelle Station daran erkennbar, dass dort die **Rollen-Figuren** + stehen (7 Mulden am Puck). Optional reicht ein einfacher flacher Marker-Chip. + +> **Kein Druckteil**, keine Metalleinlage, kein Kartenschlitz mehr. ## 4. Aktiv-Feld (RACI-Fläche) -Bleibt **unverändert** als separates, mobiles Board neben dem Action-Stein. Hier +Bleibt **unverändert** als separates, mobiles Board neben der aktuellen Station. Hier werden die beteiligten Rollen je Aktivität nach **RACI** gestellt — die 7 Mulden am Puck zeigen „wer ist beteiligt", das Aktiv-Feld zeigt „in welcher Verantwortung". @@ -98,7 +96,7 @@ Puck zeigen „wer ist beteiligt", das Aktiv-Feld zeigt „in welcher Verantwort |---------|------| | Grundkörper | **130 × 130 × 6 mm**, Ecken r5 (quadratisches 2×2-Raster) | | Bereiche | **2×2-Matrix:** oben **R \| A**, unten **C \| I** (eingravierte Umrandung), 4 gleich große Felder | -| Standfelder | R / C / I: je 4 (2×2) · A: genau 1 = **13**; alle Markierung Ø 22 (wie Puck), Pitch 24 | +| Standfelder | R / C / I: je 4 (2×2) · A: genau 1 (rechts oben) = **13**; alle Markierung Ø 22 (wie Puck), Pitch 30 | | Gravur | Feld-Umrandung 0,6 mm + Zonen-Buchstabe R / A / C / I, Tiefe 0,8 mm | | Menge | **1** (ggf. 2 bei parallelen Tischen) | | Material | PLA, Infill 20 % | @@ -134,7 +132,6 @@ Puck zeigen „wer ist beteiligt", das Aktiv-Feld zeigt „in welcher Verantwort |------|------:|-------| | Station-Puck | 37 | `openscad/puck.scad` (Phasenfarbe) | | Gate-Puck | 3 | `openscad/puck.scad` (rot) | -| Action-Stein | 2 | `openscad/action-stein.scad` | | Aktiv-Feld (RACI-Fläche) | 1 | `openscad/aktiv-feld.scad` | | Rollen-Figuren (Einzel) | 32 | 16 Rollen × 2 | | Team-Sonderfiguren | 6 | 3 Teams × 2 | @@ -150,8 +147,7 @@ Puck zeigen „wer ist beteiligt", das Aktiv-Feld zeigt „in welcher Verantwort - **Etikettenmulde Ø 37,5 × 0,3** — Rundetikett Ø37 (Puck-Rand bleibt sichtbar, ~3,3 mm Restwand zu den Figurenmulden). Maximal möglich wäre Ø40. - **Keine** Verankerung Ø60, **keine** Puzzle-Tabs, **kein** Gate-Tor, **keine** - Gate-Karte mehr. -- **Action-Stein-Kartenschlitz B 64** (für 60-mm-Karte). + Gate-Karte, **kein** Action-Stein mehr. ## Hinweise für den Producer diff --git a/01_3D-Druck/openscad/README_openscad.md b/01_3D-Druck/openscad/README_openscad.md index 7d2fb3f..a7b6fa9 100644 --- a/01_3D-Druck/openscad/README_openscad.md +++ b/01_3D-Druck/openscad/README_openscad.md @@ -7,8 +7,7 @@ Parametrische Quellmodelle der Schlüsselteile. In [OpenSCAD](https://openscad.o | Datei | Bauteil | |-------|---------| | `puck.scad` | **Station-/Gate-Puck** (Ø100, Rand + Einbuchtung, 7 Figurenmulden Ø22, Etikettenmulde Ø37,5) | -| `action-stein.scad` | Szenario-Träger mit Kartenschlitz + M8-Gewichtsaussparung (Fuß bleibt **außerhalb** des Pucks) | -| `aktiv-feld.scad` | RACI-Fläche (R · A · C · I) — bleibt als separates mobiles Board | +| `aktiv-feld.scad` | RACI-Fläche (R · A · C · I, 2×2) — separates mobiles Board, 130×130 | ## Ein Puck für die ganze Bahn diff --git a/01_3D-Druck/openscad/_af.png b/01_3D-Druck/openscad/_af.png deleted file mode 100644 index 948bf906ef7aef77246329ae77c3d80f6900bfd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12086 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 Date: Thu, 4 Jun 2026 23:16:14 +0200 Subject: [PATCH 2/7] Phasen-Ring: SLC-Uebersicht <-> Bahn-Koepfe (5 Segmente) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Neues phasen-ring.scad: 5x 72°-Ringsegment (Ø180/Ø84x8). Zusammengesteckt = SLC-Uebersichts-Donut, auseinandergenommen = farbige Phasen-Koepfe der Puck-Bahn (Design-Segment = Start vor dem ersten Puck). - Je Phasenfarbe (wie die Pucks), gravierter Name + Sublabel + Icon. - Magnettaschen Ø6x2 (2 je Stosskante): Magnete optional, sonst lose auflegen. - Parametrisch: render_mode single (Export je phase=0..4) / ring (Vorschau). - materialliste (§7 + Stueckliste) und README_openscad nachgezogen. Co-Authored-By: Claude Opus 4.8 --- 01_3D-Druck/materialliste.md | 21 ++++ 01_3D-Druck/openscad/README_openscad.md | 1 + 01_3D-Druck/openscad/phasen-ring.scad | 132 ++++++++++++++++++++++++ 3 files changed, 154 insertions(+) create mode 100644 01_3D-Druck/openscad/phasen-ring.scad diff --git a/01_3D-Druck/materialliste.md b/01_3D-Druck/materialliste.md index 24c6fdd..bfd8b9f 100644 --- a/01_3D-Druck/materialliste.md +++ b/01_3D-Druck/materialliste.md @@ -124,6 +124,26 @@ Puck zeigen „wer ist beteiligt", das Aktiv-Feld zeigt „in welcher Verantwort | Menge | je Figur 2× → **32** Einzelrollen (16 × 2) + **6** Team-Figuren (3 × 2) = **38** | | Material | PLA, eingefärbt je Kategorie | +## 7. Phasen-Ring (SLC-Übersicht ↔ Bahn-Köpfe) + +Fünf 72°-Ringsegmente bilden **zusammengesteckt** den SLC-Übersichts-Donut (wie das +Konzept-Schaubild) und **auseinandergenommen** die farbigen **Phasen-Köpfe** der +linearen Puck-Bahn — das **Design-Segment ist der Start** vor dem ersten Puck. + +| Merkmal | Wert | +|---------|------| +| Form | Ringsegment 72°, **Ø 180 außen / Ø 84 innen × 8 mm** | +| Beschriftung | **graviert** (nur 5 Stück): Phasenname + Sublabel + Icon | +| Farbe | je Phase (blau/orange/grün/teal/lila) — wie die Pucks | +| Verbindung | **Magnettaschen** Ø 6 × 2, je 2 pro Stoßkante; Magnete optional einkleben — **ohne Magnete einfach lose aneinanderlegen** | +| Menge | **5** (1 je Phase) | +| Material | PLA, Infill 15 %, Filament je Phasenfarbe | +| Datei | `openscad/phasen-ring.scad` | + +> Export: `render_mode="single"` + `phase=0..4` → ein Segment je Phase. +> Vorschau: `render_mode="ring"` (Preview-Modus, nicht `--render` — sonst eine +> Einheitsfarbe). Magnete: bis zu **20** (Ø 6 × 2) für den geschlossenen Ring. + --- ## Stückliste (Kurzfassung) @@ -132,6 +152,7 @@ Puck zeigen „wer ist beteiligt", das Aktiv-Feld zeigt „in welcher Verantwort |------|------:|-------| | Station-Puck | 37 | `openscad/puck.scad` (Phasenfarbe) | | Gate-Puck | 3 | `openscad/puck.scad` (rot) | +| Phasen-Ring-Segment | 5 | `openscad/phasen-ring.scad` (je Phasenfarbe) | | Aktiv-Feld (RACI-Fläche) | 1 | `openscad/aktiv-feld.scad` | | Rollen-Figuren (Einzel) | 32 | 16 Rollen × 2 | | Team-Sonderfiguren | 6 | 3 Teams × 2 | diff --git a/01_3D-Druck/openscad/README_openscad.md b/01_3D-Druck/openscad/README_openscad.md index a7b6fa9..9317968 100644 --- a/01_3D-Druck/openscad/README_openscad.md +++ b/01_3D-Druck/openscad/README_openscad.md @@ -8,6 +8,7 @@ Parametrische Quellmodelle der Schlüsselteile. In [OpenSCAD](https://openscad.o |-------|---------| | `puck.scad` | **Station-/Gate-Puck** (Ø100, Rand + Einbuchtung, 7 Figurenmulden Ø22, Etikettenmulde Ø37,5) | | `aktiv-feld.scad` | RACI-Fläche (R · A · C · I, 2×2) — separates mobiles Board, 130×130 | +| `phasen-ring.scad` | **Phasen-Ring** (5× 72°-Segment): Übersichts-Donut ↔ Bahn-Köpfe, Magnettaschen, `phase=0..4` | ## Ein Puck für die ganze Bahn diff --git a/01_3D-Druck/openscad/phasen-ring.scad b/01_3D-Druck/openscad/phasen-ring.scad new file mode 100644 index 0000000..ae77eac --- /dev/null +++ b/01_3D-Druck/openscad/phasen-ring.scad @@ -0,0 +1,132 @@ +// Phasen-Ring — 5 Segmente (Donut) als SLC-Uebersicht, die auseinandergenommen +// die Phasen-KOEPFE der linearen Puck-Bahn bilden (Design-Segment = Start). +// SLC-Workshop Tabletop · Einheiten: mm +// +// - 1 Segment = 72°-Ringsegment in seiner Phasenfarbe (wie die Pucks). +// - Beschriftung GRAVIERT (nur 5 Stueck): Phasenname + Sublabel + einfaches Icon. +// - Magnettaschen an beiden Stosskanten: Magnete einkleben -> haelt als Ring zusammen; +// ohne Magnete einfach lose aneinanderlegen (Taschen stoeren nicht). +// +// EXPORT: render_mode="single" + phase=0..4 -> ein Segment je Phase als STL. +// VORSCHAU: render_mode="ring" -> alle 5 farbig zusammengesetzt. + +/* [Render] */ +render_mode = "ring"; // "single" (Export) oder "ring" (Vorschau) +phase = 0; // 0 Design · 1 Transition · 2 Operation · 3 Support · 4 Review + +/* [Ring-Geometrie] */ +r_out = 90; // Aussenradius (Ø180) +r_in = 42; // Innenradius (Ø84) +seg_h = 8; // Dicke (etwas dicker als Pucks -> Platz fuer Magnete in der Kante) +seg_ang = 72; // 360/5 +gap_deg = 1.2; // kleiner Spalt zwischen Segmenten (Passung) + +/* [Magnettaschen] (an den Stosskanten) */ +mag_d = 6.2; // Loch fuer Ø6-Magnet +mag_t = 2.2; // Tiefe (Ø6x2-Magnet + Spiel) +mag_r1 = 56; // Radius Tasche 1 +mag_r2 = 78; // Radius Tasche 2 + +/* [Gravur] */ +eng_depth = 0.8; +name_size = 7; +sub_size = 3.4; + +$fn = 96; + +// --- Phasendaten ------------------------------------------------------------ +names = ["DESIGN", "TRANSITION", "OPERATION", "SUPPORT", "REVIEW"]; +subs = ["Planung & Architektur", "Kontrollierte Ueberfuehrung", + "Stabiler laufender Betrieb", "Nutzeranfragen & Incidents", + "Continual Improvement"]; +// Phasenfarben (nur Vorschau; im Druck = Filament) +pcol = [[0.16,0.44,0.69], [0.88,0.54,0.12], [0.23,0.62,0.29], + [0.12,0.62,0.62], [0.49,0.31,0.64]]; + +// --- Geometrie-Helfer ------------------------------------------------------- +module ring_sector(a) { + // Ringsegment ueber Winkel a, Bisektor zeigt nach +Y (oben) + a0 = 90 - a/2; + a1 = 90 + a/2; + big = r_out + 10; + intersection() { + difference() { // Annulus + cylinder(r = r_out, h = seg_h); + translate([0,0,-0.5]) cylinder(r = r_in, h = seg_h + 1); + } + linear_extrude(seg_h) // Tortenstueck + polygon([[0,0], + [big*cos(a0), big*sin(a0)], + [big*cos(90), big*1.2], + [big*cos(a1), big*sin(a1)]]); + } +} + +module magnet_pocket(edge_ang, inward_ang, r) { + translate([r*cos(edge_ang), r*sin(edge_ang), seg_h/2]) + rotate([0,0,inward_ang]) rotate([0,90,0]) + translate([0,0,-0.3]) cylinder(d = mag_d, h = mag_t + 0.3, $fn = 32); +} + +// --- Icons (einfache gravierte Glyphen, 2D) --------------------------------- +module icon(i) { + // zentriert um (0,0), ~14 mm + if (i == 0) // Design: Dokument + difference() { + square([10,13], center=true); + translate([2.5,5.5]) rotate(45) square([6,6]); // gefaltete Ecke + } + else if (i == 1) // Transition: Pfeil nach rechts + union() { + translate([-6,-1.6]) square([9,3.2]); + translate([3,0]) polygon([[0,-5],[6,0],[0,5]]); + } + else if (i == 2) // Operation: Zahnkranz (Ring) + difference() { circle(r=6.5); circle(r=3.2); } + else if (i == 3) // Support: Sprechblase + union() { + translate([0,1]) square([13,9], center=true); + translate([-4,-3.5]) polygon([[0,0],[5,0],[0,-4]]); + } + else // Review: Kreis-Pfeil (Loop) + union() { + difference() { + difference(){ circle(r=6.5); circle(r=3.8); } + translate([3,3]) square([8,8]); // Luecke oben rechts + } + translate([6.5,2]) polygon([[-2,0],[2,2],[2,-3]]); // Pfeilspitze + } +} + +// --- ein Segment ------------------------------------------------------------ +module phase_segment(idx) { + a = seg_ang - gap_deg; + e0 = 90 - a/2; // untere Kante + e1 = 90 + a/2; // obere Kante + difference() { + ring_sector(a); + // Magnettaschen: 2 je Stosskante + magnet_pocket(e0, e0 + 90, mag_r1); + magnet_pocket(e0, e0 + 90, mag_r2); + magnet_pocket(e1, e1 - 90, mag_r1); + magnet_pocket(e1, e1 - 90, mag_r2); + // Gravur (oben) + translate([0,0,seg_h - eng_depth]) linear_extrude(eng_depth + 0.1) { + translate([0,82]) scale(0.9) icon(idx); + translate([0,66]) text(names[idx], size=name_size, + halign="center", valign="center"); + translate([0,53]) text(subs[idx], size=sub_size, + halign="center", valign="center"); + } + } +} + +// --- Ausgabe ---------------------------------------------------------------- +if (render_mode == "ring") { + for (i = [0:4]) + color(pcol[i]) rotate([0,0, -i*72]) phase_segment(i); +} else { + color(pcol[phase]) phase_segment(phase); +} + +echo(r_out=r_out, r_in=r_in, seg_h=seg_h, seg_ang=seg_ang); From b87806e3c882f67b96d48a820cdb0a30bb4867e5 Mon Sep 17 00:00:00 2001 From: breitenbach76 Date: Thu, 4 Jun 2026 23:23:14 +0200 Subject: [PATCH 3/7] Puck: magnetische Kanten-Kopplung (8 mm + Flats + Magnettaschen) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - puck_h 6 -> 8 mm, damit Ø6-Magnete in die Kante passen. - 2 abgeflachte Kontaktstellen (Eingang/Ausgang, x=±47) mit je 1 Magnettasche Ø6,2x2,2 auf Hoehenmitte -> Pucks koppeln zur Kette + an die Ring-Koepfe. - Mulden-Ring 15° gedreht, damit keine Mulde auf der Kopplungsachse liegt. - Parameter coupling=true (abschaltbar). Polaritaet konsistent einkleben. - materialliste + README_3d-druck + README_openscad nachgezogen (8 mm, Magnete ~100). Co-Authored-By: Claude Opus 4.8 --- 01_3D-Druck/README_3d-druck.md | 3 +- 01_3D-Druck/materialliste.md | 24 +++++++--- 01_3D-Druck/openscad/README_openscad.md | 2 +- 01_3D-Druck/openscad/puck.scad | 59 ++++++++++++++++++------- 4 files changed, 64 insertions(+), 24 deletions(-) diff --git a/01_3D-Druck/README_3d-druck.md b/01_3D-Druck/README_3d-druck.md index 9b5cb76..17bf41a 100644 --- a/01_3D-Druck/README_3d-druck.md +++ b/01_3D-Druck/README_3d-druck.md @@ -18,7 +18,8 @@ Verankerung und Steckmechanik. ## Grundsätzliche Design-Entscheidungen -- **Ein Puck pro Station** (Ø 100 × 6 mm rund) statt eckigem Tile + separater Scheibe. +- **Ein Puck pro Station** (Ø 100 × 8 mm rund) statt eckigem Tile + separater Scheibe. + Kopplung über Magnettaschen an 2 Flats (Eingang/Ausgang) → Pucks koppeln zur Kette. Der Puck vereint Stations-Markierung, Figuren-Standorte (7 Mulden) und Beschriftung in **einem** Teil → halb so viele Druckteile, keine Scheibe-Toleranz. - **Ein Modell für die ganze Bahn:** Station- und Gate-Puck sind dasselbe STL — diff --git a/01_3D-Druck/materialliste.md b/01_3D-Druck/materialliste.md index bfd8b9f..5bda532 100644 --- a/01_3D-Druck/materialliste.md +++ b/01_3D-Druck/materialliste.md @@ -10,8 +10,10 @@ Stand: 2026-06-04 · Maße in mm · Mengen für **ein** Workshop-Set. ## Standard-Schnittstelle (für alle Teile gültig) -- **Station = Puck:** runde Scheibe **Ø 100 × 6 mm**, 5 mm Rand, leichte Einbuchtung - (Spielfläche Ø 90). Keine Verankerung Ø60, keine Steckverbindung mehr. +- **Station = Puck:** runde Scheibe **Ø 100 × 8 mm**, 5 mm Rand, leichte Einbuchtung + (Spielfläche Ø 90). Keine Verankerung Ø60. **Kopplung:** Eingang/Ausgang als + abgeflachte Kontaktstelle mit je 1 Magnettasche → Pucks koppeln zur Kette + an die + Phasen-Ring-Köpfe. (8 mm, damit der Ø6-Magnet in die Kante passt.) - **Figuren-Platzierung:** Figuren werden **gestellt/reingestellt** (flacher Standfuß **Ø 20 mm**, kein Pin). Am **Puck** in **Mulden Ø 22 × 1,5 mm** (reinstellbar), am **Aktiv-Feld** auf flachen **Standfeldern Ø 22** (wie Puck-Mulden, Gravur ~0,6 mm). @@ -25,17 +27,22 @@ Stand: 2026-06-04 · Maße in mm · Mengen für **ein** Workshop-Set. | Merkmal | Wert | |---------|------| -| Grundkörper | **Ø 100 × 6 mm**, rund, obere Außenkante 1 mm gefast | +| Grundkörper | **Ø 100 × 8 mm**, rund, obere Außenkante 1 mm gefast | | Rand | **5 mm** breit, bleibt auf voller Höhe | | Einbuchtung | Spielfläche Ø 90, **1,2 mm** tief | -| Figurenplätze | **7 Mulden** Ø 22 × 1,5 mm (Einführ-Fase), auf Kreis r 33 (Ø 66) | +| Figurenplätze | **7 Mulden** Ø 22 × 1,5 mm (Einführ-Fase), auf Kreis r 33 (Ø 66), 15° gedreht | | Etikettenmulde | mittig Ø 37,5 × 0,3 mm (Rundetikett Ø37; Puck-Rand bleibt sichtbar) | +| Kopplung | 2 Flats (bei x = ±47) mit je 1 **Magnettasche Ø 6,2 × 2,2** (Mitte Höhe) | | Farbe | je Phase (blau/orange/grün/teal/lila) | | Menge | **37** (eine je Aktivität) | | Material | PLA, Infill 15 % | -| Druckzeit | ~1,3 h/Puck | +| Druckzeit | ~1,6 h/Puck | | Datei | `openscad/puck.scad` | +> **Magnet-Polarität konsistent einkleben:** alle **Ausgang** (+X) gleicher Pol nach +> außen (z. B. Nord), alle **Eingang** (−X) Gegenpol (Süd) → Nachbarn ziehen sich an; +> der Design-Ring-Kopf passt an den ersten Puck. Ohne Magnete: Flats liegen einfach an. + **Verteilung nach Phasenfarbe** (= Aktivitäten je Phase): | Phase | Farbe | Aktivitäten | Pucks | @@ -158,13 +165,16 @@ linearen Puck-Bahn — das **Design-Segment ist der Start** vor dem ersten Puck. | Team-Sonderfiguren | 6 | 3 Teams × 2 | | Entscheidungs-Chips | 12 | (einfache Münze + Gravur) | | Rundetiketten Ø37 | 40 | via Generator aus YAML (ID + Phasenfarbe); ablösbar bevorzugt | +| Magnete Ø6 × 2 | ~100 | Pucks 2× je Stück (80) + Phasen-Ring bis 20 | ## Kritische Maße & Passungen (bitte prüfen) -- **Puck = einziges Bahn-Teil** (Ø 100 × 6). Station vs. Gate nur über Filamentfarbe +- **Puck = einziges Bahn-Teil** (Ø 100 × 8). Station vs. Gate nur über Filamentfarbe + Etikett — **ein STL, 40× drucken** (37 Phasen + 3 rot). +- **Kopplung:** 2 Flats bei x = ±47, je 1 Magnettasche Ø 6,2 × 2,2 auf Höhenmitte. + Polarität konsistent einkleben (Ausgang/Eingang). Ø6-Magnet braucht die 8 mm Dicke. - **Figuren-Mulde Ø 22, Tiefe 1,5** für Sockel **Ø 20** (reinstellbar, Fase als - Einführhilfe). 7 Mulden auf Kreis r 33. + Einführhilfe). 7 Mulden auf Kreis r 33, 15° gedreht (frei von der Kopplungsachse). - **Etikettenmulde Ø 37,5 × 0,3** — Rundetikett Ø37 (Puck-Rand bleibt sichtbar, ~3,3 mm Restwand zu den Figurenmulden). Maximal möglich wäre Ø40. - **Keine** Verankerung Ø60, **keine** Puzzle-Tabs, **kein** Gate-Tor, **keine** diff --git a/01_3D-Druck/openscad/README_openscad.md b/01_3D-Druck/openscad/README_openscad.md index 9317968..ac9a9a0 100644 --- a/01_3D-Druck/openscad/README_openscad.md +++ b/01_3D-Druck/openscad/README_openscad.md @@ -6,7 +6,7 @@ Parametrische Quellmodelle der Schlüsselteile. In [OpenSCAD](https://openscad.o | Datei | Bauteil | |-------|---------| -| `puck.scad` | **Station-/Gate-Puck** (Ø100, Rand + Einbuchtung, 7 Figurenmulden Ø22, Etikettenmulde Ø37,5) | +| `puck.scad` | **Station-/Gate-Puck** (Ø100×8, 7 Figurenmulden Ø22, Etikettenmulde Ø37,5, Kopplungs-Flats + Magnettaschen Ø6) | | `aktiv-feld.scad` | RACI-Fläche (R · A · C · I, 2×2) — separates mobiles Board, 130×130 | | `phasen-ring.scad` | **Phasen-Ring** (5× 72°-Segment): Übersichts-Donut ↔ Bahn-Köpfe, Magnettaschen, `phase=0..4` | diff --git a/01_3D-Druck/openscad/puck.scad b/01_3D-Druck/openscad/puck.scad index b6e3585..2823c05 100644 --- a/01_3D-Druck/openscad/puck.scad +++ b/01_3D-Druck/openscad/puck.scad @@ -7,14 +7,19 @@ // - Aussenrand Ø100, ~5 mm breit, bleibt auf voller Hoehe // - leichte Einbuchtung (Spielflaeche) innerhalb des Rands // - Ring aus 7 Figurenmulden (Sockel Ø20 wird REINGESTELLT, daher Ø22) -// - Mitte: flache Mulde fuer ein rundes Avery-Etikett Ø40 (Art. 5080 abloesbar) +// - Mitte: flache Mulde fuer ein rundes Etikett Ø37 // -// Beschriftung: KEINE Gravur. ID + Phasenfarbe via Avery-Etikett Ø40 in der Mitte -// (wiederverwendbar/korrigierbar). Modell bleibt dadurch fuer alle 40 identisch. +// KOPPLUNG (coupling=true): Eingang/Ausgang als abgeflachte Kontaktstelle mit je +// einer Magnettasche -> Pucks koppeln zur Kette + an die Phasen-Ring-Koepfe. +// Dafuer ist der Puck 8 mm hoch (Ø6-Magnet passt in die Kante). +// POLARITAET beim Einkleben konsistent: alle AUSGANG (+X) z.B. Nordpol nach +// aussen, alle EINGANG (-X) Suedpol nach aussen -> Nachbarn ziehen sich an. +// +// Beschriftung: KEINE Gravur. ID/Phasenfarbe via Etikett Ø37 in der Mitte. /* [Puck] */ puck_d = 100; // Aussendurchmesser -puck_h = 6; // Gesamthoehe +puck_h = 8; // Gesamthoehe (8 -> Ø6-Magnet passt in die Kante) edge_cham = 1; // Fase obere Aussenkante (Optik/Griff) /* [Rand + Einbuchtung] */ @@ -27,16 +32,23 @@ spot_d = 22; // Mulden-Ø (Sockel Ø20 + Luft -> reinstellbar) spot_dep = 1.5; // Tiefe der Standmulde (zusaetzlich zur Einbuchtung) spot_ring_r = 33; // Radius des Mulden-Kreises (Mitte-Mitte) spot_lead = 0.8; // Einfuehr-Fase oben an der Mulde +spot_a0 = 15; // Winkel-Offset: keine Mulde auf der Kopplungsachse (X) /* [Etikettenmulde Mitte] — rundes Etikett Ø37 */ label_d = 37.5; // Mulden-Ø (Etikett Ø37 + 0,5 Spiel); Puck-Rand bleibt sichtbar label_dep = 0.3; // flach: Etikett sitzt plan + kantengeschuetzt +/* [Kopplung] — Magnete an Eingang/Ausgang */ +coupling = true; // Flats + Magnettaschen an +X/-X +flat_at = 47; // Abstand der Kontakt-Flache von der Mitte (Flat-Tiefe = 50-47 = 3) +mag_d = 6.2; // Loch fuer Ø6-Magnet +mag_t = 2.2; // Tiefe (Ø6x2-Magnet + Spiel) + $fn = 96; // abgeleitet play_d = puck_d - 2*rim_w; // Spielflaeche Ø90 -play_z = puck_h - recess_dep; // Hoehe der eingebuchteten Spielflaeche (4.8) +play_z = puck_h - recess_dep; // Hoehe der eingebuchteten Spielflaeche (6.8) // --- Grundkoerper mit gefaster Oberkante ------------------------------------ module puck_blank() { @@ -48,34 +60,51 @@ module puck_blank() { // --- eine Figurenmulde mit Einfuehr-Fase ------------------------------------ module figure_spot() { - // Boden der Mulde liegt spot_dep unter der Spielflaeche z0 = play_z - spot_dep; union() { translate([0, 0, z0]) cylinder(d = spot_d, h = spot_dep + 0.1); - // Fase als Einfuehrhilfe oben translate([0, 0, play_z - spot_lead]) cylinder(d1 = spot_d, d2 = spot_d + 2*spot_lead, h = spot_lead + 0.1); } } +// --- Kopplung: Flat-Schnitt + Magnettasche je Seite ------------------------ +module coupling_flat_cut() { + // entfernt Material jenseits von x = +/- flat_at -> zwei Kontakt-Flachen + for (s = [-1, 1]) + translate([s * (flat_at + 40), 0, puck_h/2]) + cube([80, puck_d + 20, puck_h + 2], center = true); +} + +module coupling_magnets() { + // +X (Ausgang): Tasche von der Flache nach innen + translate([flat_at + 0.3, 0, puck_h/2]) + rotate([0, -90, 0]) cylinder(d = mag_d, h = mag_t + 0.3, $fn = 32); + // -X (Eingang) + translate([-flat_at - 0.3, 0, puck_h/2]) + rotate([0, 90, 0]) cylinder(d = mag_d, h = mag_t + 0.3, $fn = 32); +} + module puck() { difference() { puck_blank(); + if (coupling) coupling_flat_cut(); // Einbuchtung / Spielflaeche - translate([0, 0, play_z]) - cylinder(d = play_d, h = recess_dep + 0.1); - // 7 Figurenmulden im Ring + translate([0, 0, play_z]) cylinder(d = play_d, h = recess_dep + 0.1); + // 7 Figurenmulden im Ring (mit Offset, frei von der Kopplungsachse) for (i = [0 : spot_count - 1]) { - a = 360/spot_count * i; + a = spot_a0 + 360/spot_count * i; translate([spot_ring_r*cos(a), spot_ring_r*sin(a), 0]) figure_spot(); } // Etikettenmulde Mitte - translate([0, 0, play_z - label_dep]) - cylinder(d = label_d, h = label_dep + 0.1); + translate([0, 0, play_z - label_dep]) cylinder(d = label_d, h = label_dep + 0.1); + // Magnettaschen + if (coupling) coupling_magnets(); } } puck(); -echo(puck_d = puck_d, spielflaeche = play_d, figurenplaetze = spot_count, - spot_d = spot_d, ring_r = spot_ring_r, etikett_mulde = label_d); +echo(puck_d = puck_d, puck_h = puck_h, spielflaeche = play_d, + figurenplaetze = spot_count, spot_d = spot_d, etikett_mulde = label_d, + kopplung = coupling); From fa8294870aa2f59f3cd231c5ad02e63112ecd8fd Mon Sep 17 00:00:00 2001 From: breitenbach76 Date: Thu, 4 Jun 2026 23:27:28 +0200 Subject: [PATCH 4/7] Magnete ueberall entfernt (Pucks + Phasen-Ring) - puck.scad: zurueck auf 6 mm, Kopplungs-Flats + Magnettaschen raus -> runder Puck, wird lose zur Bahn ausgelegt. - phasen-ring.scad: Magnettaschen raus, 8 -> 6 mm (gleiche Hoehe wie Pucks), Segmente werden lose aneinandergelegt. - materialliste + READMEs nachgezogen (6 mm, keine Magnete, Magnet-Zeile/ Polaritaets-Hinweise entfernt). Co-Authored-By: Claude Opus 4.8 --- 01_3D-Druck/README_3d-druck.md | 4 +-- 01_3D-Druck/materialliste.md | 31 ++++++----------- 01_3D-Druck/openscad/README_openscad.md | 4 +-- 01_3D-Druck/openscad/phasen-ring.scad | 25 ++------------ 01_3D-Druck/openscad/puck.scad | 45 ++++--------------------- 5 files changed, 24 insertions(+), 85 deletions(-) diff --git a/01_3D-Druck/README_3d-druck.md b/01_3D-Druck/README_3d-druck.md index 17bf41a..2a0b8c5 100644 --- a/01_3D-Druck/README_3d-druck.md +++ b/01_3D-Druck/README_3d-druck.md @@ -18,8 +18,8 @@ Verankerung und Steckmechanik. ## Grundsätzliche Design-Entscheidungen -- **Ein Puck pro Station** (Ø 100 × 8 mm rund) statt eckigem Tile + separater Scheibe. - Kopplung über Magnettaschen an 2 Flats (Eingang/Ausgang) → Pucks koppeln zur Kette. +- **Ein Puck pro Station** (Ø 100 × 6 mm rund) statt eckigem Tile + separater Scheibe. + Pucks werden lose zur Bahn ausgelegt (keine Magnete, keine Steckverbindung). Der Puck vereint Stations-Markierung, Figuren-Standorte (7 Mulden) und Beschriftung in **einem** Teil → halb so viele Druckteile, keine Scheibe-Toleranz. - **Ein Modell für die ganze Bahn:** Station- und Gate-Puck sind dasselbe STL — diff --git a/01_3D-Druck/materialliste.md b/01_3D-Druck/materialliste.md index 5bda532..8daf9b6 100644 --- a/01_3D-Druck/materialliste.md +++ b/01_3D-Druck/materialliste.md @@ -10,10 +10,9 @@ Stand: 2026-06-04 · Maße in mm · Mengen für **ein** Workshop-Set. ## Standard-Schnittstelle (für alle Teile gültig) -- **Station = Puck:** runde Scheibe **Ø 100 × 8 mm**, 5 mm Rand, leichte Einbuchtung - (Spielfläche Ø 90). Keine Verankerung Ø60. **Kopplung:** Eingang/Ausgang als - abgeflachte Kontaktstelle mit je 1 Magnettasche → Pucks koppeln zur Kette + an die - Phasen-Ring-Köpfe. (8 mm, damit der Ø6-Magnet in die Kante passt.) +- **Station = Puck:** runde Scheibe **Ø 100 × 6 mm**, 5 mm Rand, leichte Einbuchtung + (Spielfläche Ø 90). Keine Verankerung Ø60, keine Steckverbindung, keine Magnete — + Pucks werden lose zur Bahn ausgelegt. - **Figuren-Platzierung:** Figuren werden **gestellt/reingestellt** (flacher Standfuß **Ø 20 mm**, kein Pin). Am **Puck** in **Mulden Ø 22 × 1,5 mm** (reinstellbar), am **Aktiv-Feld** auf flachen **Standfeldern Ø 22** (wie Puck-Mulden, Gravur ~0,6 mm). @@ -27,22 +26,17 @@ Stand: 2026-06-04 · Maße in mm · Mengen für **ein** Workshop-Set. | Merkmal | Wert | |---------|------| -| Grundkörper | **Ø 100 × 8 mm**, rund, obere Außenkante 1 mm gefast | +| Grundkörper | **Ø 100 × 6 mm**, rund, obere Außenkante 1 mm gefast | | Rand | **5 mm** breit, bleibt auf voller Höhe | | Einbuchtung | Spielfläche Ø 90, **1,2 mm** tief | -| Figurenplätze | **7 Mulden** Ø 22 × 1,5 mm (Einführ-Fase), auf Kreis r 33 (Ø 66), 15° gedreht | +| Figurenplätze | **7 Mulden** Ø 22 × 1,5 mm (Einführ-Fase), auf Kreis r 33 (Ø 66) | | Etikettenmulde | mittig Ø 37,5 × 0,3 mm (Rundetikett Ø37; Puck-Rand bleibt sichtbar) | -| Kopplung | 2 Flats (bei x = ±47) mit je 1 **Magnettasche Ø 6,2 × 2,2** (Mitte Höhe) | | Farbe | je Phase (blau/orange/grün/teal/lila) | | Menge | **37** (eine je Aktivität) | | Material | PLA, Infill 15 % | -| Druckzeit | ~1,6 h/Puck | +| Druckzeit | ~1,3 h/Puck | | Datei | `openscad/puck.scad` | -> **Magnet-Polarität konsistent einkleben:** alle **Ausgang** (+X) gleicher Pol nach -> außen (z. B. Nord), alle **Eingang** (−X) Gegenpol (Süd) → Nachbarn ziehen sich an; -> der Design-Ring-Kopf passt an den ersten Puck. Ohne Magnete: Flats liegen einfach an. - **Verteilung nach Phasenfarbe** (= Aktivitäten je Phase): | Phase | Farbe | Aktivitäten | Pucks | @@ -139,17 +133,17 @@ linearen Puck-Bahn — das **Design-Segment ist der Start** vor dem ersten Puck. | Merkmal | Wert | |---------|------| -| Form | Ringsegment 72°, **Ø 180 außen / Ø 84 innen × 8 mm** | +| Form | Ringsegment 72°, **Ø 180 außen / Ø 84 innen × 6 mm** | | Beschriftung | **graviert** (nur 5 Stück): Phasenname + Sublabel + Icon | | Farbe | je Phase (blau/orange/grün/teal/lila) — wie die Pucks | -| Verbindung | **Magnettaschen** Ø 6 × 2, je 2 pro Stoßkante; Magnete optional einkleben — **ohne Magnete einfach lose aneinanderlegen** | +| Verbindung | **keine** — Segmente werden lose aneinandergelegt (Ring oder Phasen-Köpfe) | | Menge | **5** (1 je Phase) | | Material | PLA, Infill 15 %, Filament je Phasenfarbe | | Datei | `openscad/phasen-ring.scad` | > Export: `render_mode="single"` + `phase=0..4` → ein Segment je Phase. > Vorschau: `render_mode="ring"` (Preview-Modus, nicht `--render` — sonst eine -> Einheitsfarbe). Magnete: bis zu **20** (Ø 6 × 2) für den geschlossenen Ring. +> Einheitsfarbe). --- @@ -165,16 +159,13 @@ linearen Puck-Bahn — das **Design-Segment ist der Start** vor dem ersten Puck. | Team-Sonderfiguren | 6 | 3 Teams × 2 | | Entscheidungs-Chips | 12 | (einfache Münze + Gravur) | | Rundetiketten Ø37 | 40 | via Generator aus YAML (ID + Phasenfarbe); ablösbar bevorzugt | -| Magnete Ø6 × 2 | ~100 | Pucks 2× je Stück (80) + Phasen-Ring bis 20 | ## Kritische Maße & Passungen (bitte prüfen) -- **Puck = einziges Bahn-Teil** (Ø 100 × 8). Station vs. Gate nur über Filamentfarbe +- **Puck = einziges Bahn-Teil** (Ø 100 × 6). Station vs. Gate nur über Filamentfarbe + Etikett — **ein STL, 40× drucken** (37 Phasen + 3 rot). -- **Kopplung:** 2 Flats bei x = ±47, je 1 Magnettasche Ø 6,2 × 2,2 auf Höhenmitte. - Polarität konsistent einkleben (Ausgang/Eingang). Ø6-Magnet braucht die 8 mm Dicke. - **Figuren-Mulde Ø 22, Tiefe 1,5** für Sockel **Ø 20** (reinstellbar, Fase als - Einführhilfe). 7 Mulden auf Kreis r 33, 15° gedreht (frei von der Kopplungsachse). + Einführhilfe). 7 Mulden auf Kreis r 33. - **Etikettenmulde Ø 37,5 × 0,3** — Rundetikett Ø37 (Puck-Rand bleibt sichtbar, ~3,3 mm Restwand zu den Figurenmulden). Maximal möglich wäre Ø40. - **Keine** Verankerung Ø60, **keine** Puzzle-Tabs, **kein** Gate-Tor, **keine** diff --git a/01_3D-Druck/openscad/README_openscad.md b/01_3D-Druck/openscad/README_openscad.md index ac9a9a0..737539c 100644 --- a/01_3D-Druck/openscad/README_openscad.md +++ b/01_3D-Druck/openscad/README_openscad.md @@ -6,9 +6,9 @@ Parametrische Quellmodelle der Schlüsselteile. In [OpenSCAD](https://openscad.o | Datei | Bauteil | |-------|---------| -| `puck.scad` | **Station-/Gate-Puck** (Ø100×8, 7 Figurenmulden Ø22, Etikettenmulde Ø37,5, Kopplungs-Flats + Magnettaschen Ø6) | +| `puck.scad` | **Station-/Gate-Puck** (Ø100×6, 7 Figurenmulden Ø22, Etikettenmulde Ø37,5) | | `aktiv-feld.scad` | RACI-Fläche (R · A · C · I, 2×2) — separates mobiles Board, 130×130 | -| `phasen-ring.scad` | **Phasen-Ring** (5× 72°-Segment): Übersichts-Donut ↔ Bahn-Köpfe, Magnettaschen, `phase=0..4` | +| `phasen-ring.scad` | **Phasen-Ring** (5× 72°-Segment, Ø180×6): Übersichts-Donut ↔ Bahn-Köpfe, `phase=0..4` | ## Ein Puck für die ganze Bahn diff --git a/01_3D-Druck/openscad/phasen-ring.scad b/01_3D-Druck/openscad/phasen-ring.scad index ae77eac..70eb265 100644 --- a/01_3D-Druck/openscad/phasen-ring.scad +++ b/01_3D-Druck/openscad/phasen-ring.scad @@ -4,8 +4,8 @@ // // - 1 Segment = 72°-Ringsegment in seiner Phasenfarbe (wie die Pucks). // - Beschriftung GRAVIERT (nur 5 Stueck): Phasenname + Sublabel + einfaches Icon. -// - Magnettaschen an beiden Stosskanten: Magnete einkleben -> haelt als Ring zusammen; -// ohne Magnete einfach lose aneinanderlegen (Taschen stoeren nicht). +// - KEINE Magnete: Segmente werden lose aneinandergelegt (als Ring oder als +// Phasen-Koepfe entlang der Bahn). // // EXPORT: render_mode="single" + phase=0..4 -> ein Segment je Phase als STL. // VORSCHAU: render_mode="ring" -> alle 5 farbig zusammengesetzt. @@ -17,16 +17,10 @@ phase = 0; // 0 Design · 1 Transition · 2 Operation · 3 Support /* [Ring-Geometrie] */ r_out = 90; // Aussenradius (Ø180) r_in = 42; // Innenradius (Ø84) -seg_h = 8; // Dicke (etwas dicker als Pucks -> Platz fuer Magnete in der Kante) +seg_h = 6; // Dicke (wie die Pucks) seg_ang = 72; // 360/5 gap_deg = 1.2; // kleiner Spalt zwischen Segmenten (Passung) -/* [Magnettaschen] (an den Stosskanten) */ -mag_d = 6.2; // Loch fuer Ø6-Magnet -mag_t = 2.2; // Tiefe (Ø6x2-Magnet + Spiel) -mag_r1 = 56; // Radius Tasche 1 -mag_r2 = 78; // Radius Tasche 2 - /* [Gravur] */ eng_depth = 0.8; name_size = 7; @@ -62,12 +56,6 @@ module ring_sector(a) { } } -module magnet_pocket(edge_ang, inward_ang, r) { - translate([r*cos(edge_ang), r*sin(edge_ang), seg_h/2]) - rotate([0,0,inward_ang]) rotate([0,90,0]) - translate([0,0,-0.3]) cylinder(d = mag_d, h = mag_t + 0.3, $fn = 32); -} - // --- Icons (einfache gravierte Glyphen, 2D) --------------------------------- module icon(i) { // zentriert um (0,0), ~14 mm @@ -101,15 +89,8 @@ module icon(i) { // --- ein Segment ------------------------------------------------------------ module phase_segment(idx) { a = seg_ang - gap_deg; - e0 = 90 - a/2; // untere Kante - e1 = 90 + a/2; // obere Kante difference() { ring_sector(a); - // Magnettaschen: 2 je Stosskante - magnet_pocket(e0, e0 + 90, mag_r1); - magnet_pocket(e0, e0 + 90, mag_r2); - magnet_pocket(e1, e1 - 90, mag_r1); - magnet_pocket(e1, e1 - 90, mag_r2); // Gravur (oben) translate([0,0,seg_h - eng_depth]) linear_extrude(eng_depth + 0.1) { translate([0,82]) scale(0.9) icon(idx); diff --git a/01_3D-Druck/openscad/puck.scad b/01_3D-Druck/openscad/puck.scad index 2823c05..f178ab7 100644 --- a/01_3D-Druck/openscad/puck.scad +++ b/01_3D-Druck/openscad/puck.scad @@ -9,17 +9,12 @@ // - Ring aus 7 Figurenmulden (Sockel Ø20 wird REINGESTELLT, daher Ø22) // - Mitte: flache Mulde fuer ein rundes Etikett Ø37 // -// KOPPLUNG (coupling=true): Eingang/Ausgang als abgeflachte Kontaktstelle mit je -// einer Magnettasche -> Pucks koppeln zur Kette + an die Phasen-Ring-Koepfe. -// Dafuer ist der Puck 8 mm hoch (Ø6-Magnet passt in die Kante). -// POLARITAET beim Einkleben konsistent: alle AUSGANG (+X) z.B. Nordpol nach -// aussen, alle EINGANG (-X) Suedpol nach aussen -> Nachbarn ziehen sich an. -// +// KEINE Magnete / keine Kopplung: Pucks werden lose zur Bahn ausgelegt. // Beschriftung: KEINE Gravur. ID/Phasenfarbe via Etikett Ø37 in der Mitte. /* [Puck] */ puck_d = 100; // Aussendurchmesser -puck_h = 8; // Gesamthoehe (8 -> Ø6-Magnet passt in die Kante) +puck_h = 6; // Gesamthoehe edge_cham = 1; // Fase obere Aussenkante (Optik/Griff) /* [Rand + Einbuchtung] */ @@ -32,23 +27,16 @@ spot_d = 22; // Mulden-Ø (Sockel Ø20 + Luft -> reinstellbar) spot_dep = 1.5; // Tiefe der Standmulde (zusaetzlich zur Einbuchtung) spot_ring_r = 33; // Radius des Mulden-Kreises (Mitte-Mitte) spot_lead = 0.8; // Einfuehr-Fase oben an der Mulde -spot_a0 = 15; // Winkel-Offset: keine Mulde auf der Kopplungsachse (X) /* [Etikettenmulde Mitte] — rundes Etikett Ø37 */ label_d = 37.5; // Mulden-Ø (Etikett Ø37 + 0,5 Spiel); Puck-Rand bleibt sichtbar label_dep = 0.3; // flach: Etikett sitzt plan + kantengeschuetzt -/* [Kopplung] — Magnete an Eingang/Ausgang */ -coupling = true; // Flats + Magnettaschen an +X/-X -flat_at = 47; // Abstand der Kontakt-Flache von der Mitte (Flat-Tiefe = 50-47 = 3) -mag_d = 6.2; // Loch fuer Ø6-Magnet -mag_t = 2.2; // Tiefe (Ø6x2-Magnet + Spiel) - $fn = 96; // abgeleitet play_d = puck_d - 2*rim_w; // Spielflaeche Ø90 -play_z = puck_h - recess_dep; // Hoehe der eingebuchteten Spielflaeche (6.8) +play_z = puck_h - recess_dep; // Hoehe der eingebuchteten Spielflaeche (4.8) // --- Grundkoerper mit gefaster Oberkante ------------------------------------ module puck_blank() { @@ -68,43 +56,22 @@ module figure_spot() { } } -// --- Kopplung: Flat-Schnitt + Magnettasche je Seite ------------------------ -module coupling_flat_cut() { - // entfernt Material jenseits von x = +/- flat_at -> zwei Kontakt-Flachen - for (s = [-1, 1]) - translate([s * (flat_at + 40), 0, puck_h/2]) - cube([80, puck_d + 20, puck_h + 2], center = true); -} - -module coupling_magnets() { - // +X (Ausgang): Tasche von der Flache nach innen - translate([flat_at + 0.3, 0, puck_h/2]) - rotate([0, -90, 0]) cylinder(d = mag_d, h = mag_t + 0.3, $fn = 32); - // -X (Eingang) - translate([-flat_at - 0.3, 0, puck_h/2]) - rotate([0, 90, 0]) cylinder(d = mag_d, h = mag_t + 0.3, $fn = 32); -} - module puck() { difference() { puck_blank(); - if (coupling) coupling_flat_cut(); // Einbuchtung / Spielflaeche translate([0, 0, play_z]) cylinder(d = play_d, h = recess_dep + 0.1); - // 7 Figurenmulden im Ring (mit Offset, frei von der Kopplungsachse) + // 7 Figurenmulden im Ring for (i = [0 : spot_count - 1]) { - a = spot_a0 + 360/spot_count * i; + a = 360/spot_count * i; translate([spot_ring_r*cos(a), spot_ring_r*sin(a), 0]) figure_spot(); } // Etikettenmulde Mitte translate([0, 0, play_z - label_dep]) cylinder(d = label_d, h = label_dep + 0.1); - // Magnettaschen - if (coupling) coupling_magnets(); } } puck(); echo(puck_d = puck_d, puck_h = puck_h, spielflaeche = play_d, - figurenplaetze = spot_count, spot_d = spot_d, etikett_mulde = label_d, - kopplung = coupling); + figurenplaetze = spot_count, spot_d = spot_d, etikett_mulde = label_d); From ba6a3199a76a1c7515123767779bab580a6c5d30 Mon Sep 17 00:00:00 2001 From: breitenbach76 Date: Thu, 4 Jun 2026 23:31:39 +0200 Subject: [PATCH 5/7] Phasen-Ring: je Segment eine druckfertige scad-Datei - phasen-ring.scad zur Bibliothek umgebaut: phase_segment(idx) mit Masse als Parametern, Daten als Funktionen (ph_name/ph_sub/ph_col), Farbe ins Modul. Direkt geoeffnet = ganzer Ring als Vorschau. - 5 schlanke Einzeldateien (design/transition/operation/support/review): je `use ` + phase_segment(idx) -> druckfertig, DRY. - materialliste + README_openscad auf die Einzeldateien umgestellt. Co-Authored-By: Claude Opus 4.8 --- 01_3D-Druck/materialliste.md | 10 +-- 01_3D-Druck/openscad/README_openscad.md | 3 +- 01_3D-Druck/openscad/phasen-ring-design.scad | 5 ++ .../openscad/phasen-ring-operation.scad | 5 ++ 01_3D-Druck/openscad/phasen-ring-review.scad | 5 ++ 01_3D-Druck/openscad/phasen-ring-support.scad | 5 ++ .../openscad/phasen-ring-transition.scad | 5 ++ 01_3D-Druck/openscad/phasen-ring.scad | 86 +++++++------------ 8 files changed, 62 insertions(+), 62 deletions(-) create mode 100644 01_3D-Druck/openscad/phasen-ring-design.scad create mode 100644 01_3D-Druck/openscad/phasen-ring-operation.scad create mode 100644 01_3D-Druck/openscad/phasen-ring-review.scad create mode 100644 01_3D-Druck/openscad/phasen-ring-support.scad create mode 100644 01_3D-Druck/openscad/phasen-ring-transition.scad diff --git a/01_3D-Druck/materialliste.md b/01_3D-Druck/materialliste.md index 8daf9b6..85ff10b 100644 --- a/01_3D-Druck/materialliste.md +++ b/01_3D-Druck/materialliste.md @@ -139,11 +139,11 @@ linearen Puck-Bahn — das **Design-Segment ist der Start** vor dem ersten Puck. | Verbindung | **keine** — Segmente werden lose aneinandergelegt (Ring oder Phasen-Köpfe) | | Menge | **5** (1 je Phase) | | Material | PLA, Infill 15 %, Filament je Phasenfarbe | -| Datei | `openscad/phasen-ring.scad` | +| Dateien | je Segment **eine** Datei: `phasen-ring-design/-transition/-operation/-support/-review.scad` (Geometrie in `phasen-ring.scad`) | -> Export: `render_mode="single"` + `phase=0..4` → ein Segment je Phase. -> Vorschau: `render_mode="ring"` (Preview-Modus, nicht `--render` — sonst eine -> Einheitsfarbe). +> **Druck:** je Segment die passende `phasen-ring-.scad` öffnen → F6 → STL. +> **Vorschau:** `phasen-ring.scad` direkt öffnen (Preview-Modus, nicht `--render` — +> sonst eine Einheitsfarbe) zeigt den ganzen Ring. --- @@ -153,7 +153,7 @@ linearen Puck-Bahn — das **Design-Segment ist der Start** vor dem ersten Puck. |------|------:|-------| | Station-Puck | 37 | `openscad/puck.scad` (Phasenfarbe) | | Gate-Puck | 3 | `openscad/puck.scad` (rot) | -| Phasen-Ring-Segment | 5 | `openscad/phasen-ring.scad` (je Phasenfarbe) | +| Phasen-Ring-Segment | 5 | `openscad/phasen-ring-.scad` (je Phasenfarbe) | | Aktiv-Feld (RACI-Fläche) | 1 | `openscad/aktiv-feld.scad` | | Rollen-Figuren (Einzel) | 32 | 16 Rollen × 2 | | Team-Sonderfiguren | 6 | 3 Teams × 2 | diff --git a/01_3D-Druck/openscad/README_openscad.md b/01_3D-Druck/openscad/README_openscad.md index 737539c..aae7a0c 100644 --- a/01_3D-Druck/openscad/README_openscad.md +++ b/01_3D-Druck/openscad/README_openscad.md @@ -8,7 +8,8 @@ Parametrische Quellmodelle der Schlüsselteile. In [OpenSCAD](https://openscad.o |-------|---------| | `puck.scad` | **Station-/Gate-Puck** (Ø100×6, 7 Figurenmulden Ø22, Etikettenmulde Ø37,5) | | `aktiv-feld.scad` | RACI-Fläche (R · A · C · I, 2×2) — separates mobiles Board, 130×130 | -| `phasen-ring.scad` | **Phasen-Ring** (5× 72°-Segment, Ø180×6): Übersichts-Donut ↔ Bahn-Köpfe, `phase=0..4` | +| `phasen-ring.scad` | **Phasen-Ring (Bibliothek + Vorschau)** — gemeinsame Geometrie; direkt geöffnet = ganzer Ring | +| `phasen-ring-design.scad` … `-review.scad` | **5 druckfertige Einzelsegmente** (je `use ` + `phase_segment(idx)`) | ## Ein Puck für die ganze Bahn diff --git a/01_3D-Druck/openscad/phasen-ring-design.scad b/01_3D-Druck/openscad/phasen-ring-design.scad new file mode 100644 index 0000000..1a529c9 --- /dev/null +++ b/01_3D-Druck/openscad/phasen-ring-design.scad @@ -0,0 +1,5 @@ +// Phasen-Ring · Segment 1/5 — DESIGN (blau) +// Druckfertig: F6 -> Datei/Export/STL. Filament: blau. +// Geometrie aus phasen-ring.scad (muss im selben Ordner liegen). +use +phase_segment(0); diff --git a/01_3D-Druck/openscad/phasen-ring-operation.scad b/01_3D-Druck/openscad/phasen-ring-operation.scad new file mode 100644 index 0000000..8bcee70 --- /dev/null +++ b/01_3D-Druck/openscad/phasen-ring-operation.scad @@ -0,0 +1,5 @@ +// Phasen-Ring · Segment 3/5 — OPERATION (grün) +// Druckfertig: F6 -> Datei/Export/STL. Filament: grün. +// Geometrie aus phasen-ring.scad (muss im selben Ordner liegen). +use +phase_segment(2); diff --git a/01_3D-Druck/openscad/phasen-ring-review.scad b/01_3D-Druck/openscad/phasen-ring-review.scad new file mode 100644 index 0000000..c2f1b4d --- /dev/null +++ b/01_3D-Druck/openscad/phasen-ring-review.scad @@ -0,0 +1,5 @@ +// Phasen-Ring · Segment 5/5 — REVIEW (lila) +// Druckfertig: F6 -> Datei/Export/STL. Filament: lila. +// Geometrie aus phasen-ring.scad (muss im selben Ordner liegen). +use +phase_segment(4); diff --git a/01_3D-Druck/openscad/phasen-ring-support.scad b/01_3D-Druck/openscad/phasen-ring-support.scad new file mode 100644 index 0000000..c122830 --- /dev/null +++ b/01_3D-Druck/openscad/phasen-ring-support.scad @@ -0,0 +1,5 @@ +// Phasen-Ring · Segment 4/5 — SUPPORT (teal) +// Druckfertig: F6 -> Datei/Export/STL. Filament: teal. +// Geometrie aus phasen-ring.scad (muss im selben Ordner liegen). +use +phase_segment(3); diff --git a/01_3D-Druck/openscad/phasen-ring-transition.scad b/01_3D-Druck/openscad/phasen-ring-transition.scad new file mode 100644 index 0000000..cd5a5e1 --- /dev/null +++ b/01_3D-Druck/openscad/phasen-ring-transition.scad @@ -0,0 +1,5 @@ +// Phasen-Ring · Segment 2/5 — TRANSITION (orange) +// Druckfertig: F6 -> Datei/Export/STL. Filament: orange. +// Geometrie aus phasen-ring.scad (muss im selben Ordner liegen). +use +phase_segment(1); diff --git a/01_3D-Druck/openscad/phasen-ring.scad b/01_3D-Druck/openscad/phasen-ring.scad index 70eb265..44eed4b 100644 --- a/01_3D-Druck/openscad/phasen-ring.scad +++ b/01_3D-Druck/openscad/phasen-ring.scad @@ -1,44 +1,26 @@ -// Phasen-Ring — 5 Segmente (Donut) als SLC-Uebersicht, die auseinandergenommen -// die Phasen-KOEPFE der linearen Puck-Bahn bilden (Design-Segment = Start). +// Phasen-Ring — Bibliothek + Vorschau // SLC-Workshop Tabletop · Einheiten: mm // -// - 1 Segment = 72°-Ringsegment in seiner Phasenfarbe (wie die Pucks). -// - Beschriftung GRAVIERT (nur 5 Stueck): Phasenname + Sublabel + einfaches Icon. -// - KEINE Magnete: Segmente werden lose aneinandergelegt (als Ring oder als -// Phasen-Koepfe entlang der Bahn). +// 5 Segmente (Donut) als SLC-Uebersicht, die auseinandergenommen die Phasen-KOEPFE +// der linearen Puck-Bahn bilden (Design-Segment = Start vor dem ersten Puck). +// KEINE Magnete: Segmente werden lose aneinandergelegt. // -// EXPORT: render_mode="single" + phase=0..4 -> ein Segment je Phase als STL. -// VORSCHAU: render_mode="ring" -> alle 5 farbig zusammengesetzt. +// Diese Datei ist die GEMEINSAME GEOMETRIE. Druckfertige Einzelteile sind: +// phasen-ring-design.scad · -transition.scad · -operation.scad +// -support.scad · -review.scad (rufen nur phase_segment(idx) auf) +// Direkt geoeffnet zeigt diese Datei den kompletten Ring als VORSCHAU. -/* [Render] */ -render_mode = "ring"; // "single" (Export) oder "ring" (Vorschau) -phase = 0; // 0 Design · 1 Transition · 2 Operation · 3 Support · 4 Review - -/* [Ring-Geometrie] */ -r_out = 90; // Aussenradius (Ø180) -r_in = 42; // Innenradius (Ø84) -seg_h = 6; // Dicke (wie die Pucks) -seg_ang = 72; // 360/5 -gap_deg = 1.2; // kleiner Spalt zwischen Segmenten (Passung) - -/* [Gravur] */ -eng_depth = 0.8; -name_size = 7; -sub_size = 3.4; - -$fn = 96; - -// --- Phasendaten ------------------------------------------------------------ -names = ["DESIGN", "TRANSITION", "OPERATION", "SUPPORT", "REVIEW"]; -subs = ["Planung & Architektur", "Kontrollierte Ueberfuehrung", - "Stabiler laufender Betrieb", "Nutzeranfragen & Incidents", - "Continual Improvement"]; +// --- Phasendaten (Funktionen -> per `use` importierbar) --------------------- +function ph_name(i) = ["DESIGN","TRANSITION","OPERATION","SUPPORT","REVIEW"][i]; +function ph_sub(i) = ["Planung & Architektur","Kontrollierte Ueberfuehrung", + "Stabiler laufender Betrieb","Nutzeranfragen & Incidents", + "Continual Improvement"][i]; // Phasenfarben (nur Vorschau; im Druck = Filament) -pcol = [[0.16,0.44,0.69], [0.88,0.54,0.12], [0.23,0.62,0.29], - [0.12,0.62,0.62], [0.49,0.31,0.64]]; +function ph_col(i) = [[0.16,0.44,0.69],[0.88,0.54,0.12],[0.23,0.62,0.29], + [0.12,0.62,0.62],[0.49,0.31,0.64]][i]; // --- Geometrie-Helfer ------------------------------------------------------- -module ring_sector(a) { +module ring_sector(a, r_out, r_in, seg_h) { // Ringsegment ueber Winkel a, Bisektor zeigt nach +Y (oben) a0 = 90 - a/2; a1 = 90 + a/2; @@ -58,11 +40,10 @@ module ring_sector(a) { // --- Icons (einfache gravierte Glyphen, 2D) --------------------------------- module icon(i) { - // zentriert um (0,0), ~14 mm if (i == 0) // Design: Dokument difference() { square([10,13], center=true); - translate([2.5,5.5]) rotate(45) square([6,6]); // gefaltete Ecke + translate([2.5,5.5]) rotate(45) square([6,6]); } else if (i == 1) // Transition: Pfeil nach rechts union() { @@ -80,34 +61,27 @@ module icon(i) { union() { difference() { difference(){ circle(r=6.5); circle(r=3.8); } - translate([3,3]) square([8,8]); // Luecke oben rechts + translate([3,3]) square([8,8]); } - translate([6.5,2]) polygon([[-2,0],[2,2],[2,-3]]); // Pfeilspitze + translate([6.5,2]) polygon([[-2,0],[2,2],[2,-3]]); } } -// --- ein Segment ------------------------------------------------------------ -module phase_segment(idx) { - a = seg_ang - gap_deg; +// --- ein Segment (alle Masse als Parameter mit Defaults) -------------------- +module phase_segment(idx, + r_out = 90, r_in = 42, seg_h = 6, seg_ang = 72, gap_deg = 1.2, + eng_depth = 0.8, name_size = 7, sub_size = 3.4) { + $fn = 96; + color(ph_col(idx)) difference() { - ring_sector(a); - // Gravur (oben) + ring_sector(seg_ang - gap_deg, r_out, r_in, seg_h); translate([0,0,seg_h - eng_depth]) linear_extrude(eng_depth + 0.1) { translate([0,82]) scale(0.9) icon(idx); - translate([0,66]) text(names[idx], size=name_size, - halign="center", valign="center"); - translate([0,53]) text(subs[idx], size=sub_size, - halign="center", valign="center"); + translate([0,66]) text(ph_name(idx), size=name_size, halign="center", valign="center"); + translate([0,53]) text(ph_sub(idx), size=sub_size, halign="center", valign="center"); } } } -// --- Ausgabe ---------------------------------------------------------------- -if (render_mode == "ring") { - for (i = [0:4]) - color(pcol[i]) rotate([0,0, -i*72]) phase_segment(i); -} else { - color(pcol[phase]) phase_segment(phase); -} - -echo(r_out=r_out, r_in=r_in, seg_h=seg_h, seg_ang=seg_ang); +// --- VORSCHAU (nur wenn diese Datei direkt geoeffnet wird; bei `use` ignoriert) +for (i = [0:4]) rotate([0,0, -i*72]) phase_segment(i); From 677d414a2ed7fb7efd9693fda8b51ca76df4963b Mon Sep 17 00:00:00 2001 From: breitenbach76 Date: Thu, 4 Jun 2026 23:40:22 +0200 Subject: [PATCH 6/7] Phasen-Ring: neue Sublabels (2-zeilig), Icons entfernt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ph_sub als 2-Zeilen-Listen mit neuen Texten: Design "Planung & Architektur eines Services", Transition "Ueberfuehrung des Services in den Betrieb", Operation "Stabil laufender Betrieb des Services", Support "Nutzeranfragen & Incidents im laufenden Service", Review "Kontinuierliche Verbesserung des laufenden Services". - icon()-Modul entfernt, Gravur = nur Name + Sublabel. - materialliste §7 nachgezogen. Co-Authored-By: Claude Opus 4.8 --- 01_3D-Druck/materialliste.md | 2 +- 01_3D-Druck/openscad/phasen-ring.scad | 53 +++++++++------------------ 2 files changed, 18 insertions(+), 37 deletions(-) diff --git a/01_3D-Druck/materialliste.md b/01_3D-Druck/materialliste.md index 85ff10b..800c5a9 100644 --- a/01_3D-Druck/materialliste.md +++ b/01_3D-Druck/materialliste.md @@ -134,7 +134,7 @@ linearen Puck-Bahn — das **Design-Segment ist der Start** vor dem ersten Puck. | Merkmal | Wert | |---------|------| | Form | Ringsegment 72°, **Ø 180 außen / Ø 84 innen × 6 mm** | -| Beschriftung | **graviert** (nur 5 Stück): Phasenname + Sublabel + Icon | +| Beschriftung | **graviert** (nur 5 Stück): Phasenname + Sublabel (2 Zeilen), keine Icons | | Farbe | je Phase (blau/orange/grün/teal/lila) — wie die Pucks | | Verbindung | **keine** — Segmente werden lose aneinandergelegt (Ring oder Phasen-Köpfe) | | Menge | **5** (1 je Phase) | diff --git a/01_3D-Druck/openscad/phasen-ring.scad b/01_3D-Druck/openscad/phasen-ring.scad index 44eed4b..ecc6ef8 100644 --- a/01_3D-Druck/openscad/phasen-ring.scad +++ b/01_3D-Druck/openscad/phasen-ring.scad @@ -12,9 +12,14 @@ // --- Phasendaten (Funktionen -> per `use` importierbar) --------------------- function ph_name(i) = ["DESIGN","TRANSITION","OPERATION","SUPPORT","REVIEW"][i]; -function ph_sub(i) = ["Planung & Architektur","Kontrollierte Ueberfuehrung", - "Stabiler laufender Betrieb","Nutzeranfragen & Incidents", - "Continual Improvement"][i]; +// Sublabel je Phase als Zeilen-Liste (2 Zeilen, damit es ins Segment passt) +function ph_sub(i) = [ + ["Planung & Architektur", "eines Services"], + ["Überführung des Services", "in den Betrieb"], + ["Stabil laufender Betrieb", "des Services"], + ["Nutzeranfragen & Incidents", "im laufenden Service"], + ["Kontinuierliche Verbesserung", "des laufenden Services"] +][i]; // Phasenfarben (nur Vorschau; im Druck = Filament) function ph_col(i) = [[0.16,0.44,0.69],[0.88,0.54,0.12],[0.23,0.62,0.29], [0.12,0.62,0.62],[0.49,0.31,0.64]][i]; @@ -38,47 +43,23 @@ module ring_sector(a, r_out, r_in, seg_h) { } } -// --- Icons (einfache gravierte Glyphen, 2D) --------------------------------- -module icon(i) { - if (i == 0) // Design: Dokument - difference() { - square([10,13], center=true); - translate([2.5,5.5]) rotate(45) square([6,6]); - } - else if (i == 1) // Transition: Pfeil nach rechts - union() { - translate([-6,-1.6]) square([9,3.2]); - translate([3,0]) polygon([[0,-5],[6,0],[0,5]]); - } - else if (i == 2) // Operation: Zahnkranz (Ring) - difference() { circle(r=6.5); circle(r=3.2); } - else if (i == 3) // Support: Sprechblase - union() { - translate([0,1]) square([13,9], center=true); - translate([-4,-3.5]) polygon([[0,0],[5,0],[0,-4]]); - } - else // Review: Kreis-Pfeil (Loop) - union() { - difference() { - difference(){ circle(r=6.5); circle(r=3.8); } - translate([3,3]) square([8,8]); - } - translate([6.5,2]) polygon([[-2,0],[2,2],[2,-3]]); - } -} - // --- ein Segment (alle Masse als Parameter mit Defaults) -------------------- module phase_segment(idx, r_out = 90, r_in = 42, seg_h = 6, seg_ang = 72, gap_deg = 1.2, - eng_depth = 0.8, name_size = 7, sub_size = 3.4) { + eng_depth = 0.8, name_size = 7, sub_size = 3.0) { $fn = 96; + sub = ph_sub(idx); color(ph_col(idx)) difference() { ring_sector(seg_ang - gap_deg, r_out, r_in, seg_h); translate([0,0,seg_h - eng_depth]) linear_extrude(eng_depth + 0.1) { - translate([0,82]) scale(0.9) icon(idx); - translate([0,66]) text(ph_name(idx), size=name_size, halign="center", valign="center"); - translate([0,53]) text(ph_sub(idx), size=sub_size, halign="center", valign="center"); + // Phasenname + translate([0,70]) text(ph_name(idx), size=name_size, + halign="center", valign="center"); + // Sublabel (mehrzeilig) + for (k = [0 : len(sub) - 1]) + translate([0, 57 - k*10]) + text(sub[k], size=sub_size, halign="center", valign="center"); } } } From 6c6ffffd1dcac7c60d3778be208e884f7ea5b330 Mon Sep 17 00:00:00 2001 From: breitenbach76 Date: Thu, 4 Jun 2026 23:43:51 +0200 Subject: [PATCH 7/7] Phasen-Ring: nur noch Phasenname (Sublabels weg), groesser + mittig MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ph_sub entfernt; Gravur = nur Phasenname, mittig im Band. - Groesse 7->9, Tiefe 0,8->1,0 fuer bessere Lesbarkeit. - materialliste §7 nachgezogen. Co-Authored-By: Claude Opus 4.8 --- 01_3D-Druck/materialliste.md | 2 +- 01_3D-Druck/openscad/phasen-ring.scad | 24 +++++------------------- 2 files changed, 6 insertions(+), 20 deletions(-) diff --git a/01_3D-Druck/materialliste.md b/01_3D-Druck/materialliste.md index 800c5a9..fa67c49 100644 --- a/01_3D-Druck/materialliste.md +++ b/01_3D-Druck/materialliste.md @@ -134,7 +134,7 @@ linearen Puck-Bahn — das **Design-Segment ist der Start** vor dem ersten Puck. | Merkmal | Wert | |---------|------| | Form | Ringsegment 72°, **Ø 180 außen / Ø 84 innen × 6 mm** | -| Beschriftung | **graviert** (nur 5 Stück): Phasenname + Sublabel (2 Zeilen), keine Icons | +| Beschriftung | **graviert**: nur Phasenname, mittig im Band (Größe 9, Tiefe 1,0); keine Sublabels/Icons | | Farbe | je Phase (blau/orange/grün/teal/lila) — wie die Pucks | | Verbindung | **keine** — Segmente werden lose aneinandergelegt (Ring oder Phasen-Köpfe) | | Menge | **5** (1 je Phase) | diff --git a/01_3D-Druck/openscad/phasen-ring.scad b/01_3D-Druck/openscad/phasen-ring.scad index ecc6ef8..12a79f5 100644 --- a/01_3D-Druck/openscad/phasen-ring.scad +++ b/01_3D-Druck/openscad/phasen-ring.scad @@ -12,14 +12,6 @@ // --- Phasendaten (Funktionen -> per `use` importierbar) --------------------- function ph_name(i) = ["DESIGN","TRANSITION","OPERATION","SUPPORT","REVIEW"][i]; -// Sublabel je Phase als Zeilen-Liste (2 Zeilen, damit es ins Segment passt) -function ph_sub(i) = [ - ["Planung & Architektur", "eines Services"], - ["Überführung des Services", "in den Betrieb"], - ["Stabil laufender Betrieb", "des Services"], - ["Nutzeranfragen & Incidents", "im laufenden Service"], - ["Kontinuierliche Verbesserung", "des laufenden Services"] -][i]; // Phasenfarben (nur Vorschau; im Druck = Filament) function ph_col(i) = [[0.16,0.44,0.69],[0.88,0.54,0.12],[0.23,0.62,0.29], [0.12,0.62,0.62],[0.49,0.31,0.64]][i]; @@ -46,21 +38,15 @@ module ring_sector(a, r_out, r_in, seg_h) { // --- ein Segment (alle Masse als Parameter mit Defaults) -------------------- module phase_segment(idx, r_out = 90, r_in = 42, seg_h = 6, seg_ang = 72, gap_deg = 1.2, - eng_depth = 0.8, name_size = 7, sub_size = 3.0) { + eng_depth = 1.0, name_size = 9) { $fn = 96; - sub = ph_sub(idx); color(ph_col(idx)) difference() { ring_sector(seg_ang - gap_deg, r_out, r_in, seg_h); - translate([0,0,seg_h - eng_depth]) linear_extrude(eng_depth + 0.1) { - // Phasenname - translate([0,70]) text(ph_name(idx), size=name_size, - halign="center", valign="center"); - // Sublabel (mehrzeilig) - for (k = [0 : len(sub) - 1]) - translate([0, 57 - k*10]) - text(sub[k], size=sub_size, halign="center", valign="center"); - } + // Phasenname, mittig im Band (Radius ~66) + translate([0, (r_in + r_out)/2, seg_h - eng_depth]) + linear_extrude(eng_depth + 0.1) + text(ph_name(idx), size=name_size, halign="center", valign="center"); } }