summaryrefslogtreecommitdiffabout
authorMichael Krelin <hacker@klever.net>2016-07-21 21:38:59 (UTC)
committer Michael Krelin <hacker@klever.net>2016-07-21 21:38:59 (UTC)
commit9b39333e40abf93141ee39f40ef3733890ee0db8 (patch) (unidiff)
tree125a56fc01499ee602e6f918a8b910fef5e6f0e3
parent9cceb044d036c37c8c8703926c9c84d1d88cc2e0 (diff)
downloadfanductory-9b39333e40abf93141ee39f40ef3733890ee0db8.zip
fanductory-9b39333e40abf93141ee39f40ef3733890ee0db8.tar.gz
fanductory-9b39333e40abf93141ee39f40ef3733890ee0db8.tar.bz2
more advanced chimera hotend
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--fanduct.scad75
1 files changed, 74 insertions, 1 deletions
diff --git a/fanduct.scad b/fanduct.scad
index ba63717..2bc5623 100644
--- a/fanduct.scad
+++ b/fanduct.scad
@@ -135,10 +135,45 @@ module fanduct(type=type,ductshape=ductshape,dual=dual) {
135 cylinder(d=sh,h=sv,$fn=36); 135 cylinder(d=sh,h=sv,$fn=36);
136 } 136 }
137 } 137 }
138 module dual_complex() {
139 for(my=[0,1]) mirror([0,my,0])
140 if(what=="in") {
141 sh = fanduct_w+2*fanduct_shell;
142 sv = fanduct_h+2*fanduct_shell;
143 for(mx=[0,1]) mirror([mx,0,0])
144 mirror([0,1,0]) rotate([90,0,0])
145 translate([0,0,-1])
146 linear_extrude(height=nozzles_apart/2+1+epsilon)
147 ductshape(sh=sh,sv=sv,r=fanduct_ir,what=what);
148 translate([0,nozzles_apart/2,0])
149 difference() {
150 rotate_extrude($fn=smooth_f)
151 ductshape(sh=sh,sv=sv,r=fanduct_ir,what=what);
152 mirror([0,1,0]) translate([-fanduct_ir-sh-1,0,-1])
153 cube(size=[2*(fanduct_ir+sh+1),fanduct_ir+sh+1,sv+2]);
154 }
155 }else{
156 sh = fanduct_w; sv = fanduct_h;
157 for(mx=[0,1]) mirror([mx,0,0])
158 mirror([0,1,0]) rotate([90,0,0])
159 translate([0,0,-1])
160 linear_extrude(height=nozzles_apart/2+1+epsilon)
161 ductshape(sh=sh,sv=sv,r=fanduct_ir,what=what);
162 translate([0,nozzles_apart/2,0])
163 difference() {
164 rotate_extrude($fn=smooth_f)
165 ductshape(sh=sh,sv=sv,r=fanduct_ir,what=what);
166 mirror([0,1,0]) translate([-fanduct_ir-sh-1,0,-1])
167 cube(size=[2*(fanduct_ir+sh+1),fanduct_ir+sh+1,sv+2]);
168 }
169 }
170 }
138 171
139 if(dual) { 172 if(dual) {
140 if(type=="simple") 173 if(type=="simple")
141 dual_simple(); 174 dual_simple();
175 else if(type=="jets")
176 dual_complex();
142 else dual(); 177 else dual();
143 }else single(); 178 }else single();
144 } 179 }
@@ -289,6 +324,43 @@ module fanduct(type=type,ductshape=ductshape,dual=dual) {
289 } 324 }
290 } 325 }
291 326
327 module dual_jets(what=what) {
328 od=fanduct_h*2/3+fanduct_shell;
329 md=fanduct_ir+fanduct_shell+fanduct_w/2;
330 jww = 2*md*sin(jet_angle/2);
331 difference() {
332 for(my=[0,1]) mirror([0,my,0])
333 translate([0,nozzles_apart/2,0])
334 for(a=[45,135]) rotate([0,0,a])
335 if(what=="in") {
336 hull() {
337 intersection() {
338 translate([md-fanduct_w/2,-jww/2,0])
339 cube(size=[fanduct_shell+fanduct_w/2,jww,od]);
340 rotate([0,0,-a]) translate([0,-nozzles_apart/2,0]) duct(what=what);
341 } // intersection
342 translate([0,0,-fanduct_elevation]) sphere(r=.5);
343 } // hull
344 }else if(what=="out") {
345 hull() {
346 intersection() {
347 translate([md-fanduct_w/2,-jww/2+fanduct_shell,fanduct_shell])
348 cube(size=[fanduct_w/2,jww-2*fanduct_shell,od-2*fanduct_shell]);
349 rotate([0,0,-a]) translate([0,-nozzles_apart/2,0]) duct(what=what);
350 } // intersection
351 translate([0,0,-fanduct_elevation]) sphere(r=.5);
352 } // hull
353 } // what=="out"
354 if(what=="in") {
355 translate([0,0,-fanduct_elevation/2-1+epsilon])
356 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);
357 for(my=[0,1]) mirror([0,my,0])
358 translate([0,nozzles_apart/2,-hotend_clearance])
359 cylinder(r1=hotend_clearance*2,r2=0,h=hotend_clearance*2,$fn=4);
360 }
361 } // difference
362 }
363
292 module dual_simple(what=what) { 364 module dual_simple(what=what) {
293 for(my=[0:1]) mirror([0,my,0]) if(what=="in") { 365 for(my=[0:1]) mirror([0,my,0]) if(what=="in") {
294 difference() { 366 difference() {
@@ -313,6 +385,7 @@ module fanduct(type=type,ductshape=ductshape,dual=dual) {
313 385
314 if(dual) { 386 if(dual) {
315 if(type=="simple") dual_simple(what); 387 if(type=="simple") dual_simple(what);
388 else if(type=="jets") dual_jets(what);
316 else dual(what); 389 else dual(what);
317 }else if(type=="circular") circus(what); 390 }else if(type=="circular") circus(what);
318 else if(type=="3jets") jets(what); 391 else if(type=="3jets") jets(what);
@@ -364,7 +437,7 @@ module fanduct(type=type,ductshape=ductshape,dual=dual) {
364 437
365 // ***DUCT TAILS!!! WOO-OO! (every day they're out there making duct tails…) 438 // ***DUCT TAILS!!! WOO-OO! (every day they're out there making duct tails…)
366 module tails(what) { 439 module tails(what) {
367 if(dual) { 440 if(dual && type=="simple") {
368 // XXX: not sure if it will ever be 441 // XXX: not sure if it will ever be
369 }else{ 442 }else{
370 if(what=="in") { 443 if(what=="in") {