// SOR-Sonder-Tile (Gremium) — Service Operations Runde // SLC-Workshop Tabletop · Einheiten: mm // Die SOR ist kein Einzel-Figur, sondern ein Gremium -> eigenes Tile: // - Gate-Tor wird am Eingang (Vorderkante) installiert: steckt mit 2 Zapfen // (links/rechts) in die Gate-Stecksockel -> steht stabil. // - Mitte: "SOR" eingraviert (kein Chip mehr). // - rundherum: Standfelder fuer die teilnehmenden Figuren (gestellt, kein Pin) /* [Tile] */ tile_size = 120; // etwas groesser als Standardtile (Platz fuer Ring + Gate) tile_height = 6; corner_r = 4; /* [Mitte: Gravur] */ use_chip = false; // false: "SOR" eingraviert (Standard) · true: Chip-Mulde Ø30 chip_d = 30; chip_recess_d = 0.6; // Spielpassung (nur falls use_chip) chip_depth = 1.5; gremium_text = "SOR"; // Gravur in der Mitte gremium_size = 18; gremium_depth = 0.8; /* [Ring aus Standfeldern] */ ring_count = 6; // Plaetze fuer Gremiums-Figuren rund um die Mitte ring_d = 90; // Kreisdurchmesser, auf dem die Standfelder liegen spot_d = 18; // Standfeld-Durchmesser (Sockel Ø20) spot_depth = 0.6; // Gravurtiefe (Markierung, kein Loch) /* [Gate-Eingang an der Vorderkante] */ gate_seat_w = 116; // Breite der Aufsetzflaeche fuer das Gate (Fuesse 2x60) gate_seat_d = 30; // Tiefe (= Gate-Fusstiefe) gate_seat_depth = 1.5; // flache Mulde, in der die Gate-Fuesse stehen gate_label = "EINGANG"; gate_label_size = 6; gate_label_depth= 0.8; /* [Gate-Stecksockel: Gate-Tor steckt mit 2 Zapfen (links/rechts) ein] */ gate_peg_d = 10.4; // Loch (Zapfen Ø10 + 0,4 Passung) gate_peg_depth = 5; // Lochtiefe (Tile ist 6 dick) gate_peg_dx = 51; // halber Zapfen-Abstand (= Gate-Pfostenmitte) /* [Puzzle-Tab am Eingang -> Anschluss an die Bahn] */ tab_w = 12; tab_d = 6; $fn = 96; module rounded_square(s, r, h) { linear_extrude(h) offset(r) offset(-r) square([s, s], center=true); } module ring_spots() { for (i = [0 : ring_count - 1]) { a = 360/ring_count * i; x = (ring_d/2) * cos(a); y = (ring_d/2) * sin(a); translate([x, y, tile_height - spot_depth]) cylinder(d = spot_d, h = spot_depth + 0.1); } } module center_feature() { if (use_chip) { // Mulde fuer den Entscheidungs-Chip translate([0, 0, tile_height - chip_depth]) cylinder(d = chip_d + chip_recess_d, h = chip_depth + 0.1); } else { // "Gremium" eingraviert translate([0, 0, tile_height - gremium_depth]) linear_extrude(gremium_depth + 0.1) text(gremium_text, size = gremium_size, halign = "center", valign = "center"); } } module gate_entrance() { // flache Mulde an der Vorderkante (Suedkante), in die die Gate-Fuesse gestellt werden translate([0, -tile_size/2 + gate_seat_d/2, tile_height - gate_seat_depth]) cube([gate_seat_w, gate_seat_d, gate_seat_depth + 0.1], center = true); // Beschriftung "SOR" an der Vorderkante translate([0, -tile_size/2 + gate_seat_d + gate_label_size, tile_height - gate_label_depth]) linear_extrude(gate_label_depth + 0.1) text(gate_label, size = gate_label_size, halign = "center", valign = "center"); } module gate_pegs() { // 2 Loecher fuer die Gate-Zapfen (links/rechts) an der Vorderkante for (x = [-1, 1]) translate([x*gate_peg_dx, -tile_size/2 + gate_seat_d/2, tile_height - gate_peg_depth]) cylinder(d = gate_peg_d, h = gate_peg_depth + 0.1); } module sor_tile() { difference() { union() { rounded_square(tile_size, corner_r, tile_height); // Puzzle-Tab am Eingang (Suedkante) zum Anschluss an die Bahn translate([0, -tile_size/2 - tab_d, 0]) cube([tab_w, tab_d*2, tile_height]); } center_feature(); ring_spots(); gate_entrance(); gate_pegs(); } } sor_tile(); echo(tile_size = tile_size, ring_count = ring_count, use_chip = use_chip);