summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--fanduct.scad17
1 files changed, 12 insertions, 5 deletions
diff --git a/fanduct.scad b/fanduct.scad
index 75a3bb1..7a9e205 100644
--- a/fanduct.scad
+++ b/fanduct.scad
@@ -13,27 +13,28 @@ heater_clearance = max(
13 13
14 fanduct_elevation = 3; // fanduct elevation above nozzle tip 14 fanduct_elevation = 3; // fanduct elevation above nozzle tip
15 fanduct_blowtarget = -2; // what to blow at 15 fanduct_blowtarget = -2; // what to blow at
16 fanduct_h = 6; // inner height of the duct 16 fanduct_h = 6; // inner height of the duct
17 fanduct_w = 7; // inner width of the duct 17 fanduct_w = 7; // inner width of the duct
18 fanduct_shell=1.2; // shell thickness 18 fanduct_shell=1.2; // shell thickness
19 fanduct_ir = heater_clearance+5; // inner radius 19 fanduct_ir = heater_clearance+5; // inner radius
20 20
21 jet_angle = 60-2; // angular width of the jet 21 jet_angle = 60-2; // angular width of the jet
22 22
23 inlet_w = 12.5; // inlet width 23 inlet_w = 12.5; // inlet width
24 inlet_h = 17; // inlet height 24 inlet_h = 17; // inlet height
25 inlet_l = 7; // inlet length of protrusion (or depth of intrusion:)) 25 inlet_short_l = 7;// inlet length of protrusion (or depth of intrusion:))
26 inlet_away = 15;// how far away inlet is 26 inlet_away = 15;// how far away inlet is
27 27
28inlet_long_l = inlet_short_l+inlet_h;
28hotend_clearance = heater_clearance; 29hotend_clearance = heater_clearance;
29 30
30 snapper_d = 8; snapper_overlap=0.2;// snip snap 31 snapper_d = 8; snapper_overlap=0.2;// snip snap
31 32
32smooth_f = 120; 33smooth_f = 120;
33 34
34type="3jets"; // "3jets" ; // circular|3jets 35type="3jets"; // "3jets" ; // circular|3jets
35ductshape="square"; // square|round 36ductshape="square"; // square|round
36 37
37 38
38module fanduct(type=type,ductshape=ductshape) { 39module fanduct(type=type,ductshape=ductshape) {
39 40
@@ -179,44 +180,50 @@ module fanduct(type=type,ductshape=ductshape) {
179 else if(type=="3jets") jets(what); 180 else if(type=="3jets") jets(what);
180 } 181 }
181 182
182 // ***air intake 183 // ***air intake
183 module intake(what) { 184 module intake(what) {
184 module placeit() { 185 module placeit() {
185 translate([-fanduct_ir-2*fanduct_shell-fanduct_w-inlet_away,0,fanduct_shell]) 186 translate([-fanduct_ir-2*fanduct_shell-fanduct_w-inlet_away,0,fanduct_shell])
186 rotate([0,-90,0]) 187 rotate([0,-90,0])
187 children(); 188 children();
188 } 189 }
189 if(what=="in") { 190 if(what=="in") {
190 placeit() translate([0,-inlet_w/2,0]) { 191 placeit() translate([0,-inlet_w/2,0]) {
191 cube(size=[inlet_h,inlet_w,inlet_l+fanduct_shell]); 192 difference() {
193 cube(size=[inlet_h,inlet_w,inlet_long_l+fanduct_shell]);
194 translate([inlet_h+fanduct_shell,0,inlet_long_l+fanduct_shell])
195 rotate([-90,0,0])
196 translate([0,0,-1])
197 cylinder(r=inlet_h,h=inlet_w+2*fanduct_shell+2,$fn=inlet_h*4);
198 }
192 // supports 199 // supports
193 for(i=[-1,0,1]) 200 for(i=[-1,0,1])
194 translate([-fanduct_shell, 201 translate([-fanduct_shell,
195 (i+1)*(inlet_w-extrusion_width)/2, 202 (i+1)*(inlet_w-extrusion_width)/2,
196 -inlet_away-fanduct_w/2]) 203 -inlet_away-fanduct_w/2])
197 cube(size=[fanduct_shell, 204 cube(size=[fanduct_shell,
198 extrusion_width, 205 extrusion_width,
199 inlet_l+fanduct_shell+inlet_away+fanduct_w/2]); 206 inlet_long_l+fanduct_shell+inlet_away+fanduct_w/2]);
200 } 207 }
201 hull() { 208 hull() {
202 placeit() translate([-fanduct_shell,-inlet_w/2-fanduct_shell,0]) 209 placeit() translate([-fanduct_shell,-inlet_w/2-fanduct_shell,0])
203 cube(size=[inlet_h+2*fanduct_shell,inlet_w+2*fanduct_shell,fanduct_shell]); 210 cube(size=[inlet_h+2*fanduct_shell,inlet_w+2*fanduct_shell,fanduct_shell]);
204 translate([-fanduct_ir-fanduct_shell-fanduct_w/2,0,0]) 211 translate([-fanduct_ir-fanduct_shell-fanduct_w/2,0,0])
205 translate([0,-inlet_w/2-fanduct_shell/2,0]) 212 translate([0,-inlet_w/2-fanduct_shell/2,0])
206 cube(size=[1,inlet_w+fanduct_shell,fanduct_shell*2+fanduct_h]); 213 cube(size=[1,inlet_w+fanduct_shell,fanduct_shell*2+fanduct_h]);
207 } 214 }
208 }else if(what=="out") { 215 }else if(what=="out") {
209 placeit() translate([fanduct_shell,-inlet_w/2+fanduct_shell,0]) 216 placeit() translate([fanduct_shell,-inlet_w/2+fanduct_shell,0])
210 cube(size=[inlet_h-2*fanduct_shell,inlet_w-2*fanduct_shell,inlet_l+fanduct_shell+1]); 217 cube(size=[inlet_h-2*fanduct_shell,inlet_w-2*fanduct_shell,inlet_long_l+fanduct_shell+1]);
211 hull() { 218 hull() {
212 placeit() translate([fanduct_shell,-inlet_w/2+fanduct_shell,0]) 219 placeit() translate([fanduct_shell,-inlet_w/2+fanduct_shell,0])
213 cube(size=[inlet_h-2*fanduct_shell,inlet_w-2*fanduct_shell,fanduct_shell]); 220 cube(size=[inlet_h-2*fanduct_shell,inlet_w-2*fanduct_shell,fanduct_shell]);
214 translate([-fanduct_ir-fanduct_shell-fanduct_w/2,0,fanduct_shell]) 221 translate([-fanduct_ir-fanduct_shell-fanduct_w/2,0,fanduct_shell])
215 translate([0,-inlet_w/2+fanduct_shell,0]) 222 translate([0,-inlet_w/2+fanduct_shell,0])
216 cube(size=[1,inlet_w-2*fanduct_shell,fanduct_h]); 223 cube(size=[1,inlet_w-2*fanduct_shell,fanduct_h]);
217 } 224 }
218 } 225 }
219 } 226 }
220 227
221 // ***DUCT TAILS!!! WOO-OO! (every day they're out there making duct tails…) 228 // ***DUCT TAILS!!! WOO-OO! (every day they're out there making duct tails…)
222 module tails(what) { 229 module tails(what) {
@@ -245,25 +252,25 @@ module fanduct(type=type,ductshape=ductshape) {
245 } 252 }
246 intersection() { 253 intersection() {
247 union() { 254 union() {
248 output("airguides"); 255 output("airguides");
249 sphere(d=epsilon); 256 sphere(d=epsilon);
250 } 257 }
251 union() { 258 union() {
252 duct("in"); output("in"); intake("in"); 259 duct("in"); output("in"); intake("in");
253 } 260 }
254 } 261 }
255} 262}
256 263
257view="vcut"; // hcut|vcut|* 264view="*"; // hcut|vcut|*
258 265
259hinfinity=4*(fanduct_ir+fanduct_shell*2+fanduct_w+inlet_away); 266hinfinity=4*(fanduct_ir+fanduct_shell*2+fanduct_w+inlet_away);
260vinfinity=2*(fanduct_shell*2+fanduct_h+inlet_h); 267vinfinity=2*(fanduct_shell*2+fanduct_h+inlet_h);
261if(view=="hcut") { 268if(view=="hcut") {
262 difference() { 269 difference() {
263 fanduct(); 270 fanduct();
264 translate([-hinfinity/2,-hinfinity/2,fanduct_shell+fanduct_h/2]) 271 translate([-hinfinity/2,-hinfinity/2,fanduct_shell+fanduct_h/2])
265 cube(size=[hinfinity,hinfinity,vinfinity]); 272 cube(size=[hinfinity,hinfinity,vinfinity]);
266 } 273 }
267}else if(view=="vcut") { 274}else if(view=="vcut") {
268 difference() { 275 difference() {
269 fanduct(); 276 fanduct();