tunnel_w = 160; tunnel_h = 160; tunnel_t = 10; // tunnel thickness tunnel_s = 40; // tunnel spacing: overlap for screws door_t = 50; // door thickness plexy_t = 6; // thickness of plexy glass sheet gap = 1; // gap between parts moving relative to each other seal = 5; angle = 0; guide_h = 20; // calculations rad = 3*plexy_t/2; sheet_h = tunnel_h-2*seal-rad; // colors plexy = [0.4,0.6,1,0.6]; snow = [1,1,1,0.5]; wood = [0.8,0.3,0]; module door(){ color(wood) difference(){ cube([1000,door_t,2000],true); tunnel_core(); } } module tunnel_core(){ cube([tunnel_w+2*tunnel_t,door_t+2*tunnel_t,tunnel_h+2*tunnel_t],true); // eigentlicher tunnel } module tunnel(){ color(snow)difference(){ union(){ tunnel_core(); translate([0,(door_t+tunnel_t)/2,0]) cube([tunnel_w+2*tunnel_s,tunnel_t,tunnel_h+2*tunnel_s],true); // krempe translate([0,(door_t+tunnel_t)/-2,0]) cube([tunnel_w+2*tunnel_s,tunnel_t,tunnel_h+2*tunnel_s],true); // krempe } cube([tunnel_w,door_t+2*tunnel_t+2,tunnel_h],true); // loch } } module sheets(){ translate([0,-plexy_t,-sheet_h/2])cube([tunnel_w-2*seal,plexy_t,sheet_h],true); translate([0, plexy_t,-sheet_h/2])cube([tunnel_w-2*seal,plexy_t,sheet_h],true); translate([0,0,guide_h/2-sheet_h])cube([10,plexy_t,guide_h],true); } module flap(){ translate([0,0,(sheet_h-rad)/2]) rotate([angle,0,0]) union(){ difference(){ rotate([0,90,0]) cylinder(d=3*plexy_t,h=tunnel_w-2*seal,center=true); sheets(); } color(plexy)sheets(); } } *door(); *tunnel(); flap();