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 <phasen-ring.scad>` + phase_segment(idx) -> druckfertig, DRY. - materialliste + README_openscad auf die Einzeldateien umgestellt. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
fa8294870a
commit
ba6a3199a7
8 changed files with 62 additions and 62 deletions
|
|
@ -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) |
|
| Verbindung | **keine** — Segmente werden lose aneinandergelegt (Ring oder Phasen-Köpfe) |
|
||||||
| Menge | **5** (1 je Phase) |
|
| Menge | **5** (1 je Phase) |
|
||||||
| Material | PLA, Infill 15 %, Filament je Phasenfarbe |
|
| 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.
|
> **Druck:** je Segment die passende `phasen-ring-<phase>.scad` öffnen → F6 → STL.
|
||||||
> Vorschau: `render_mode="ring"` (Preview-Modus, nicht `--render` — sonst eine
|
> **Vorschau:** `phasen-ring.scad` direkt öffnen (Preview-Modus, nicht `--render` —
|
||||||
> Einheitsfarbe).
|
> 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) |
|
| Station-Puck | 37 | `openscad/puck.scad` (Phasenfarbe) |
|
||||||
| Gate-Puck | 3 | `openscad/puck.scad` (rot) |
|
| Gate-Puck | 3 | `openscad/puck.scad` (rot) |
|
||||||
| Phasen-Ring-Segment | 5 | `openscad/phasen-ring.scad` (je Phasenfarbe) |
|
| Phasen-Ring-Segment | 5 | `openscad/phasen-ring-<phase>.scad` (je Phasenfarbe) |
|
||||||
| Aktiv-Feld (RACI-Fläche) | 1 | `openscad/aktiv-feld.scad` |
|
| Aktiv-Feld (RACI-Fläche) | 1 | `openscad/aktiv-feld.scad` |
|
||||||
| Rollen-Figuren (Einzel) | 32 | 16 Rollen × 2 |
|
| Rollen-Figuren (Einzel) | 32 | 16 Rollen × 2 |
|
||||||
| Team-Sonderfiguren | 6 | 3 Teams × 2 |
|
| Team-Sonderfiguren | 6 | 3 Teams × 2 |
|
||||||
|
|
|
||||||
|
|
@ -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) |
|
| `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 |
|
| `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 <phasen-ring.scad>` + `phase_segment(idx)`) |
|
||||||
|
|
||||||
## Ein Puck für die ganze Bahn
|
## Ein Puck für die ganze Bahn
|
||||||
|
|
||||||
|
|
|
||||||
5
01_3D-Druck/openscad/phasen-ring-design.scad
Normal file
5
01_3D-Druck/openscad/phasen-ring-design.scad
Normal file
|
|
@ -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 <phasen-ring.scad>
|
||||||
|
phase_segment(0);
|
||||||
5
01_3D-Druck/openscad/phasen-ring-operation.scad
Normal file
5
01_3D-Druck/openscad/phasen-ring-operation.scad
Normal file
|
|
@ -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 <phasen-ring.scad>
|
||||||
|
phase_segment(2);
|
||||||
5
01_3D-Druck/openscad/phasen-ring-review.scad
Normal file
5
01_3D-Druck/openscad/phasen-ring-review.scad
Normal file
|
|
@ -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 <phasen-ring.scad>
|
||||||
|
phase_segment(4);
|
||||||
5
01_3D-Druck/openscad/phasen-ring-support.scad
Normal file
5
01_3D-Druck/openscad/phasen-ring-support.scad
Normal file
|
|
@ -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 <phasen-ring.scad>
|
||||||
|
phase_segment(3);
|
||||||
5
01_3D-Druck/openscad/phasen-ring-transition.scad
Normal file
5
01_3D-Druck/openscad/phasen-ring-transition.scad
Normal file
|
|
@ -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 <phasen-ring.scad>
|
||||||
|
phase_segment(1);
|
||||||
|
|
@ -1,44 +1,26 @@
|
||||||
// Phasen-Ring — 5 Segmente (Donut) als SLC-Uebersicht, die auseinandergenommen
|
// Phasen-Ring — Bibliothek + Vorschau
|
||||||
// die Phasen-KOEPFE der linearen Puck-Bahn bilden (Design-Segment = Start).
|
|
||||||
// SLC-Workshop Tabletop · Einheiten: mm
|
// SLC-Workshop Tabletop · Einheiten: mm
|
||||||
//
|
//
|
||||||
// - 1 Segment = 72°-Ringsegment in seiner Phasenfarbe (wie die Pucks).
|
// 5 Segmente (Donut) als SLC-Uebersicht, die auseinandergenommen die Phasen-KOEPFE
|
||||||
// - Beschriftung GRAVIERT (nur 5 Stueck): Phasenname + Sublabel + einfaches Icon.
|
// der linearen Puck-Bahn bilden (Design-Segment = Start vor dem ersten Puck).
|
||||||
// - KEINE Magnete: Segmente werden lose aneinandergelegt (als Ring oder als
|
// KEINE Magnete: Segmente werden lose aneinandergelegt.
|
||||||
// Phasen-Koepfe entlang der Bahn).
|
|
||||||
//
|
//
|
||||||
// EXPORT: render_mode="single" + phase=0..4 -> ein Segment je Phase als STL.
|
// Diese Datei ist die GEMEINSAME GEOMETRIE. Druckfertige Einzelteile sind:
|
||||||
// VORSCHAU: render_mode="ring" -> alle 5 farbig zusammengesetzt.
|
// 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] */
|
// --- Phasendaten (Funktionen -> per `use` importierbar) ---------------------
|
||||||
render_mode = "ring"; // "single" (Export) oder "ring" (Vorschau)
|
function ph_name(i) = ["DESIGN","TRANSITION","OPERATION","SUPPORT","REVIEW"][i];
|
||||||
phase = 0; // 0 Design · 1 Transition · 2 Operation · 3 Support · 4 Review
|
function ph_sub(i) = ["Planung & Architektur","Kontrollierte Ueberfuehrung",
|
||||||
|
|
||||||
/* [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",
|
"Stabiler laufender Betrieb","Nutzeranfragen & Incidents",
|
||||||
"Continual Improvement"];
|
"Continual Improvement"][i];
|
||||||
// Phasenfarben (nur Vorschau; im Druck = Filament)
|
// 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],
|
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]];
|
[0.12,0.62,0.62],[0.49,0.31,0.64]][i];
|
||||||
|
|
||||||
// --- Geometrie-Helfer -------------------------------------------------------
|
// --- 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)
|
// Ringsegment ueber Winkel a, Bisektor zeigt nach +Y (oben)
|
||||||
a0 = 90 - a/2;
|
a0 = 90 - a/2;
|
||||||
a1 = 90 + a/2;
|
a1 = 90 + a/2;
|
||||||
|
|
@ -58,11 +40,10 @@ module ring_sector(a) {
|
||||||
|
|
||||||
// --- Icons (einfache gravierte Glyphen, 2D) ---------------------------------
|
// --- Icons (einfache gravierte Glyphen, 2D) ---------------------------------
|
||||||
module icon(i) {
|
module icon(i) {
|
||||||
// zentriert um (0,0), ~14 mm
|
|
||||||
if (i == 0) // Design: Dokument
|
if (i == 0) // Design: Dokument
|
||||||
difference() {
|
difference() {
|
||||||
square([10,13], center=true);
|
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
|
else if (i == 1) // Transition: Pfeil nach rechts
|
||||||
union() {
|
union() {
|
||||||
|
|
@ -80,34 +61,27 @@ module icon(i) {
|
||||||
union() {
|
union() {
|
||||||
difference() {
|
difference() {
|
||||||
difference(){ circle(r=6.5); circle(r=3.8); }
|
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 ------------------------------------------------------------
|
// --- ein Segment (alle Masse als Parameter mit Defaults) --------------------
|
||||||
module phase_segment(idx) {
|
module phase_segment(idx,
|
||||||
a = seg_ang - gap_deg;
|
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() {
|
difference() {
|
||||||
ring_sector(a);
|
ring_sector(seg_ang - gap_deg, r_out, r_in, seg_h);
|
||||||
// Gravur (oben)
|
|
||||||
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);
|
translate([0,82]) scale(0.9) icon(idx);
|
||||||
translate([0,66]) text(names[idx], size=name_size,
|
translate([0,66]) text(ph_name(idx), size=name_size, halign="center", valign="center");
|
||||||
halign="center", valign="center");
|
translate([0,53]) text(ph_sub(idx), size=sub_size, halign="center", valign="center");
|
||||||
translate([0,53]) text(subs[idx], size=sub_size,
|
|
||||||
halign="center", valign="center");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- Ausgabe ----------------------------------------------------------------
|
// --- VORSCHAU (nur wenn diese Datei direkt geoeffnet wird; bei `use` ignoriert)
|
||||||
if (render_mode == "ring") {
|
for (i = [0:4]) rotate([0,0, -i*72]) phase_segment(i);
|
||||||
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);
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue