diff --git a/01_3D-Druck/README_3d-druck.md b/01_3D-Druck/README_3d-druck.md
index f3b404b..0d59569 100644
--- a/01_3D-Druck/README_3d-druck.md
+++ b/01_3D-Druck/README_3d-druck.md
@@ -18,11 +18,21 @@ Verankerung und Steckmechanik.
## Grundsätzliche Design-Entscheidungen
-- **Modulares Tile-System** statt eines großen Boards — jedes Teil passt auf ein übliches Druckbett (≥ 200 × 200 mm).
-- **Lineare Bahn** (kein Ring) — Tiles werden zu einer durchgehenden Linie aneinandergereiht, bei Platzmangel mäandrierend.
-- **Eine standardisierte Verankerung** (Ø 60 mm Rundsockel) für *alle* Blanko-Scheiben und für den Action-Stein → Teile sind austauschbar.
-- **Steckverbindungen** (Puzzle-Tabs) zwischen Tiles, damit die Bahn stabil zusammenhält und flexibel gelegt werden kann.
-- **Materialempfehlung:** PLA für Tiles/Plättchen/Gates (formstabil, günstig), PLA + Gewichtseinlage (M8-Mutter) für den Action-Stein (Standfestigkeit mit aufrechter Karte).
+- **Ein Puck pro Station** (Ø 100 × 6 mm rund) statt eckigem Tile + separater Scheibe.
+ 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 —
+ Unterschied nur Filamentfarbe (Phase vs. Rot) + aufgeklebtes Etikett. Einmal slicen,
+ 40× drucken (37 Phasen + 3 Gate).
+- **Lineare Bahn** (kein Ring) — Pucks werden zu einer Linie ausgelegt, bei Platzmangel
+ mäandrierend; als optische Linie dient eine flache Unterlage/Matte ([`board-layout.svg`](board-layout.svg)).
+- **Beschriftung via Rundetikett Ø 37** in der Mittenmulde (Puck-Rand bleibt sichtbar) —
+ wiederverwendbar, korrigierbar, mehrsprachig; Pucks bleiben blanko. (Ø 37 ist kein
+ 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).
## Drucker-Annahmen
diff --git a/01_3D-Druck/bauteile-masse.svg b/01_3D-Druck/bauteile-masse.svg
index 2ab02fd..aaefea2 100644
--- a/01_3D-Druck/bauteile-masse.svg
+++ b/01_3D-Druck/bauteile-masse.svg
@@ -129,7 +129,7 @@
R
-
+
A
@@ -144,7 +144,7 @@
~236
74 × 6 mm · R/C/I je 4 (2×2) · A = genau 1 (schematisch)
- Ø18 (A Ø22) · Pitch 24 (Sockel Ø20) · keine Löcher
+ Ø22 (alle gleich, wie Puck) · Pitch 24 (Sockel Ø20) · keine Löcher
diff --git a/01_3D-Druck/materialliste.md b/01_3D-Druck/materialliste.md
index 9d0eb90..8d6ccc3 100644
--- a/01_3D-Druck/materialliste.md
+++ b/01_3D-Druck/materialliste.md
@@ -1,196 +1,162 @@
# Materialliste — zu druckende Elemente
-Stand: 2026-05-27 · Maße in mm · Mengen für **ein** Workshop-Set.
+Stand: 2026-06-04 · Maße in mm · Mengen für **ein** Workshop-Set.
+
+> **Designwechsel ggü. v0.6:** Die eckigen Tiles (100×100) + separaten Ø60-Scheiben
+> + eckigen Gate-Tiles + Gate-Tore sind **ersetzt durch einen runden Ø100-Puck**.
+> Ein Puck markiert die Station, nimmt die beteiligten Figuren auf (7 Mulden) und
+> trägt die Beschriftung als **Avery-Rundetikett Ø40** in der Mitte. Station- und
+> Gate-Puck sind **dasselbe Druckteil** (Unterschied: Filamentfarbe + Etikett).
## Standard-Schnittstelle (für alle Teile gültig)
-- **Verankerung (Sockel):** zylindrische Vertiefung **Ø 60 mm, Tiefe 4 mm**, mit
- 0,4 mm Spielpassung. Sowohl die Blanko-Scheibe (Ø 60) als auch der
- Action-Stein-Fuß (Ø 59) passen hinein.
-- **Tile-Steckverbindung:** Puzzle-Tab **12 mm breit, 6 mm tief**, mittig je Kante.
-- **Figuren-Platzierung:** Figuren werden **gestellt, nicht gesteckt** (flacher
- Standfuß **Ø 20 mm**, kein Pin). Standorte sind als **flache Standfelder**
- (Ø 18 mm, Gravur ~0,6 mm) am **Aktiv-Feld** und an den **Gate-Toren** markiert —
- keine Löcher.
+- **Station = Puck:** runde Scheibe **Ø 100 × 6 mm**, 5 mm Rand, leichte Einbuchtung
+ (Spielfläche Ø 90). Keine Verankerung Ø60, keine Steckverbindung mehr.
+- **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).
+- **Beschriftung:** **Rundetikett Ø 37** in der Mittenmulde Ø 37,5. Keine Gravur —
+ ID/Farbe trägt das Etikett. (Ø 37 ist kein Avery-Standard — Avery rund = 30/40;
+ Bezugsquelle vor Kauf prüfen, ggf. anderer Hersteller oder Print-&-Cut.)
---
-## 1. Phasen-Basistiles (lineare Bahn)
+## 1. Station-Puck (lineare Bahn)
| Merkmal | Wert |
|---------|------|
-| Grundfläche | 100 × 100 × 6 mm |
-| Verankerung | zentriert, Ø 60 × 4 mm |
-| Kanten | Puzzle-Tabs (Tab/Slot abwechselnd) |
+| 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) |
+| Etikettenmulde | mittig Ø 37,5 × 0,3 mm (Rundetikett Ø37; Puck-Rand bleibt sichtbar) |
| Farbe | je Phase (blau/orange/grün/teal/lila) |
-| Menge | **37** (eine je Aktivität; die 3 Gate-Positionen sind **Gate-Tiles**, s. §4b) |
+| Menge | **37** (eine je Aktivität) |
| Material | PLA, Infill 15 % |
-| Druckzeit | ~1,5 h/Tile |
-
-> Tiles bleiben bewusst **clean** (nur Verankerung + Tabs). Die Rollen-Platzierung
-> übernimmt das mobile **Aktiv-Feld** (Abschnitt 4a), das neben dem Action-Stein steht.
+| Druckzeit | ~1,3 h/Puck |
+| Datei | `openscad/puck.scad` |
**Verteilung nach Phasenfarbe** (= Aktivitäten je Phase):
-| Phase | Farbe | Aktivitäten | Tiles |
+| Phase | Farbe | Aktivitäten | Pucks |
|-------|-------|-------------|:---:|
| Design | blau | ds_01–ds_04 | 4 |
| Transition | orange | tr_02–tr_08, tr_10, tr_11 | 9 |
| Operation | grün | op_01–op_07 | 7 |
| Support | teal | sp_01–sp_11 | 11 |
| Review | lila | rv_01–rv_06 | 6 |
-| | | **Σ Phasen-Basistile** | **37** |
+| | | **Σ Station-Pucks** | **37** |
-Die 3 Gates (tr_01, tr_09, tr_12) sind **Gate-Tiles** (eigene Farbe, §4b) → 3 Stück.
+Die 3 Gates (tr_01, tr_09, tr_12) sind **Gate-Pucks** (gleiches Teil, rot, §2) → 3 Stück.
**Bahn gesamt = 37 + 3 = 40 Positionen.**
-Alle Tiles sind **gerade** und werden zu einer **linearen Bahn** aneinandergereiht
-(kein Ring). Bei Platzmangel kann die Bahn mäandrierend (Zeilenumbruch) gelegt
-werden — die Puzzle-Tabs erlauben auch 90°-Ecken.
+Die Pucks werden zu einer **linearen Bahn** ausgelegt (kein Ring), bei Platzmangel
+mäandrierend. Als optische Linie + Halt empfiehlt sich eine **flache Unterlage/Matte**
+(Layout liegt als [`board-layout.svg`](board-layout.svg) vor) — die Pucks markieren
+darauf die Stationen.
-## 2. Aktivitäts-Scheibe (blanko + Aufkleber)
+## 2. Gate-Puck (Gate-Position)
+
+**Identisches Druckteil wie der Station-Puck** — Unterschied nur:
| Merkmal | Wert |
|---------|------|
-| Form | Rundscheibe **Ø 60 × 4 mm**, plane Oberseite (passt in Verankerung Ø 60) |
-| Beschriftung | **60-mm-Rundaufkleber** mit ID + Kurzbezeichnung (z. B. `op_05 — Überwachen der Services`), plan aufgeklebt. **Keine Gravur.** Erklärung liegt in der App |
-| Griff | umlaufende Fase 1 mm zum leichten Herausnehmen |
-| Menge | **37** (alle identisch & blanko; an den 3 Gate-Positionen steht stattdessen ein Gate-Tor) |
-| Material | PLA, einheitlich blanko (Phasenfarbe & Text trägt der Aufkleber) |
+| Geometrie | wie Station-Puck (`openscad/puck.scad`) |
+| Farbe | **Rot** (klar von den 5 Phasenfarben abgesetzt) |
+| Etikett | **G1 / G2 / G3** + Entscheidungs-Icon (statt Aktivitäts-ID) |
+| Figurenplätze | dieselben 7 Mulden (deckt SOR-Gremium ~5 + Puffer ab) |
+| Menge | **3** (Gate 1, 2, 3) |
+| Material | PLA, Infill 15 %, rotes Filament |
-> **Vorteil Aufkleber:** Scheiben sind identisch und **wiederverwendbar** — neu
-> bekleben für andere Aktivitäten, Korrekturen oder Mehrsprachigkeit; keine
-> Serien-STLs/Gravur nötig. Aufkleber Ø 58 sitzt plan, Ø 60 überdeckt die obere
-> Fase leicht.
-> Scheibe bleibt entnehmbar: beim Bearbeiten herausnehmen und den Action-Stein in
-> die Verankerung stellen („wir sind hier"). Die ausführliche Auflösung kommt über
-> die Companion-App.
+> Es gibt **kein Gate-Tor und keine Gate-Karte** mehr. Gate-Logik (Keeper,
+> geforderte Artefakte, Auflösung) läuft über die **App**; die Entscheidung fällt
+> ü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)
| Merkmal | Wert |
|---------|------|
-| Fuß | Ø 59 × 5 mm (sitzt in Verankerung Ø 60) |
+| 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, zum Draufstecken) |
+| 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 |
-## 4. Gate-Tore
+> 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.
+
+## 4. Aktiv-Feld (RACI-Fläche)
+
+Bleibt **unverändert** als separates, mobiles Board neben dem Action-Stein. 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".
| Merkmal | Wert |
|---------|------|
-| Form | Bogen/Tor, lichte Weite **68 mm**, Gesamtbreite **92 mm**, Höhe 100 mm + 14 mm Querbalken, Materialstärke 8 mm |
-| Stecksockel | **2 Zapfen** (Ø 10 × 5 mm, Abstand **80 mm** = Pfostenmitten) → stecken in die **Gate-Tile-Löcher**. Keine eigenen Füße — das Gate-Tile ist der Standfuß |
-| Kartenschlitz | oben quer, Breite 65 mm, Tiefe 3 mm (Gate-Beschreibungskarte) |
-| Gravur | **keine feste** — Gate-Nr / Keeper / Pfade trägt die eingesteckte Gate-Karte |
-| Menge | **3** |
-| Material | PLA, Infill 20 % |
-
-> Die Figuren stehen auf dem **Gate-Tile** (§4b), nicht am Tor. Hinweis: hoher Bogen
-> auf 2 Zapfen in 6-mm-Tile → Standfestigkeit am Funktionsmuster prüfen; bei Bedarf
-> auf flache Steck-Laschen umstellen.
-
-## 4a. Aktiv-Feld (RACI-Fläche)
-
-Flache Platte, die **neben dem Action-Stein** liegt und mit ihm weiterwandert.
-Hier werden die je Aktivität beteiligten Rollen-Figuren nach **RACI** gestellt —
-RACI wird so **pro Schritt** sichtbar, ohne die Tiles zu verändern.
-
-| Merkmal | Wert |
-|---------|------|
-| Grundkörper | **~236 × 74 × 6 mm**, Ecken r5 |
-| Bereiche | **R · A · C · I** — 4 abgetrennte Felder (eingravierte Umrandung), **symmetrisch** |
-| Standfelder | **R / C / I: je 4 (2×2)** · **A: genau 1** (zentrales, größeres Feld Ø 22) = **13 gesamt**; flache Markierung Ø 18 mm (A Ø 22), Gravur ~0,6 mm, Pitch 24 mm (für Sockel Ø 20, keine Löcher) |
-| Gravur | Feld-Umrandung 0,6 mm + Zonen-Buchstabe R / A / C / I je Feld, Tiefe 0,8 mm |
+| Grundkörper | **120 × 120 × 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 |
+| 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 % |
+| Datei | `openscad/aktiv-feld.scad` |
-> **Goldene RACI-Regel: A = genau 1.** Das A-Feld hat bewusst **nur ein** (größeres,
-> zentrales) Standfeld — je Aktivität ist genau eine Rolle *Accountable*
-> (`spm_rollen.yaml`). R / C / I haben je 4 Felder (2×2) und decken die reale
-> Belegung ab (R bis 3, C bis 4, I bis 2). Alle vier Bereiche sind außen
-> gleich groß; nicht jede Fläche muss belegt sein.
-> Optional: Rastnase, damit die Platte an den Action-Stein-Fuß andockt.
+> **Goldene RACI-Regel: A = genau 1.** Je Aktivität ist genau eine Rolle *Accountable*.
-## 4b. Gate-Tile (Gate-Position)
-
-Einheitliches Tile für **alle 3 Gates** — gleiche Außenmaße wie ein Aktivitäts-Tile,
-aber **eigene Farbe**. Das Gate-Tor steckt ein; die Figuren stehen auf dem Tile.
-
-| Merkmal | Wert |
-|---------|------|
-| Grundkörper | **100 × 100 × 6 mm**, Ecken r3, Puzzle-Tabs (wie Aktivitäts-Tile) |
-| Farbe | **eigene Gate-Farbe** (z. B. Rot/Dunkelgrau) — klar von den Phasenfarben unterscheidbar |
-| Standfelder | **8 generische** flache Markierungen (Ø 18, Gravur ~0,6) im Ring (Ø 62) — für die Figuren (Sockel Ø 20) |
-| Gate-Stecksockel | **2 Löcher** Ø 10,4 × 5 mm, Abstand **80 mm**, nahe der Eingangskante (für die Gate-Tor-Zapfen) |
-| Gravur | **nur Entscheidungs-Icon** mittig (3 Pfeile + Fragezeichen) — **keine Beschriftung/Text** |
-| Menge | **3** (Gate 1, 2, 3 — Modell identisch) |
-| Material | PLA, Infill 20 % |
-| Datei | `openscad/gate-tile.scad` |
-
-> Besetzung (über App/Gate-Karte, Tile selbst neutral): **Gate 1 & 3 = SOR-Gremium**
-> (SPM + OP + SSM + SHM + SO ≈ 5 Figuren), **Gate 2 = SO allein** (1). 8 Standfelder
-> decken das mit Puffer ab.
-
-## 5. Rollen-Figuren
-
-| Merkmal | Wert |
-|---------|------|
-| Form | Figur **Höhe ~50 mm**, **flacher Standfuß (kein Pin)** — wird auf die Standfelder gestellt |
-| Standfläche | rund **Ø 20 mm** (< Pitch 24 mm), damit mehrere Figuren nebeneinander stehen |
-| Codierung | Farbe je **Kategorie** (6): Governance Gold · Umfeld/Auftraggeber Bordeaux · Management Blau · Operative Grau · Externe Weiß · Teams Grün. **Exakte Töne frei — nur Unterscheidbarkeit zählt** (gilt für alle Elemente) |
-| Team-Sonderfiguren | **mehrere Mini-Figuren auf einem Sockel** (Betrieb, Support, Projekt) — klar als Team erkennbar |
-| Menge | **je Figur 2×** → **32** Einzelrollen (16 × 2) + **6** Team-Figuren (3 × 2) = **38**. (1× fürs RACI-Board, 1× für Gates/Bahn.) SOR ist ein Gremium, keine Figur. Details `../02_Spielfiguren/` |
-| Material | PLA, eingefärbt je Kategorie |
-
-## 6. Entscheidungs-Chips (optional 3D statt Karte)
+## 5. Entscheidungs-Chips
| Merkmal | Wert |
|---------|------|
| Form | Münze Ø 30 × 4 mm, Symbolgravur |
| Varianten | Go / Go mit Auflagen / Zurück / Ablehnung |
-| Menge | je 3 |
+| Menge | je 3 (= 12) |
| Material | PLA |
+## 6. Rollen-Figuren
+
+| Merkmal | Wert |
+|---------|------|
+| Form | Figur **Höhe ~50 mm**, **flacher Standfuß (kein Pin)** |
+| Standfläche | rund **Ø 20 mm** (passt in Puck-Mulde Ø 22 und Aktiv-Feld-Standfeld Ø 22) |
+| Codierung | Farbe je **Kategorie** (6): Governance Gold · Umfeld/Auftraggeber Bordeaux · Management Blau · Operative Grau · Externe Weiß · Teams Grün |
+| Team-Sonderfiguren | mehrere Mini-Figuren auf einem Sockel (Betrieb, Support, Projekt) |
+| Menge | je Figur 2× → **32** Einzelrollen (16 × 2) + **6** Team-Figuren (3 × 2) = **38** |
+| Material | PLA, eingefärbt je Kategorie |
+
---
## Stückliste (Kurzfassung)
| Teil | Menge | Datei |
|------|------:|-------|
-| Phasen-Basistile | 37 | `openscad/aktivitaets-tile.scad` |
-| Gate-Tile | 3 | `openscad/gate-tile.scad` |
-| Aktivitäts-Scheibe (blanko) | 37 | `openscad/aktivitaets-plaque.scad` + 60-mm-Aufkleber |
+| 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` |
-| Gate-Tor | 3 | `openscad/gate-tor.scad` |
-| Rollen-Figuren (Einzel) | 32 | 16 Rollen × 2 (RACI-Board + Bahn/Gates) |
+| Rollen-Figuren (Einzel) | 32 | 16 Rollen × 2 |
| 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 |
## Kritische Maße & Passungen (bitte prüfen)
-Diese Maße sind aktuell (v0.6) und weichen vom **ersten Entwurf** ab — bitte die
-neuesten OpenSCAD-Modelle verwenden, nicht ältere:
-
-- **Verankerung im Tile = Ø 60** (früher Ø 50!). Sie nimmt **beides** auf: die
- **Blanko-Scheibe Ø 60** und den **Action-Stein-Fuß Ø 59**. Mit Ø-50-Tiles passt
- nichts → unbedingt die aktuelle `aktivitaets-tile.scad` nutzen.
-- **Figuren: Sockel Ø 20, Höhe ~50 mm, KEIN Pin** (Figuren werden gestellt).
-- **Standfelder** (Aktiv-Feld, Gate-Tile) sind **flache Gravur-Markierungen
- Ø 18** (kein Loch); Aktiv-Feld-Raster **Pitch 24**, A-Feld einzeln Ø 22;
- Gate-Tile **8 Standfelder** im Ring (Ø 62).
-- **Gate ↔ Gate-Tile Steckung:** Gate-Tor (Gesamtbreite **92**) hat **2 Zapfen Ø 10**,
- Gate-Tile **2 Löcher Ø 10,4**, Abstand **80 mm** (Pfostenmitten). Einzige echten
- „Löcher" im Set.
-- **Action-Stein-Kartenschlitz B 64** (für 60-mm-Karte); **Gate-Kartenschlitz B 65**.
-- **Bahn = 40 Positionen:** 37 Phasen-Basistile + 3 Gate-Tiles (Gate 1/2/3); Gate-Tore 3.
+- **Puck = einziges Bahn-Teil** (Ø 100 × 6). Station vs. Gate nur über Filamentfarbe
+ + Etikett — **ein STL, 40× drucken** (37 Phasen + 3 rot).
+- **Figuren-Mulde Ø 22, Tiefe 1,5** für Sockel **Ø 20** (reinstellbar, Fase als
+ 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**
+ Gate-Karte mehr.
+- **Action-Stein-Kartenschlitz B 64** (für 60-mm-Karte).
## Hinweise für den Producer
-- Toleranzen Verankerung/Scheibe und Gate-Zapfen/Loch an **einem Probedruck** kalibrieren (Drucker-spezifisch).
-- Gravurtiefe 0,6–1,0 mm; Aktivitäts-Scheiben sind **blanko** (Text/Farbe via 60-mm-Aufkleber).
-- Farbtrennung über Filamentwechsel; **exakte Töne frei — nur klar unterscheidbar** (Phasen 5 Farben, Figuren-Kategorien 5 + Teams grün).
+- Toleranzen Sockel↔Puck-Mulde und Etikett↔Mulde an **einem Probedruck** kalibrieren.
+- Gravurtiefe (nur noch Aktiv-Feld, Chips) 0,6–1,0 mm; Pucks sind **blanko**
+ (ID/Farbe via Avery-Etikett Ø40).
+- Farbtrennung über Filamentwechsel; **exakte Töne frei — nur klar unterscheidbar**
+ (Phasen 5 Farben, Gate rot, Figuren-Kategorien 5 + Teams grün).
diff --git a/01_3D-Druck/openscad/README_openscad.md b/01_3D-Druck/openscad/README_openscad.md
index 62aa03e..7d2fb3f 100644
--- a/01_3D-Druck/openscad/README_openscad.md
+++ b/01_3D-Druck/openscad/README_openscad.md
@@ -6,24 +6,49 @@ Parametrische Quellmodelle der Schlüsselteile. In [OpenSCAD](https://openscad.o
| Datei | Bauteil |
|-------|---------|
-| `aktivitaets-tile.scad` | Phasen-Basistile (100×100, Verankerung Ø60, Puzzle-Tabs) |
-| `aktivitaets-plaque.scad` | Blanko-Scheibe (Ø60) für 60-mm-Rundaufkleber — keine Gravur |
-| `action-stein.scad` | Szenario-Träger mit Kartenschlitz + M8-Gewichtsaussparung |
-| `gate-tor.scad` | Gate-Tor (Bogen) mit Kartenschlitz + 2 Stecksockel-Zapfen |
-| `gate-tile.scad` | Gate-Tile (100×100, eigene Farbe): 8 Standfelder, Gate-Stecksockel, Entscheidungs-Icon |
+| `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 |
-## Serienfertigung der Scheiben
+## Ein Puck für die ganze Bahn
-`aktivitaets-plaque.scad` ist **blanko** — alle **37 Scheiben sind identisch**
-(einmal rendern, 37× drucken). Kein Text-Override, keine Serien-STLs mehr nötig.
+`puck.scad` ist **das einzige Bahn-Teil**. Station- und Gate-Puck sind **geometrisch
+identisch** — der Unterschied ist nur:
-Die Beschriftung läuft über **60-mm-Rundaufkleber**: Ein kleines Skript liest die
-`service-lifecycle_*.yaml` und erzeugt einen **Aufkleberbogen** (ID + Kurzbezeichnung,
-Phasenfarbe) als PDF — analog zur Kartengenerierung. Vorteil: wiederverwendbar,
-korrigierbar, mehrsprachig.
+- **Filamentfarbe:** Station = Phasenfarbe (blau/orange/grün/teal/lila), Gate = **Rot**.
+- **Etikett:** Station = ID (`op_05`), Gate = `G1` / `G2` / `G3` + Entscheidungs-Icon.
+
+→ **Einmal slicen, 40× drucken** (37 Phasen-Pucks + 3 Gate-Pucks). Keine Serien-STLs,
+keine Gravur, keine separaten Aktivitäts-Scheiben mehr.
+
+## Beschriftung: Rundetiketten Ø37
+
+Die Beschriftung läuft über **runde Etiketten Ø37** in der Mittenmulde (Ø37,5) —
+der Puck-Rand bleibt rundherum sichtbar:
+
+- **Ablösbar bevorzugt** (korrigierbar/wiederverwendbar); Folie für mehr Abrieb.
+- **Hinweis:** Ø37 ist kein Avery-Standardmaß (Avery rund = 30/40). Bezugsquelle vor
+ Kauf prüfen — ggf. anderer Hersteller oder selbst per Print-&-Cut schneiden.
+
+Ein kleines Skript liest die `service-lifecycle_*.yaml` und erzeugt einen
+**Etikettenbogen** (ID + Phasenfarbe) — analog zur Kartengenerierung.
+Vorteil: wiederverwendbar, korrigierbar, mehrsprachig; die Pucks bleiben blanko.
+
+## Ersetzte Modelle (entfernt)
+
+Mit dem Wechsel auf den Puck sind weggefallen:
+`aktivitaets-tile.scad` (eckiges Tile), `aktivitaets-plaque.scad` (Ø60-Scheibe),
+`gate-tile.scad` (eckiges Gate-Tile) und `gate-tor.scad` (Torbogen + Gate-Karte).
+Begründung: Der Ø100-Puck vereint Station-Markierung, Figuren-Standorte und
+Beschriftung in **einem** Teil; die Gate-Karte ist durch App + Entscheidungs-Chips
+abgedeckt. (Historie in der Git-Geschichte.)
## Hinweise
-- Gravur-Text bewusst kurz halten; lange Kurzbeschreibungen ggf. auf Label auslagern.
-- Umlaute in Gravuren je nach Font kritisch — im Zweifel `ae/oe/ue` verwenden (so in den Vorlagen).
-- Vor Serienstart **ein** Tile + Plättchen + Stein als Passungs-Funktionsmuster drucken.
+- **Figuren werden reingestellt:** Mulden Ø22 für Sockel Ø20, Tiefe 1,5 mm mit
+ Einführ-Fase. 7 Mulden im Ring (r 33) — Abstand der Mulden ~6,6 mm.
+- **Etikettenmulde Ø37,5 × 0,3 mm** flach — Etikett sitzt plan, Rand schützt die
+ Kante vorm Abpellen, Puck-Rand bleibt sichtbar (~3,3 mm zu den Figurenmulden).
+ Maximal möglich wäre Ø40.
+- Vor Serienstart **ein** Puck + Figur + Etikett als Passungs-Funktionsmuster drucken
+ (Sockel↔Mulde, Etikett↔Mulde).
diff --git a/01_3D-Druck/openscad/aktiv-feld.scad b/01_3D-Druck/openscad/aktiv-feld.scad
index 1278ee6..00868a8 100644
--- a/01_3D-Druck/openscad/aktiv-feld.scad
+++ b/01_3D-Druck/openscad/aktiv-feld.scad
@@ -1,6 +1,9 @@
-// Aktiv-Feld — RACI-Fläche (Figuren werden GESTELLT, nicht gesteckt)
+// Aktiv-Feld — RACI-Flaeche (Figuren werden GESTELLT, nicht gesteckt)
// SLC-Workshop Tabletop · Einheiten: mm
-// Eine flache Platte mit 4 abgetrennten Bereichen R · A · C · I (gleich gross).
+// QUADRATISCHES 2x2-Zonenraster (wie die klassische RACI-Matrix):
+// R | A
+// --+--
+// C | I
// R/C/I haben je 4 Standflaechen (2x2). A hat GENAU EIN zentrales Standfeld
// (goldene RACI-Regel: genau eine Rolle ist Accountable).
// Standflaechen sind nur flache Gravur-Markierungen (keine Loecher).
@@ -11,46 +14,49 @@ corner_r = 5;
plate_margin = 6; // Rand aussen
/* [Standflaechen] (flache Markierung, kein Loch) — passend zum Sockel Ø20 */
-spot_d = 18; // Durchmesser der Markierung (etwas < Sockel Ø20)
+spot_d = 22; // Durchmesser wie die Puck-Mulden (gleiche Ø20-Figuren stehen hier)
spot_depth = 0.6; // Gravurtiefe
-spot_pitch = 24; // Mitte-zu-Mitte (Sockel Ø20 + ~4 mm Luft)
-grid_cols = 2; // Raster fuer R/C/I: 2 x 2 = 4 Standflaechen
-grid_rows = 2;
-a_spot_d = 22; // A: EIN groesseres zentrales Standfeld (genau 1 Figur)
+spot_pitch = 24; // Mitte-zu-Mitte (Sockel Ø20 + Luft)
+a_spot_d = spot_d; // A: GLEICHE Groesse wie die anderen — nur die Anzahl (genau 1) zaehlt
-/* [Bereiche / Zonen] — [Label, cols, rows]; A = 1x1 (goldene RACI-Regel) */
-zones = [["R", 2, 2], ["A", 1, 1], ["C", 2, 2], ["I", 2, 2]];
+/* [Zonen] — [Label, cols, rows, gridX, gridY]; gridY 0 = oben */
+zones = [["R", 2, 2, 0, 0], ["A", 1, 1, 1, 0],
+ ["C", 2, 2, 0, 1], ["I", 2, 2, 1, 1]];
+n_cols = 2;
+n_rows = 2;
cell_pad = 13; // Rand um die Standflaechen im Feld (haelt Ø20-Sockel)
-label_h = 12; // Platz fuer den Buchstaben unten im Feld
zone_gap = 8; // Abstand zwischen den Feldern
/* [Gravur] */
frame_w = 1.5; // Strichstaerke der Feld-Umrandung
frame_depth = 0.6;
-label_size = 10;
+label_size = 8; // Buchstabe sitzt in der Mittenluecke zwischen den 4 Feldern
label_depth = 0.8;
$fn = 48;
// --- abgeleitete Maße -------------------------------------------------------
-spots_span_x = (grid_cols - 1) * spot_pitch;
-spots_span_y = (grid_rows - 1) * spot_pitch;
-cell_w = spots_span_x + 2 * cell_pad; // 21
-cell_h = spots_span_y + 2 * cell_pad + label_h; // 30
-plate_w = len(zones) * cell_w + (len(zones) - 1) * zone_gap + 2 * plate_margin;
-plate_h = cell_h + 2 * plate_margin;
+// QUADRATISCHE Zellen (Buchstabe in der Mittenluecke, kein Extra-Streifen).
+spots_span = (2 - 1) * spot_pitch; // 24 (2x2-Raster)
+cell_w = spots_span + 2 * cell_pad; // 50
+cell_h = cell_w; // 50 -> Platte wird quadratisch
-function zone_cx(i) =
- -plate_w/2 + plate_margin + cell_w/2 + i * (cell_w + zone_gap);
+plate_w = n_cols * cell_w + (n_cols - 1) * zone_gap + 2 * plate_margin; // 120
+plate_h = n_rows * cell_h + (n_rows - 1) * zone_gap + 2 * plate_margin; // 120
+
+function zone_cx(gx) =
+ -plate_w/2 + plate_margin + cell_w/2 + gx * (cell_w + zone_gap);
+function zone_cy(gy) =
+ plate_h/2 - plate_margin - cell_h/2 - gy * (cell_h + zone_gap);
// --- Geometrie --------------------------------------------------------------
module rrect(l, w, h, r) {
linear_extrude(h) offset(r) offset(-r) square([l, w], center = true);
}
-module field_frame(cx) {
+module field_frame(cx, cy) {
// eingravierte Umrandung -> grenzt den Bereich ab
- translate([cx, 0, plate_thick - frame_depth])
+ translate([cx, cy, plate_thick - frame_depth])
linear_extrude(frame_depth + 0.1)
difference() {
square([cell_w, cell_h], center = true);
@@ -58,41 +64,42 @@ module field_frame(cx) {
}
}
-module zone_marks(i) {
- cx = zone_cx(i);
- lab = zones[i][0];
- nc = zones[i][1];
- nr = zones[i][2];
+module zone_marks(z) {
+ lab = z[0]; nc = z[1]; nr = z[2];
+ cx = zone_cx(z[3]); cy = zone_cy(z[4]);
if (lab == "A") {
- // genau EIN zentrales Standfeld (goldene RACI-Regel)
- translate([cx, label_h/2, plate_thick - spot_depth])
+ // genau EIN Standfeld (gleiche Groesse), leicht nach oben gerueckt; Buchstabe darunter
+ translate([cx, cy + 7, plate_thick - spot_depth])
cylinder(d = a_spot_d, h = spot_depth + 0.1);
+ translate([cx, cy - 13, plate_thick - label_depth])
+ linear_extrude(label_depth + 0.1)
+ text(lab, size = label_size, halign = "center", valign = "center");
} else {
+ // 2x2 Standfelder zentriert; Buchstabe in der Mittenluecke
for (c = [0 : nc - 1])
for (r = [0 : nr - 1]) {
sx = cx + (c - (nc - 1)/2) * spot_pitch;
- sy = label_h/2 + ((nr - 1)/2 - r) * spot_pitch;
+ sy = cy + ((nr - 1)/2 - r) * spot_pitch;
translate([sx, sy, plate_thick - spot_depth])
cylinder(d = spot_d, h = spot_depth + 0.1);
}
+ translate([cx, cy, plate_thick - label_depth])
+ linear_extrude(label_depth + 0.1)
+ text(lab, size = label_size, halign = "center", valign = "center");
}
- // Buchstabe unten im Feld
- translate([cx, -cell_h/2 + label_h/2, plate_thick - label_depth])
- linear_extrude(label_depth + 0.1)
- text(lab, size = label_size, halign = "center", valign = "center");
}
module aktiv_feld() {
difference() {
rrect(plate_w, plate_h, plate_thick, corner_r);
for (i = [0 : len(zones) - 1]) {
- field_frame(zone_cx(i));
- zone_marks(i);
+ z = zones[i];
+ field_frame(zone_cx(z[3]), zone_cy(z[4]));
+ zone_marks(z);
}
}
}
aktiv_feld();
-// Maße zur Info (Konsole): echo(plate_w, plate_h, plate_thick);
echo(plate_w = plate_w, plate_h = plate_h, plate_thick = plate_thick);
diff --git a/01_3D-Druck/openscad/aktivitaets-plaque.scad b/01_3D-Druck/openscad/aktivitaets-plaque.scad
deleted file mode 100644
index df5426b..0000000
--- a/01_3D-Druck/openscad/aktivitaets-plaque.scad
+++ /dev/null
@@ -1,23 +0,0 @@
-// Aktivitaets-Scheibe — BLANKO Rundscheibe fuer 60-mm-Rundaufkleber
-// SLC-Workshop Tabletop · Einheiten: mm
-// Keine Gravur mehr: ID + Kurzbezeichnung kommen als 60-mm-Rundaufkleber auf die
-// plane Oberseite. Vorteil: wiederverwendbar (neu bekleben), mehrsprachig,
-// keine Serien-STLs noetig — alle 37 Scheiben sind identisch.
-
-/* [Scheibe] */
-disc_d = 60; // Durchmesser (Verankerung 60 - Passung); passt zum 60-mm-Aufkleber
-disc_h = 4; // Dicke
-chamfer = 1; // Fase als Griffhilfe (oben + unten). Aufkleber Ø58 sitzt plan,
- // Ø60 ueberdeckt die obere Fase leicht.
-$fn = 96;
-
-module disc_body() {
- // Scheibe mit beidseitiger Fase, plane Oberseite fuer den Aufkleber
- hull() {
- cylinder(d = disc_d - 2*chamfer, h = 0.01);
- translate([0,0,chamfer]) cylinder(d = disc_d, h = disc_h - 2*chamfer);
- translate([0,0,disc_h-0.01]) cylinder(d = disc_d - 2*chamfer, h = 0.01);
- }
-}
-
-disc_body();
diff --git a/01_3D-Druck/openscad/aktivitaets-tile.scad b/01_3D-Druck/openscad/aktivitaets-tile.scad
deleted file mode 100644
index 2fe1168..0000000
--- a/01_3D-Druck/openscad/aktivitaets-tile.scad
+++ /dev/null
@@ -1,52 +0,0 @@
-// Phasen-Basistile mit zentraler Verankerung und Puzzle-Tabs
-// SLC-Workshop Tabletop · Einheiten: mm
-// Anpassen und mit OpenSCAD nach STL exportieren (F6 -> Export).
-
-/* [Tile] */
-tile_size = 100; // Kantenlaenge
-tile_height = 6; // Dicke
-corner_r = 3; // Eckenradius
-
-/* [Verankerung / Sockel] */
-socket_d = 60; // Durchmesser Vertiefung (nimmt Blanko-Scheibe Ø60 oder Action-Stein-Fuss auf)
-socket_depth = 4; // Tiefe
-fit_clear = 0.4; // Spielpassung
-
-/* [Puzzle-Tabs] */
-tab_w = 12; // Breite
-tab_d = 6; // Tiefe (Ueberstand / Aussparung)
-tab_h = tile_height;
-$fn = 64;
-
-module rounded_square(s, r, h) {
- linear_extrude(h)
- offset(r) offset(-r)
- square([s, s], center=true);
-}
-
-module tab(positive=true) {
- // Tab ragt heraus (positive) oder wird ausgespart (negative)
- d = positive ? tab_d : tab_d + fit_clear;
- w = positive ? tab_w : tab_w + fit_clear;
- translate([0, 0, tab_h/2])
- cube([w, d*2, tab_h], center=true);
-}
-
-module tile() {
- difference() {
- union() {
- rounded_square(tile_size, corner_r, tile_height);
- // Tabs an Nord- und Ost-Kante (positive)
- translate([0, tile_size/2, 0]) tab(true);
- translate([ tile_size/2, 0, 0]) rotate([0,0,90]) tab(true);
- }
- // Verankerung
- translate([0, 0, tile_height - socket_depth])
- cylinder(d = socket_d + fit_clear, h = socket_depth + 0.1);
- // Slots an Sued- und West-Kante (negative)
- translate([0, -tile_size/2, 0]) tab(false);
- translate([-tile_size/2, 0, 0]) rotate([0,0,90]) tab(false);
- }
-}
-
-tile();
diff --git a/01_3D-Druck/openscad/gate-tile.scad b/01_3D-Druck/openscad/gate-tile.scad
deleted file mode 100644
index b858df8..0000000
--- a/01_3D-Druck/openscad/gate-tile.scad
+++ /dev/null
@@ -1,106 +0,0 @@
-// Gate-Tile — Gate-Position mit Figuren-Standfeldern + Entscheidungs-Icon
-// SLC-Workshop Tabletop · Einheiten: mm
-// Identische Außenmaße wie das Aktivitaets-Tile (100x100x6), aber EIGENE FARBE.
-// - 8 generische Standfelder (Ring) fuer die Figuren (Sockel Ø20)
-// - 2 Stecksockel: das Gate-Tor steckt mit 2 Zapfen ein
-// - Mitte: eingraviertes "Entscheidung"-Icon (3 Pfeile + Fragezeichen) — sonst KEINE Beschriftung
-// 3 Stueck: Gate 1, 2, 3 (Modell identisch; Unterschied nur Position/Karte).
-
-/* [Tile] */
-tile_size = 100;
-tile_height = 6;
-corner_r = 3;
-
-/* [Puzzle-Tabs] (wie Aktivitaets-Tile) */
-tab_w = 12;
-tab_d = 6;
-fit_clear = 0.4;
-
-/* [Standfelder] — 8 Figuren (Sockel Ø20), generisch */
-spot_count = 8;
-ring_d = 62; // Kreisdurchmesser fuer die 8 Standfelder
-spot_d = 18; // Markierung (etwas < Sockel Ø20)
-spot_depth = 0.6;
-
-/* [Gate-Stecksockel] — Gate-Tor steckt mit 2 Zapfen ein */
-gate_peg_d = 10.4; // Loch (Zapfen Ø10 + Passung)
-gate_peg_depth = 5;
-gate_peg_dx = 40; // halber Abstand (= Gate-Pfostenmitte)
-gate_peg_y = -tile_size/2 + 12; // nahe Eingangskante (Sued)
-
-/* [Entscheidungs-Icon (Gravur Mitte)] */
-icon_depth = 0.6;
-
-$fn = 64;
-
-// --- Geometrie-Helfer -------------------------------------------------------
-module rounded_square(s, r, h) {
- linear_extrude(h) offset(r) offset(-r) square([s, s], center = true);
-}
-
-module tab(positive = true) {
- d = positive ? tab_d : tab_d + fit_clear;
- w = positive ? tab_w : tab_w + fit_clear;
- translate([0, 0, tile_height/2]) cube([w, d*2, tile_height], center = true);
-}
-
-module ring_spots() {
- for (i = [0 : spot_count - 1]) {
- a = 360/spot_count * i;
- translate([(ring_d/2)*cos(a), (ring_d/2)*sin(a), tile_height - spot_depth])
- cylinder(d = spot_d, h = spot_depth + 0.1);
- }
-}
-
-module gate_pegs() {
- for (x = [-1, 1])
- translate([x*gate_peg_dx, gate_peg_y, tile_height - gate_peg_depth])
- cylinder(d = gate_peg_d, h = gate_peg_depth + 0.1);
-}
-
-// --- Entscheidungs-Icon: offener Ring + Fragezeichen + 3 Pfeile nach oben ----
-module arrow2d(ang, len, shaft_w = 1.8, head = 4) {
- rotate(ang) union() {
- translate([-shaft_w/2, 0]) square([shaft_w, len]);
- translate([0, len]) polygon([[-head/2, 0], [head/2, 0], [0, head]]);
- }
-}
-
-module decision_icon() {
- // offener Ring (oben aufgeschnitten, damit die Pfeile austreten)
- difference() {
- circle(r = 12);
- circle(r = 9.5);
- translate([-7, 3]) square([14, 14]);
- }
- // Fragezeichen im Ring
- translate([0, -4]) text("?", size = 9, halign = "center", valign = "center");
- // drei Pfeile faechern nach oben (links / hoch / rechts)
- translate([0, 3]) {
- arrow2d(0, 9);
- arrow2d(38, 8);
- arrow2d(-38, 8);
- }
-}
-
-// --- Tile ------------------------------------------------------------------
-module gate_tile() {
- difference() {
- union() {
- rounded_square(tile_size, corner_r, tile_height);
- translate([0, tile_size/2, 0]) tab(true); // Nord-Tab
- translate([ tile_size/2, 0, 0]) rotate([0,0,90]) tab(true); // Ost-Tab
- }
- // Slots Sued + West (Anschluss an die Bahn)
- translate([0, -tile_size/2, 0]) tab(false);
- translate([-tile_size/2, 0, 0]) rotate([0,0,90]) tab(false);
- // Standfelder + Gate-Stecksockel + Icon (alle als Gravur/Loch)
- ring_spots();
- gate_pegs();
- translate([0, 0, tile_height - icon_depth])
- linear_extrude(icon_depth + 0.1) decision_icon();
- }
-}
-
-gate_tile();
-echo(tile_size = tile_size, standfelder = spot_count, ring_d = ring_d);
diff --git a/01_3D-Druck/openscad/gate-tor.scad b/01_3D-Druck/openscad/gate-tor.scad
deleted file mode 100644
index acf65fa..0000000
--- a/01_3D-Druck/openscad/gate-tor.scad
+++ /dev/null
@@ -1,53 +0,0 @@
-// Gate-Tor — Bogen, steckt mit 2 Zapfen in ein Gate-Tile (keine eigenen Fuesse)
-// SLC-Workshop Tabletop · Einheiten: mm
-// Die Figuren stehen auf dem GATE-TILE (nicht am Tor). Das Tor traegt oben eine
-// Gate-Beschreibungskarte; keine feste Gravur.
-
-/* [Tor] */
-opening_w = 68; // lichte Weite (Action-Stein Ø59 + 60-mm-Karte passt durch)
-opening_h = 100; // lichte Hoehe
-thick = 8; // Materialstaerke (Tiefe)
-post_w = 12; // Pfostenbreite
-top_h = 14; // Hoehe des Querbalkens
-
-/* [Kartenschlitz oben] */
-card_w = 65; // Gate-Beschreibungskarte 60 mm + Spiel
-card_t = 3;
-card_depth = 10;
-
-/* [Stecksockel-Zapfen] — stecken in die Gate-Tile-Loecher (Ø10,4) */
-tenon_d = 10;
-tenon_h = 5;
-tenon_dx = 40; // halber Abstand = Pfostenmitte (opening_w/2 + post_w/2)
-
-$fn = 48;
-total_w = opening_w + 2*post_w; // 92 -> passt auf das 100er Gate-Tile
-
-module arch() {
- difference() {
- translate([-total_w/2, 0, 0]) cube([total_w, thick, opening_h + top_h]);
- translate([-opening_w/2, -0.1, 0]) cube([opening_w, thick + 0.2, opening_h]);
- }
-}
-
-module card_slot() {
- translate([-card_w/2, thick/2 - card_t/2, opening_h + top_h - card_depth])
- cube([card_w, card_t, card_depth + 0.1]);
-}
-
-module tenons() {
- // 2 Zapfen unter den Pfosten -> stecken ins Gate-Tile
- for (x = [-1, 1])
- translate([x*tenon_dx, thick/2, -tenon_h])
- cylinder(d = tenon_d, h = tenon_h + 0.1);
-}
-
-// Bogen inkl. Kartenschlitz
-difference() {
- arch();
- card_slot();
-}
-// Stecksockel-Zapfen
-tenons();
-
-echo(total_w = total_w, opening_w = opening_w, tenon_dx = tenon_dx);
diff --git a/01_3D-Druck/openscad/puck.scad b/01_3D-Druck/openscad/puck.scad
new file mode 100644
index 0000000..b6e3585
--- /dev/null
+++ b/01_3D-Druck/openscad/puck.scad
@@ -0,0 +1,81 @@
+// Station-Puck (= Gate-Puck) — runde Station mit 7 Figurenplaetzen + Etikettenmulde
+// SLC-Workshop Tabletop · Einheiten: mm
+// EIN Modell fuer die ganze Bahn: 37x in Phasenfarbe (Stationen) + 3x in Rot (Gates).
+// Unterschied Station/Gate = nur Filamentfarbe + aufgeklebtes Etikett (ID bzw. G1/G2/G3).
+//
+// Aufbau (von aussen nach innen):
+// - 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)
+//
+// Beschriftung: KEINE Gravur. ID + Phasenfarbe via Avery-Etikett Ø40 in der Mitte
+// (wiederverwendbar/korrigierbar). Modell bleibt dadurch fuer alle 40 identisch.
+
+/* [Puck] */
+puck_d = 100; // Aussendurchmesser
+puck_h = 6; // Gesamthoehe
+edge_cham = 1; // Fase obere Aussenkante (Optik/Griff)
+
+/* [Rand + Einbuchtung] */
+rim_w = 5; // Randbreite (bleibt auf voller Hoehe)
+recess_dep = 1.2; // Tiefe der Einbuchtung (Spielflaeche)
+
+/* [Figurenplaetze] — Sockel Ø20 wird reingestellt */
+spot_count = 7; // Anzahl Standmulden im Ring
+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
+
+/* [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
+
+$fn = 96;
+
+// abgeleitet
+play_d = puck_d - 2*rim_w; // Spielflaeche Ø90
+play_z = puck_h - recess_dep; // Hoehe der eingebuchteten Spielflaeche (4.8)
+
+// --- Grundkoerper mit gefaster Oberkante ------------------------------------
+module puck_blank() {
+ hull() {
+ cylinder(d = puck_d - 2*edge_cham, h = puck_h);
+ cylinder(d = puck_d, h = puck_h - edge_cham);
+ }
+}
+
+// --- 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);
+ }
+}
+
+module puck() {
+ difference() {
+ puck_blank();
+ // Einbuchtung / Spielflaeche
+ translate([0, 0, play_z])
+ cylinder(d = play_d, h = recess_dep + 0.1);
+ // 7 Figurenmulden im Ring
+ for (i = [0 : spot_count - 1]) {
+ 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);
+ }
+}
+
+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);