// Pursa_Fan_Onput.scad // // module mount_plate() { rotate([90,0,0]) difference(){ //fan bracket cube([40,5,40]); //fan entrance rotate([90,0,0]) translate([20,20,-6]) // cylinder(h=7, r= 17); cylinder(h=7, r1= 15.5, r2 = 18); //fan mounting screw hole rotate([90,0,0]) translate([4,4,-6]) cylinder(r=1.9, h=7, $fs=.1); //fan mounting screw hole rotate([90,0,0]) translate([36,4,-6]) cylinder(r=1.9, h=7, $fs=.1); //fan mounting screw hole rotate([90,0,0]) translate([36,36,-6]) cylinder(r=1.9, h=7, $fs=.1); //fan mounting screw hole rotate([90,0,0]) translate([4,36,-6]) cylinder(r=1.9, h=7, $fs=.1); } } // // module top_duct() { difference() { intersection() { difference() { //duct rotate([-20,0,0]) translate([ 0, 3, 10]) { cylinder(h=48, r=18, $fa=2, center = true); } //duct centercut out rotate([-20,0,0]) translate([ 0, 3, 10]) { cylinder(h=50,r=15, $fa=2, center = true); } } // crop bottom top and back translate ([0, -22, 7]) rotate([0,0,0]){ cube(size=[39,50,14], center=true); } } } } // // // module duct() { difference() { union() { // add cap translate ([0, 0, 42]) rotate([0,0,0]){ cap(); } difference() { //duct rotate([5,0,0]) translate([ 0, 0, 20]) { cylinder(h=40, r=19.5, $fa=2, center = true); } //duct centercut out rotate([5,0,0]) translate([ 0, 0, 20]) { cylinder(h=46,r=16.5, $fa=2, center = true); } // flatten bottom translate ([0, 0, -6]) rotate([0,0,0]){ cube(size=[44,44,12], center=true); } // bevel top translate ([0, 0, 48]) rotate([-30,0,0]){ cube(size=[50,50,12], center=true); } // cut off top half translate ([0, -25, 25]) rotate([0,0,0]){ cube(size=[52,50,52], center=true); } } } } } // // module cap() { difference () { intersection () { rotate([-30,0,0]) { cylinder (h=4, r=24, $fa=2, center = true); } // cut to duct shape translate([0,-3,-5]) rotate([5,0,0]) { cylinder(h=18, r=19.5, $fa=2, center = true); } // square end translate ([0, 24, 10]) rotate([60,0,0]) { cube(size=[50,50,30], center=true); } } // extruder center cut out rotate([120,0,0]) translate([ 0, 7, -10]) { cylinder(h=46,r=13, $fa=2, center = true); } } } // // // // module fanout() { union () { translate([-20,20,0]) { mount_plate(); } translate([0,0,1]) { duct(); } translate([0,-2,0]) { top_duct(); } } } // fanout(); // cap(); // top_duct(); // duct(); // mount_plate();