52 lines
1.6 KiB
OpenSCAD
52 lines
1.6 KiB
OpenSCAD
// 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();
|