124 lines
4.3 KiB
OpenSCAD
124 lines
4.3 KiB
OpenSCAD
// RACI-Konsolen-Board MIT Beschriftung — 1:1 aus Puck_mit_Text.svg
|
|
// Geometrie wie raci-board.scad + gravierte Labels:
|
|
// R oben · A unten · C links · I rechts (RACI), Phasenname in der Chip-Mulde.
|
|
// Phasenname ist Parameter -> alle 5 Phasen erzeugbar. Text wird vertieft (graviert).
|
|
|
|
/* [Phase] */
|
|
phase = "TRANSITION"; // DESIGN | TRANSITION | OPERATION | SUPPORT | REVIEW
|
|
phase_color = "#e8862b"; // Druckfarbe (nur Preview). Design #2f80c9 · Transition #e8862b
|
|
// Operation #2f9e57 · Support #18a9a0 · Review #8358c6
|
|
|
|
/* [Board] */
|
|
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 + Ring] */
|
|
chip_d = 50; // Mittelmulde Ø50
|
|
chip_dep = 2.5;
|
|
ring_mid = 32; // Ring um die Mitte: Mittelradius (Ø64)
|
|
ring_w = 2;
|
|
ring_dep = 2.5;
|
|
|
|
/* [Sockel] — Ø32 aus SVG + 0,6 Spiel */
|
|
sock_d = 32.6;
|
|
sock_dep = 2.5;
|
|
sock_lead = 0.8;
|
|
|
|
/* [Trennlinien] graviert */
|
|
div_w = 2;
|
|
div_dep = 2.5;
|
|
div_ri = 34;
|
|
div_ro = 93;
|
|
|
|
/* [Kartenschlitz] */
|
|
slot_cx = 0; slot_cy = 85.4;
|
|
slot_w = 70; slot_t = 5; slot_depth = 15;
|
|
|
|
/* [Beschriftung] graviert */
|
|
font = "Liberation Sans:style=Bold";
|
|
raci_size = 20; // Hoehe der R/A/C/I-Buchstaben (SVG ~21)
|
|
raci_r = 45; // Radius der Buchstaben-Mittelpunkte
|
|
raci_dep = 1.2; // Gravurtiefe auf der Oberseite
|
|
phase_size = 7; // Schrifthoehe Phasenname in der Mulde
|
|
phase_dep = 1.0; // Gravurtiefe im Mulden-Boden
|
|
|
|
$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 = [-105.5, -73.3, 57.3, 123.5];
|
|
|
|
// RACI-Buchstaben: Text, Mittelpunkt (mm) — R oben, A unten, C links, I rechts
|
|
RACI = [ ["R", [0, raci_r]], ["A", [0, -raci_r]],
|
|
["C", [-raci_r, 0]], ["I", [ raci_r, 0]] ];
|
|
|
|
// --- Grundkoerper: rund, Oberkante rundgebogen abfallend -------------------
|
|
module board_blank() {
|
|
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]]);
|
|
}
|
|
|
|
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 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) {
|
|
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 card_slot() {
|
|
translate([slot_cx, slot_cy, base_h - slot_depth/2])
|
|
cube([slot_w, slot_t, slot_depth + 0.2], center=true);
|
|
}
|
|
|
|
// Gravur auf der Oberseite (vertieft)
|
|
module engrave_top(txt, p, size, dep) {
|
|
translate([p[0], p[1], base_h-dep]) linear_extrude(dep+0.1)
|
|
text(txt, size=size, halign="center", valign="center", font=font);
|
|
}
|
|
// Gravur in den Mulden-Boden (unter dem Acrylchip sichtbar)
|
|
module engrave_well(txt, size, dep) {
|
|
translate([0, 0, base_h-chip_dep-dep]) linear_extrude(dep+0.1)
|
|
text(txt, size=size, halign="center", valign="center", font=font);
|
|
}
|
|
|
|
// --- Zusammenbau -----------------------------------------------------------
|
|
module raci_board_text() {
|
|
color(phase_color)
|
|
difference() {
|
|
board_blank();
|
|
chip_well();
|
|
well_ring();
|
|
for (p = SOCK) socket(p);
|
|
for (a = DIV) divider(a);
|
|
card_slot();
|
|
for (r = RACI) engrave_top(r[0], r[1], raci_size, raci_dep);
|
|
engrave_well(phase, phase_size, phase_dep);
|
|
}
|
|
}
|
|
|
|
raci_board_text();
|
|
|
|
echo(phase=phase, board_d=2*board_r, base_h=base_h, sockets=len(SOCK),
|
|
raci_size=raci_size, phase_size=phase_size);
|