This commit is contained in:
breitenbach76 2026-06-09 14:24:04 +02:00
parent 96b86ce340
commit f6db2a86af
9 changed files with 15793 additions and 81 deletions

View file

@ -1,107 +1,94 @@
// RACI-Konsolen-Board (rund, B+ symmetrisch) SLC-Workshop Tabletop · mm
// Pendant zum Blender-Modell (../blender/raci-board.py). Gleiche Maße.
// Rund Ø260, Mittelmulde Ø50 (Chip), 10 Sockel Ø32,8 in 4 gleich grossen 90°-Sektoren
// (symmetrisches Kreuz, Trennlinien 0/90/180/270), R3·A1·C4·I2, Sockel je Sektor
// gleichmaessig verteilt; Phasenname (DESIGN) im Mulden-Boden; Card-Schlitz 70x5, tief.
// RACI-Konsolen-Board (rund) 1:1 aus Illustrator-Layout (Puck_ohne_Text.svg)
// SLC-Workshop Tabletop · mm. Geometrie exakt aus dem SVG (Maßstab 0,35278 mm/Unit,
// Mittelpunkt 283,47/283,47). Z-Maße laut Vorgabe. Ohne Text (separat ergaenzbar).
/* [Board] */
board_r = 130; // Aussenradius (Ø260)
base_h = 14;
edge_cham = 2; // Fase obere Aussenkante
board_r = 100; // Aussenradius (Ø200)
base_h = 20; // Gesamthoehe
rim_flat = 95; // bis hier flache Oberseite (innere Flaeche Ø190)
rim_drop = 5; // Hoehenabfall an der Rundkante (rundgebogen, abfaellig)
edge_round= 4; // Verrundung der Aussenkante
/* [Mittelmulde / Chip] */
chip_d = 50;
chip_dep = 2.2;
notch_d = 14;
/* [Mittelmulde + Ring] */
chip_d = 50; // Mittelmulde Ø50
chip_dep = 2.5;
ring_mid = 32; // Ring um die Mitte: Mittelradius (Ø64)
ring_w = 2; // Ringbreite
ring_dep = 2.5;
/* [Sockel] — Figuren-Sockel Ø32 + Spiel */
sock_d = 32.8;
sock_dep = 2.0;
/* [Sockel] — Ø32 aus SVG + 0,6 Spiel fuer Figuren-Sockel Ø32 */
sock_d = 32.6;
sock_dep = 2.5;
sock_lead = 0.8;
ring_r = 88;
/* [Sektoren] — Name, Wort-Mittenwinkel, Sockelwinkel (Grad, 90=oben) */
// 4 gleich grosse 90°-Sektoren in den Diagonalen; Trennlinien-Kreuz bei 0/90/180/270.
SEC = [
["RESPONSIBLE", 135, [98, 135, 172]],
["ACCOUNTABLE", 45, [45]],
["CONSULTED", -45, [-8, -33, -57, -82]],
["INFORMED", -135, [-98, -172]],
/* [Trennlinien] graviert */
div_w = 2;
div_dep = 2.5;
div_ri = 34; // Start ausserhalb des Rings
div_ro = 93; // Ende kurz vor Rand
/* [Kartenschlitz] */
slot_cx = 0; slot_cy = 85.4; // Position (oben), aus SVG
slot_w = 70; slot_t = 5; slot_depth = 15;
$fn = 96;
// 11 Sockel-Mittelpunkte (mm, Mitte = 0/0, y nach oben), exakt aus dem SVG
SOCK = [
[ 0.74, -75.00], [ 41.14, -62.58], [ 68.42, -30.30], [ 73.92, 11.60],
[ 55.88, 49.83], [ 18.83, 65.37], [-17.91, 65.37], [-57.48, 48.42],
[-74.55, 9.76], [-68.02, -31.99], [-39.95, -63.58]
];
DIV = [0, 90, 180, 270];
ridge_w = 2.6; ridge_dep = 1.4;
// 4 Trennlinien-Winkel (Grad)
DIV = [-105.5, -73.3, 57.3, 123.5];
/* [Gravur] */
word_size = 6; word_dep = 0.9;
word_r = ring_r + sock_d/2 + 9;
design_size = 9; design_dep = 1.0;
/* [Action-Card-Halter] */
card_cy = 116; card_bw = 84; card_bd = 22; card_bh = 16;
slot_w = 70; slot_t = 5; slot_depth = 27; slot_tilt = 12;
$fn = 128;
// --- Grundkoerper (rund, Oberkante gefast) ---------------------------------
// --- Grundkoerper: rund, Oberkante rundgebogen abfallend -------------------
module board_blank() {
hull() {
cylinder(r = board_r - edge_cham, h = base_h);
cylinder(r = board_r, h = base_h - edge_cham);
}
}
module card_block() {
translate([0, card_cy, (base_h + card_bh)/2])
cube([card_bw, card_bd, base_h + card_bh], center = true);
rotate_extrude($fn = 240)
offset(r = edge_round) offset(delta = -edge_round)
polygon([[0,0], [board_r,0], [board_r, base_h - rim_drop],
[rim_flat, base_h], [0, base_h]]);
}
// --- Aussparungen ----------------------------------------------------------
module chip_well() {
translate([0, 0, base_h - chip_dep]) cylinder(d = chip_d, h = chip_dep + 0.1);
translate([0, -chip_d/2, base_h - chip_dep]) cylinder(d = notch_d, h = chip_dep + 0.1); // Greifkerbe
module chip_well() { translate([0,0,base_h-chip_dep]) cylinder(d=chip_d, h=chip_dep+0.1); }
module well_ring() {
translate([0,0,base_h-ring_dep]) linear_extrude(ring_dep+0.1)
difference() { circle(r=ring_mid+ring_w/2); circle(r=ring_mid-ring_w/2); }
}
module figure_socket(a) {
x = ring_r*cos(a); y = ring_r*sin(a); z0 = base_h - sock_dep;
translate([x, y, z0]) {
cylinder(d = sock_d, h = sock_dep + 0.1);
translate([0,0,sock_dep - sock_lead]) cylinder(d1 = sock_d, d2 = sock_d + 2*sock_lead, h = sock_lead + 0.1);
module socket(p) {
translate([p[0], p[1], base_h-sock_dep]) {
cylinder(d=sock_d, h=sock_dep+0.1);
translate([0,0,sock_dep-sock_lead]) cylinder(d1=sock_d, d2=sock_d+2*sock_lead, h=sock_lead+0.1);
}
}
module divider(a) { // flache Trennlinie (graviert)
di = chip_d/2 + 5; do = ring_r + sock_d/2 + 6; rmid = (di+do)/2;
translate([rmid*cos(a), rmid*sin(a), base_h - ridge_dep])
rotate([0,0,a])
linear_extrude(ridge_dep + 0.1) square([do-di, ridge_w], center = true);
module divider(a) {
rmid = (div_ri+div_ro)/2; len = div_ro-div_ri;
translate([rmid*cos(a), rmid*sin(a), base_h-div_dep])
rotate([0,0,a]) linear_extrude(div_dep+0.1) square([len, div_w], center=true);
}
module sector_label(txt, a) {
rot = (sin(a) >= 0) ? a - 90 : a + 90; // tangential, lesbar
translate([word_r*cos(a), word_r*sin(a), base_h - word_dep])
rotate([0,0,rot])
linear_extrude(word_dep + 0.1) text(txt, size = word_size, halign="center", valign="center");
}
module design_label() { // im Mulden-Boden
translate([0, 0, base_h - chip_dep - design_dep])
linear_extrude(design_dep + 0.1) text("DESIGN", size = design_size, halign="center", valign="center");
}
module card_slot() { // oben offen, tief, leicht nach hinten geneigt
sb = base_h + card_bh - slot_depth; sh = slot_depth + 20;
translate([0, card_cy, sb + sh/2]) rotate([-slot_tilt, 0, 0])
cube([slot_w, slot_t, sh], center = true);
module card_slot() {
translate([slot_cx, slot_cy, base_h - slot_depth/2])
cube([slot_w, slot_t, slot_depth + 0.2], center=true);
}
// --- Zusammenbau -----------------------------------------------------------
module raci_board() {
difference() {
union() { board_blank(); card_block(); }
board_blank();
chip_well();
for (s = SEC) for (a = s[2]) figure_socket(a);
well_ring();
for (p = SOCK) socket(p);
for (a = DIV) divider(a);
card_slot();
for (s = SEC) sector_label(s[0], s[1]);
design_label();
}
}
raci_board();
echo(board_d = 2*board_r, base_h = base_h, chip = chip_d, sock = sock_d,
ring_r = ring_r, sockets = 10, card_slot = [slot_w, slot_t, slot_depth]);
echo(board_d=2*board_r, base_h=base_h, chip=chip_d, ring_d=2*ring_mid,
sockets=len(SOCK), sock_d=sock_d, slot=[slot_w, slot_t, slot_depth]);