// Gate-Tor mit Rollen-Steckplaetzen und Kartenschlitz // SLC-Workshop Tabletop · Einheiten: mm /* [Tor] */ opening_w = 90; // lichte Weite opening_h = 100; // lichte Hoehe thick = 8; // Materialstaerke (Tiefe) post_w = 12; // Pfostenbreite top_h = 14; // Hoehe des Querbalkens /* [Fuesse] */ foot_w = 60; foot_d = 30; foot_h = 4; /* [Rollen-Standfelder] (keine Loecher — Figuren werden gestellt) */ spot_d = 18; // Durchmesser der Standflaeche-Markierung (Sockel Ø20) spot_count = 4; // 4 Pflicht-Figuren spot_depth = 0.6; // Gravurtiefe (reine Markierung) /* [Kartenschlitz oben] */ card_w = 65; card_t = 3; card_depth = 10; $fn = 48; total_w = opening_w + 2*post_w; total_h = opening_h + top_h + foot_h; module arch() { difference() { // Aussenkontur translate([-total_w/2, 0, 0]) cube([total_w, thick, opening_h + top_h]); // Oeffnung translate([-opening_w/2, -0.1, 0]) cube([opening_w, thick + 0.2, opening_h]); } } module feet() { for (x = [-1, 1]) translate([x*(opening_w/2 + post_w/2) - foot_w/2, -(foot_d-thick)/2, 0]) cube([foot_w, foot_d, foot_h]); } module stand_spots() { // Flache Standfeld-Markierungen entlang der Vorderkante der Fuesse spacing = (opening_w + post_w) / (spot_count - 1); for (i = [0 : spot_count - 1]) translate([-(opening_w + post_w)/2 + i*spacing, foot_d/2 - spot_d, foot_h - spot_depth]) cylinder(d = spot_d, h = spot_depth + 0.1); } module card_slot() { translate([-card_w/2, thick/2 - card_t/2, opening_h + top_h - card_depth]) cube([card_w, card_t, card_depth + 0.1]); } // Tor inkl. Kartenschlitz difference() { translate([0,0,foot_h]) arch(); translate([0,0,foot_h]) card_slot(); } // Fuesse inkl. Rollen-Standfelder (flache Markierung) difference() { feet(); stand_spots(); }