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"); } } }