t = 7; w = 35; h = 47.7; rc = 6.5; rcs = 2; $fn = 100; module through(l=7, lh=3.3, lt=1, lb=1){ union(){ translate([0,0,l-lh])cylinder(h=lh+lt, d=5.6); translate([0,0,-lb])cylinder(h=l+lh+lb, d=3.5); } } module m3 (h=8, lb=1){ translate([0,0,-lb])cylinder(h+lb, d=2.5); // tapped M3 //translate([0,0,-lb])cylinder(h+lb, d=4); // rutex insert } module m2 (h=8, lt=1){ translate([0,0,-lt])cylinder(h, d=1.5); // tapped M3 //translate([0,0,-lt])cylinder(h, d=3.2); // rutex insert } difference(){ hull(){ translate([rc, rc])cylinder(h=t, r=rc); translate([rc,h-rc])cylinder(h=t, r=rc); translate([w-rcs, h-rcs])cylinder(h=t, r=rcs); translate([w-rcs, rcs])cylinder(h=t, r=rcs); } translate([30.4, h-14.75])through(l=t); translate([13.2, h-33.7])through(l=t); translate([-1, h-24-14,-1])hull(){ cube([1,14, t+2]); translate([5,3])cylinder(h=t+2,r=3); translate([5,11])cylinder(h=t+2,r=3); } translate([35,h-19.5-31,-1])hull(){ translate([0,3])cylinder(h=t+2,r=3); translate([0,30])cylinder(h=t+2,r=3); } translate([12,h-12,-1])cylinder(h=t+2,d=5.5); translate([32.3,h-52.3,-1])cylinder(h=t+2,d=11); //fan shroud for(x=[24.6]){ for(y=[23.4,43.7]){ translate([x,h-y,0])m3(); } } //cooling fan mount for(x=[24]){ for(y=[33.7,11.7]){ translate([x,h-y,0])m3(); } } translate([10,0,t/2])rotate([-90,0,0])m2(); //cooling fan duct //translate }