SLC_Game/01_3D-Druck/openscad/gate-board.scad
2026-06-09 17:39:04 +02:00

80 lines
2.7 KiB
OpenSCAD

// Sonderpuck "Entscheidung / Gate" (rund) — 1:1 aus Puck_Entscheidung_ohne_Text.svg
// SLC-Workshop Tabletop · mm. Geometrisch identisch zum RACI-Board (raci-board.scad),
// ABER ohne die 4 Trennlinien (DIV leer) und in Gate-Rot. Z-Maße laut Vorgabe.
/* [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;
/* [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]
];
// --- 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 card_slot() {
translate([slot_cx, slot_cy, base_h - slot_depth/2])
cube([slot_w, slot_t, slot_depth + 0.2], center=true);
}
// --- Zusammenbau (KEINE Trennlinien -> Sonderpuck) -------------------------
module gate_board() {
color("#e2001a")
difference() {
board_blank();
chip_well();
well_ring();
for (p = SOCK) socket(p);
card_slot();
}
}
gate_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], dividers=0);