// Aktiv-Feld — RACI-Stecklochleiste // SLC-Workshop Tabletop · Einheiten: mm // Steht NEBEN dem Action-Stein. Bei jeder Aktivitaet werden die beteiligten // Rollen-Figuren nach RACI in die passende Zone gesteckt: // R = Responsible · A = Accountable (genau 1) · C = Consulted · I = Informed // Anpassen und mit OpenSCAD nach STL exportieren (F6 -> Export). /* [Leiste] */ strip_w = 26; // Tiefe (zum Spieler) strip_h = 6; // Dicke corner_r = 3; /* [Steckplaetze] */ pin_hole_d = 4.2; // Loch fuer Figuren-Pin (Pin Oe 4,0 + Spiel) pin_hole_depth = 4; pin_pitch = 8; // Mitte-zu-Mitte innerhalb einer Zone zone_gap = 10; // Luecke zwischen den Zonen end_margin = 8; // Rand links/rechts socket_y = 5; // Lochreihe nach hinten versetzt (weg von der Beschriftung) /* [Beschriftung] */ label_size = 7; // Buchstabengroesse label_depth = 0.8; // Gravurtiefe label_y = -8; // Position der Buchstaben (vorne, zum Spieler) /* [Zonen] */ // [Label, Anzahl Steckplaetze] — A bewusst nur 1 (genau eine Rolle accountable) zones = [ ["R", 2], ["A", 1], ["C", 3], ["I", 3] ]; $fn = 48; // --- Hilfsfunktionen ------------------------------------------------------- function zone_span(c) = (c - 1) * pin_pitch; function sumspan(i = 0) = i >= len(zones) ? 0 : zone_span(zones[i][1]) + sumspan(i + 1); function total_len() = end_margin * 2 + zone_gap * (len(zones) - 1) + sumspan(); // linker Startversatz der Zone idx (Summe vorheriger Zonen + Luecken) function zone_offset(idx, i = 0, acc = 0) = i >= idx ? acc : zone_offset(idx, i + 1, acc + zone_span(zones[i][1]) + zone_gap); // --- Geometrie ------------------------------------------------------------- module rounded_rect(l, w, h, r) { linear_extrude(h) offset(r) offset(-r) square([l, w], center = true); } module raci_strip() { L = total_len(); difference() { rounded_rect(L, strip_w, strip_h, corner_r); for (idx = [0 : len(zones) - 1]) { cnt = zones[idx][1]; sx = -L/2 + end_margin + zone_offset(idx); // Steckplaetze der Zone for (i = [0 : cnt - 1]) translate([sx + i * pin_pitch, socket_y, strip_h - pin_hole_depth]) cylinder(d = pin_hole_d, h = pin_hole_depth + 0.1); // Zonen-Beschriftung (mittig unter den Loechern) cx = sx + zone_span(cnt) / 2; translate([cx, label_y, strip_h - label_depth]) linear_extrude(label_depth + 0.1) text(zones[idx][0], size = label_size, halign = "center", valign = "center"); } } } raci_strip();