From ba6a3199a76a1c7515123767779bab580a6c5d30 Mon Sep 17 00:00:00 2001 From: breitenbach76 Date: Thu, 4 Jun 2026 23:31:39 +0200 Subject: [PATCH] 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);