Phasen-Ring: neue Sublabels (2-zeilig), Icons entfernt
- 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 <noreply@anthropic.com>
This commit is contained in:
parent
ba6a3199a7
commit
677d414a2e
2 changed files with 18 additions and 37 deletions
|
|
@ -134,7 +134,7 @@ linearen Puck-Bahn — das **Design-Segment ist der Start** vor dem ersten Puck.
|
||||||
| Merkmal | Wert |
|
| Merkmal | Wert |
|
||||||
|---------|------|
|
|---------|------|
|
||||||
| Form | Ringsegment 72°, **Ø 180 außen / Ø 84 innen × 6 mm** |
|
| 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 |
|
| Farbe | je Phase (blau/orange/grün/teal/lila) — wie die Pucks |
|
||||||
| Verbindung | **keine** — Segmente werden lose aneinandergelegt (Ring oder Phasen-Köpfe) |
|
| Verbindung | **keine** — Segmente werden lose aneinandergelegt (Ring oder Phasen-Köpfe) |
|
||||||
| Menge | **5** (1 je Phase) |
|
| Menge | **5** (1 je Phase) |
|
||||||
|
|
|
||||||
|
|
@ -12,9 +12,14 @@
|
||||||
|
|
||||||
// --- Phasendaten (Funktionen -> per `use` importierbar) ---------------------
|
// --- Phasendaten (Funktionen -> per `use` importierbar) ---------------------
|
||||||
function ph_name(i) = ["DESIGN","TRANSITION","OPERATION","SUPPORT","REVIEW"][i];
|
function ph_name(i) = ["DESIGN","TRANSITION","OPERATION","SUPPORT","REVIEW"][i];
|
||||||
function ph_sub(i) = ["Planung & Architektur","Kontrollierte Ueberfuehrung",
|
// Sublabel je Phase als Zeilen-Liste (2 Zeilen, damit es ins Segment passt)
|
||||||
"Stabiler laufender Betrieb","Nutzeranfragen & Incidents",
|
function ph_sub(i) = [
|
||||||
"Continual Improvement"][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)
|
// 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],
|
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];
|
[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) --------------------
|
// --- ein Segment (alle Masse als Parameter mit Defaults) --------------------
|
||||||
module phase_segment(idx,
|
module phase_segment(idx,
|
||||||
r_out = 90, r_in = 42, seg_h = 6, seg_ang = 72, gap_deg = 1.2,
|
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;
|
$fn = 96;
|
||||||
|
sub = ph_sub(idx);
|
||||||
color(ph_col(idx))
|
color(ph_col(idx))
|
||||||
difference() {
|
difference() {
|
||||||
ring_sector(seg_ang - gap_deg, r_out, r_in, seg_h);
|
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,0,seg_h - eng_depth]) linear_extrude(eng_depth + 0.1) {
|
||||||
translate([0,82]) scale(0.9) icon(idx);
|
// Phasenname
|
||||||
translate([0,66]) text(ph_name(idx), size=name_size, halign="center", valign="center");
|
translate([0,70]) text(ph_name(idx), size=name_size,
|
||||||
translate([0,53]) text(ph_sub(idx), size=sub_size, halign="center", valign="center");
|
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");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue