// 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 = 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; // Ringbreite ring_dep = 2.5; /* [Sockel] — Ø32 aus SVG + 0,6 Spiel fuer Figuren-Sockel Ø32 */ sock_d = 32.6; sock_dep = 2.5; sock_lead = 0.8; /* [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] ]; // 4 Trennlinien-Winkel (Grad) DIV = [-105.5, -73.3, 57.3, 123.5]; // --- 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]]); } // --- Aussparungen ---------------------------------------------------------- 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); } // --- Zusammenbau ----------------------------------------------------------- module raci_board() { difference() { board_blank(); chip_well(); well_ring(); for (p = SOCK) socket(p); for (a = DIV) divider(a); card_slot(); } } raci_board(); 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]);