// Station-Puck (= Gate-Puck) — runde Station mit 7 Figurenplaetzen + Etikettenmulde // SLC-Workshop Tabletop · Einheiten: mm // EIN Modell fuer die ganze Bahn: 37x in Phasenfarbe (Stationen) + 3x in Rot (Gates). // Unterschied Station/Gate = nur Filamentfarbe + aufgeklebtes Etikett (ID bzw. G1/G2/G3). // // Aufbau (von aussen nach innen): // - Aussenrand Ø100, ~5 mm breit, bleibt auf voller Hoehe // - leichte Einbuchtung (Spielflaeche) innerhalb des Rands // - Ring aus 7 Figurenmulden (Sockel Ø20 wird REINGESTELLT, daher Ø22) // - Mitte: flache Mulde fuer ein rundes Avery-Etikett Ø40 (Art. 5080 abloesbar) // // Beschriftung: KEINE Gravur. ID + Phasenfarbe via Avery-Etikett Ø40 in der Mitte // (wiederverwendbar/korrigierbar). Modell bleibt dadurch fuer alle 40 identisch. /* [Puck] */ puck_d = 100; // Aussendurchmesser puck_h = 6; // Gesamthoehe edge_cham = 1; // Fase obere Aussenkante (Optik/Griff) /* [Rand + Einbuchtung] */ rim_w = 5; // Randbreite (bleibt auf voller Hoehe) recess_dep = 1.2; // Tiefe der Einbuchtung (Spielflaeche) /* [Figurenplaetze] — Sockel Ø20 wird reingestellt */ spot_count = 7; // Anzahl Standmulden im Ring spot_d = 22; // Mulden-Ø (Sockel Ø20 + Luft -> reinstellbar) spot_dep = 1.5; // Tiefe der Standmulde (zusaetzlich zur Einbuchtung) spot_ring_r = 33; // Radius des Mulden-Kreises (Mitte-Mitte) spot_lead = 0.8; // Einfuehr-Fase oben an der Mulde /* [Etikettenmulde Mitte] — rundes Etikett Ø37 */ label_d = 37.5; // Mulden-Ø (Etikett Ø37 + 0,5 Spiel); Puck-Rand bleibt sichtbar label_dep = 0.3; // flach: Etikett sitzt plan + kantengeschuetzt $fn = 96; // abgeleitet play_d = puck_d - 2*rim_w; // Spielflaeche Ø90 play_z = puck_h - recess_dep; // Hoehe der eingebuchteten Spielflaeche (4.8) // --- Grundkoerper mit gefaster Oberkante ------------------------------------ module puck_blank() { hull() { cylinder(d = puck_d - 2*edge_cham, h = puck_h); cylinder(d = puck_d, h = puck_h - edge_cham); } } // --- eine Figurenmulde mit Einfuehr-Fase ------------------------------------ module figure_spot() { // Boden der Mulde liegt spot_dep unter der Spielflaeche z0 = play_z - spot_dep; union() { translate([0, 0, z0]) cylinder(d = spot_d, h = spot_dep + 0.1); // Fase als Einfuehrhilfe oben translate([0, 0, play_z - spot_lead]) cylinder(d1 = spot_d, d2 = spot_d + 2*spot_lead, h = spot_lead + 0.1); } } module puck() { difference() { puck_blank(); // Einbuchtung / Spielflaeche translate([0, 0, play_z]) cylinder(d = play_d, h = recess_dep + 0.1); // 7 Figurenmulden im Ring for (i = [0 : spot_count - 1]) { a = 360/spot_count * i; translate([spot_ring_r*cos(a), spot_ring_r*sin(a), 0]) figure_spot(); } // Etikettenmulde Mitte translate([0, 0, play_z - label_dep]) cylinder(d = label_d, h = label_dep + 0.1); } } puck(); echo(puck_d = puck_d, spielflaeche = play_d, figurenplaetze = spot_count, spot_d = spot_d, ring_r = spot_ring_r, etikett_mulde = label_d);