// Phasen-Basistile mit zentraler Verankerung und Puzzle-Tabs // SLC-Workshop Tabletop · Einheiten: mm // Anpassen und mit OpenSCAD nach STL exportieren (F6 -> Export). /* [Tile] */ tile_size = 100; // Kantenlaenge tile_height = 6; // Dicke corner_r = 3; // Eckenradius /* [Verankerung / Sockel] */ socket_d = 60; // Durchmesser Vertiefung (nimmt Blanko-Scheibe Ø60 oder Action-Stein-Fuss auf) socket_depth = 4; // Tiefe fit_clear = 0.4; // Spielpassung /* [Puzzle-Tabs] */ tab_w = 12; // Breite tab_d = 6; // Tiefe (Ueberstand / Aussparung) tab_h = tile_height; $fn = 64; module rounded_square(s, r, h) { linear_extrude(h) offset(r) offset(-r) square([s, s], center=true); } module tab(positive=true) { // Tab ragt heraus (positive) oder wird ausgespart (negative) d = positive ? tab_d : tab_d + fit_clear; w = positive ? tab_w : tab_w + fit_clear; translate([0, 0, tab_h/2]) cube([w, d*2, tab_h], center=true); } module tile() { difference() { union() { rounded_square(tile_size, corner_r, tile_height); // Tabs an Nord- und Ost-Kante (positive) translate([0, tile_size/2, 0]) tab(true); translate([ tile_size/2, 0, 0]) rotate([0,0,90]) tab(true); } // Verankerung translate([0, 0, tile_height - socket_depth]) cylinder(d = socket_d + fit_clear, h = socket_depth + 0.1); // Slots an Sued- und West-Kante (negative) translate([0, -tile_size/2, 0]) tab(false); translate([-tile_size/2, 0, 0]) rotate([0,0,90]) tab(false); } } tile();