- ph_sub entfernt; Gravur = nur Phasenname, mittig im Band. - Groesse 7->9, Tiefe 0,8->1,0 fuer bessere Lesbarkeit. - materialliste §7 nachgezogen. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
54 lines
2.3 KiB
OpenSCAD
54 lines
2.3 KiB
OpenSCAD
// Phasen-Ring — Bibliothek + Vorschau
|
|
// SLC-Workshop Tabletop · Einheiten: mm
|
|
//
|
|
// 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.
|
|
//
|
|
// 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.
|
|
|
|
// --- Phasendaten (Funktionen -> per `use` importierbar) ---------------------
|
|
function ph_name(i) = ["DESIGN","TRANSITION","OPERATION","SUPPORT","REVIEW"][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];
|
|
|
|
// --- Geometrie-Helfer -------------------------------------------------------
|
|
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;
|
|
big = r_out + 10;
|
|
intersection() {
|
|
difference() { // Annulus
|
|
cylinder(r = r_out, h = seg_h);
|
|
translate([0,0,-0.5]) cylinder(r = r_in, h = seg_h + 1);
|
|
}
|
|
linear_extrude(seg_h) // Tortenstueck
|
|
polygon([[0,0],
|
|
[big*cos(a0), big*sin(a0)],
|
|
[big*cos(90), big*1.2],
|
|
[big*cos(a1), big*sin(a1)]]);
|
|
}
|
|
}
|
|
|
|
// --- 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 = 1.0, name_size = 9) {
|
|
$fn = 96;
|
|
color(ph_col(idx))
|
|
difference() {
|
|
ring_sector(seg_ang - gap_deg, r_out, r_in, seg_h);
|
|
// Phasenname, mittig im Band (Radius ~66)
|
|
translate([0, (r_in + r_out)/2, seg_h - eng_depth])
|
|
linear_extrude(eng_depth + 0.1)
|
|
text(ph_name(idx), size=name_size, halign="center", valign="center");
|
|
}
|
|
}
|
|
|
|
// --- VORSCHAU (nur wenn diese Datei direkt geoeffnet wird; bei `use` ignoriert)
|
|
for (i = [0:4]) rotate([0,0, -i*72]) phase_segment(i);
|