summaryrefslogtreecommitdiffabout
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--fanduct.scad6
1 files changed, 4 insertions, 2 deletions
diff --git a/fanduct.scad b/fanduct.scad
index efc6a19..b1c9bd8 100644
--- a/fanduct.scad
+++ b/fanduct.scad
@@ -309,99 +309,101 @@ module fanduct(type=type,ductshape=ductshape,dual=dual) {
translate([0,-nozzles_apart/2,-fanduct_elevation+fanduct_blowtarget]) sphere(d=.1);
}
}else if(what=="airguides") {
far = fanduct_ir+fanduct_shell+fanduct_w;
near = fanduct_ir;
union() {
for(my=[0,1]) mirror([0,my,0]) {
guideline([ [-far ,0], [0, nozzles_apart/8] ]);
guideline([ [-far ,inlet_w/2/4 ],
[-near ,to_midduct/2] ]);
guideline([ [-near-fanduct_w/3, to_midduct/2 ],
[-near ,nozzles_apart/2+near ] ]);
guideline([ [0 ,nozzles_apart/2+near+fanduct_w*space_behind_nozzle/to_midduct] ]);
}
}
}
}
module dual_jets(what=what) {
od=fanduct_h*2/3+fanduct_shell;
md=fanduct_ir+fanduct_shell+fanduct_w/2;
jww = 2*md*sin(jet_angle/2);
difference() {
for(my=[0,1]) mirror([0,my,0])
translate([0,nozzles_apart/2,0])
for(a=[45,135]) rotate([0,0,a])
if(what=="in") {
hull() {
intersection() {
translate([md-fanduct_w/2,-jww/2,0])
cube(size=[fanduct_shell+fanduct_w/2,jww,od]);
rotate([0,0,-a]) translate([0,-nozzles_apart/2,0]) duct(what=what);
} // intersection
translate([0,0,-fanduct_elevation]) sphere(r=.5);
} // hull
}else if(what=="out") {
hull() {
intersection() {
translate([md-fanduct_w/2,-jww/2+fanduct_shell,fanduct_shell])
cube(size=[fanduct_w/2,jww-2*fanduct_shell,od-2*fanduct_shell]);
rotate([0,0,-a]) translate([0,-nozzles_apart/2,0]) duct(what=what);
} // intersection
translate([0,0,-fanduct_elevation]) sphere(r=.5);
} // hull
} // what=="out"
if(what=="in") {
translate([0,0,-fanduct_elevation/2-1+epsilon])
cube(size=[2*(fanduct_ir+2*fanduct_shell+fanduct_w+1),nozzles_apart+2*(fanduct_ir+2*fanduct_shell+fanduct_w+1),fanduct_elevation+2],center=true);
+ cfn=4;
+ hc = hotend_clearance/cos(180/cfn);
for(my=[0,1]) mirror([0,my,0])
- translate([0,nozzles_apart/2,-hotend_clearance])
- cylinder(r1=hotend_clearance*2,r2=0,h=hotend_clearance*2,$fn=4);
+ translate([0,nozzles_apart/2,-hc])
+ cylinder(r1=hc*2,r2=0,h=hc*2,$fn=cfn);
}
} // difference
}
module dual_simple(what=what) {
for(my=[0:1]) mirror([0,my,0]) if(what=="in") {
difference() {
hull() {
translate([0,nozzles_apart/2+fanduct_ir+fanduct_shell+fanduct_w/2,0])
cylinder(d=fanduct_w+2*fanduct_shell,h=fanduct_h*2/3+2*fanduct_shell);
translate([0,nozzles_apart/2,-fanduct_elevation+fanduct_blowtarget])
rotate([0,90,0]) cylinder(r=.5,h=fanduct_w*2,center=true);
}
rr = 2*(fanduct_ir+fanduct_shell*2+fanduct_w+2);
translate([-rr/2,0,0]) mirror([0,0,1]) cube(size=[rr,rr,rr]);
}
}else if(what=="out") {
hull() {
translate([0,nozzles_apart/2+fanduct_ir+fanduct_shell+fanduct_w/2,fanduct_shell])
cylinder(d=fanduct_w,h=fanduct_h*2/3);
translate([0,nozzles_apart/2,-fanduct_elevation+fanduct_blowtarget])
rotate([0,90,0]) cylinder(d=.5,h=fanduct_w*2,center=true);
}
}
}
if(dual) {
if(type=="simple") dual_simple(what);
else if(type=="jets") dual_jets(what);
else dual(what);
}else if(type=="circular") circus(what);
else if(type=="jets") jets(what);
}
// *** air intake
module intake(what) {
module placeit() {
translate([-fanduct_ir-2*fanduct_shell-fanduct_w-inlet_away,0,fanduct_shell])
rotate([0,-90,0])
children();
}
if(what=="in") {
placeit() translate([0,-inlet_w/2,0]) {
difference() {
cube(size=[inlet_h,inlet_w,inlet_long_l+fanduct_shell]); translate([inlet_h+fanduct_shell,0,inlet_long_l+fanduct_shell])
rotate([-90,0,0])
translate([0,0,-1])
cylinder(r=inlet_h,h=inlet_w+2*fanduct_shell+2,$fn=inlet_h*4);