SLC_Game/01_3D-Druck/openscad/sor-tile.scad
breitenbach76 1dd0ff5d2f SOR-Tile: Mitte "SOR" graviert (kein Chip) + Gate-Stecksockel
- sor-tile.scad: use_chip=false, Mitte-Gravur "SOR"; 2 Gate-Stecksockel
  (Loecher Ø10,4 x5, links/rechts) fuer die Gate-Zapfen
- gate-tor.scad: 2 Zapfen (Ø10 x5) unter den Pfosten -> stecken ins SOR-Tile
- materialliste: Gate-Stecksockel + SOR-Tile-Eingang/Mitte aktualisiert;
  Gate-Gravur entfaellt (Gate-Karte traegt Nr/Keeper/Pfade)
- sor-tile.svg: Mitte "SOR", 2 Stecksockel, Gate-Zapfen

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-01 14:59:35 +02:00

108 lines
4 KiB
OpenSCAD

// 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);