diff --git a/katzenklappe.scad b/katzenklappe.scad new file mode 100644 index 0000000..8750680 --- /dev/null +++ b/katzenklappe.scad @@ -0,0 +1,62 @@ +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();