// 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 -> Eingang ins Gremium // - Mitte: Platz fuer den Entscheidungs-Chip (Ø30); alternativ "Gremium" graviert // - 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: Chip oder Gravur] */ use_chip = true; // true: Chip-Mulde Ø30 · false: "Gremium" eingraviert chip_d = 30; chip_recess_d = 0.6; // Spielpassung chip_depth = 1.5; // Mulden-Tiefe fuer den Chip gremium_text = "Gremium"; gremium_size = 12; gremium_depth = 0.8; /* [Ring aus Standfeldern] */ ring_count = 6; // Plaetze fuer Gremiums-Figuren rund um die Mitte ring_d = 84; // Kreisdurchmesser, auf dem die Standfelder liegen spot_d = 8; // Standfeld-Durchmesser spot_depth = 0.5; // 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 = "SOR"; gate_label_size = 7; gate_label_depth= 0.8; /* [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 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(); } } sor_tile(); echo(tile_size = tile_size, ring_count = ring_count, use_chip = use_chip);