Aktiv-Feld: quadratisches 2x2-RACI-Raster (R|A / C|I), 120x120
- Layout von 4-in-Reihe (236x74) auf 2x2-Matrix umgestellt: R|A oben, C|I unten. - Platte exakt 120x120: Buchstabe sitzt in der Mittenluecke statt im Extra-Streifen. - Alle Standfelder gleich gross Ø22 (wie Puck-Mulden) — gleiche Ø20-Figuren; A unterscheidet sich nur durch die Anzahl (genau 1), nicht durch die Groesse. - materialliste, README_3d-druck, bauteile-masse.svg nachgezogen. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
efdd0e84c0
commit
e8a71d7415
4 changed files with 51 additions and 44 deletions
|
|
@ -1,6 +1,9 @@
|
|||
// Aktiv-Feld — RACI-Fläche (Figuren werden GESTELLT, nicht gesteckt)
|
||||
// Aktiv-Feld — RACI-Flaeche (Figuren werden GESTELLT, nicht gesteckt)
|
||||
// SLC-Workshop Tabletop · Einheiten: mm
|
||||
// Eine flache Platte mit 4 abgetrennten Bereichen R · A · C · I (gleich gross).
|
||||
// QUADRATISCHES 2x2-Zonenraster (wie die klassische RACI-Matrix):
|
||||
// R | A
|
||||
// --+--
|
||||
// C | I
|
||||
// R/C/I haben je 4 Standflaechen (2x2). A hat GENAU EIN zentrales Standfeld
|
||||
// (goldene RACI-Regel: genau eine Rolle ist Accountable).
|
||||
// Standflaechen sind nur flache Gravur-Markierungen (keine Loecher).
|
||||
|
|
@ -11,46 +14,49 @@ corner_r = 5;
|
|||
plate_margin = 6; // Rand aussen
|
||||
|
||||
/* [Standflaechen] (flache Markierung, kein Loch) — passend zum Sockel Ø20 */
|
||||
spot_d = 18; // Durchmesser der Markierung (etwas < Sockel Ø20)
|
||||
spot_d = 22; // Durchmesser wie die Puck-Mulden (gleiche Ø20-Figuren stehen hier)
|
||||
spot_depth = 0.6; // Gravurtiefe
|
||||
spot_pitch = 24; // Mitte-zu-Mitte (Sockel Ø20 + ~4 mm Luft)
|
||||
grid_cols = 2; // Raster fuer R/C/I: 2 x 2 = 4 Standflaechen
|
||||
grid_rows = 2;
|
||||
a_spot_d = 22; // A: EIN groesseres zentrales Standfeld (genau 1 Figur)
|
||||
spot_pitch = 24; // Mitte-zu-Mitte (Sockel Ø20 + Luft)
|
||||
a_spot_d = spot_d; // A: GLEICHE Groesse wie die anderen — nur die Anzahl (genau 1) zaehlt
|
||||
|
||||
/* [Bereiche / Zonen] — [Label, cols, rows]; A = 1x1 (goldene RACI-Regel) */
|
||||
zones = [["R", 2, 2], ["A", 1, 1], ["C", 2, 2], ["I", 2, 2]];
|
||||
/* [Zonen] — [Label, cols, rows, gridX, gridY]; gridY 0 = oben */
|
||||
zones = [["R", 2, 2, 0, 0], ["A", 1, 1, 1, 0],
|
||||
["C", 2, 2, 0, 1], ["I", 2, 2, 1, 1]];
|
||||
n_cols = 2;
|
||||
n_rows = 2;
|
||||
cell_pad = 13; // Rand um die Standflaechen im Feld (haelt Ø20-Sockel)
|
||||
label_h = 12; // Platz fuer den Buchstaben unten im Feld
|
||||
zone_gap = 8; // Abstand zwischen den Feldern
|
||||
|
||||
/* [Gravur] */
|
||||
frame_w = 1.5; // Strichstaerke der Feld-Umrandung
|
||||
frame_depth = 0.6;
|
||||
label_size = 10;
|
||||
label_size = 8; // Buchstabe sitzt in der Mittenluecke zwischen den 4 Feldern
|
||||
label_depth = 0.8;
|
||||
|
||||
$fn = 48;
|
||||
|
||||
// --- abgeleitete Maße -------------------------------------------------------
|
||||
spots_span_x = (grid_cols - 1) * spot_pitch;
|
||||
spots_span_y = (grid_rows - 1) * spot_pitch;
|
||||
cell_w = spots_span_x + 2 * cell_pad; // 21
|
||||
cell_h = spots_span_y + 2 * cell_pad + label_h; // 30
|
||||
plate_w = len(zones) * cell_w + (len(zones) - 1) * zone_gap + 2 * plate_margin;
|
||||
plate_h = cell_h + 2 * plate_margin;
|
||||
// QUADRATISCHE Zellen (Buchstabe in der Mittenluecke, kein Extra-Streifen).
|
||||
spots_span = (2 - 1) * spot_pitch; // 24 (2x2-Raster)
|
||||
cell_w = spots_span + 2 * cell_pad; // 50
|
||||
cell_h = cell_w; // 50 -> Platte wird quadratisch
|
||||
|
||||
function zone_cx(i) =
|
||||
-plate_w/2 + plate_margin + cell_w/2 + i * (cell_w + zone_gap);
|
||||
plate_w = n_cols * cell_w + (n_cols - 1) * zone_gap + 2 * plate_margin; // 120
|
||||
plate_h = n_rows * cell_h + (n_rows - 1) * zone_gap + 2 * plate_margin; // 120
|
||||
|
||||
function zone_cx(gx) =
|
||||
-plate_w/2 + plate_margin + cell_w/2 + gx * (cell_w + zone_gap);
|
||||
function zone_cy(gy) =
|
||||
plate_h/2 - plate_margin - cell_h/2 - gy * (cell_h + zone_gap);
|
||||
|
||||
// --- Geometrie --------------------------------------------------------------
|
||||
module rrect(l, w, h, r) {
|
||||
linear_extrude(h) offset(r) offset(-r) square([l, w], center = true);
|
||||
}
|
||||
|
||||
module field_frame(cx) {
|
||||
module field_frame(cx, cy) {
|
||||
// eingravierte Umrandung -> grenzt den Bereich ab
|
||||
translate([cx, 0, plate_thick - frame_depth])
|
||||
translate([cx, cy, plate_thick - frame_depth])
|
||||
linear_extrude(frame_depth + 0.1)
|
||||
difference() {
|
||||
square([cell_w, cell_h], center = true);
|
||||
|
|
@ -58,41 +64,42 @@ module field_frame(cx) {
|
|||
}
|
||||
}
|
||||
|
||||
module zone_marks(i) {
|
||||
cx = zone_cx(i);
|
||||
lab = zones[i][0];
|
||||
nc = zones[i][1];
|
||||
nr = zones[i][2];
|
||||
module zone_marks(z) {
|
||||
lab = z[0]; nc = z[1]; nr = z[2];
|
||||
cx = zone_cx(z[3]); cy = zone_cy(z[4]);
|
||||
if (lab == "A") {
|
||||
// genau EIN zentrales Standfeld (goldene RACI-Regel)
|
||||
translate([cx, label_h/2, plate_thick - spot_depth])
|
||||
// genau EIN Standfeld (gleiche Groesse), leicht nach oben gerueckt; Buchstabe darunter
|
||||
translate([cx, cy + 7, plate_thick - spot_depth])
|
||||
cylinder(d = a_spot_d, h = spot_depth + 0.1);
|
||||
translate([cx, cy - 13, plate_thick - label_depth])
|
||||
linear_extrude(label_depth + 0.1)
|
||||
text(lab, size = label_size, halign = "center", valign = "center");
|
||||
} else {
|
||||
// 2x2 Standfelder zentriert; Buchstabe in der Mittenluecke
|
||||
for (c = [0 : nc - 1])
|
||||
for (r = [0 : nr - 1]) {
|
||||
sx = cx + (c - (nc - 1)/2) * spot_pitch;
|
||||
sy = label_h/2 + ((nr - 1)/2 - r) * spot_pitch;
|
||||
sy = cy + ((nr - 1)/2 - r) * spot_pitch;
|
||||
translate([sx, sy, plate_thick - spot_depth])
|
||||
cylinder(d = spot_d, h = spot_depth + 0.1);
|
||||
}
|
||||
translate([cx, cy, plate_thick - label_depth])
|
||||
linear_extrude(label_depth + 0.1)
|
||||
text(lab, size = label_size, halign = "center", valign = "center");
|
||||
}
|
||||
// Buchstabe unten im Feld
|
||||
translate([cx, -cell_h/2 + label_h/2, plate_thick - label_depth])
|
||||
linear_extrude(label_depth + 0.1)
|
||||
text(lab, size = label_size, halign = "center", valign = "center");
|
||||
}
|
||||
|
||||
module aktiv_feld() {
|
||||
difference() {
|
||||
rrect(plate_w, plate_h, plate_thick, corner_r);
|
||||
for (i = [0 : len(zones) - 1]) {
|
||||
field_frame(zone_cx(i));
|
||||
zone_marks(i);
|
||||
z = zones[i];
|
||||
field_frame(zone_cx(z[3]), zone_cy(z[4]));
|
||||
zone_marks(z);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
aktiv_feld();
|
||||
|
||||
// Maße zur Info (Konsole): echo(plate_w, plate_h, plate_thick);
|
||||
echo(plate_w = plate_w, plate_h = plate_h, plate_thick = plate_thick);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue