author | Michael Krelin <hacker@klever.net> | 2016-07-21 21:38:59 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2016-07-21 21:38:59 (UTC) |
commit | 9b39333e40abf93141ee39f40ef3733890ee0db8 (patch) (unidiff) | |
tree | 125a56fc01499ee602e6f918a8b910fef5e6f0e3 | |
parent | 9cceb044d036c37c8c8703926c9c84d1d88cc2e0 (diff) | |
download | fanductory-9b39333e40abf93141ee39f40ef3733890ee0db8.zip fanductory-9b39333e40abf93141ee39f40ef3733890ee0db8.tar.gz fanductory-9b39333e40abf93141ee39f40ef3733890ee0db8.tar.bz2 |
more advanced chimera hotend
-rw-r--r-- | fanduct.scad | 75 |
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 | |||
@@ -137,2 +137,35 @@ module fanduct(type=type,ductshape=ductshape,dual=dual) { | |||
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 | ||
@@ -141,2 +174,4 @@ module fanduct(type=type,ductshape=ductshape,dual=dual) { | |||
141 | dual_simple(); | 174 | dual_simple(); |
175 | else if(type=="jets") | ||
176 | dual_complex(); | ||
142 | else dual(); | 177 | else dual(); |
@@ -291,2 +326,39 @@ module fanduct(type=type,ductshape=ductshape,dual=dual) { | |||
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) { |
@@ -315,2 +387,3 @@ module fanduct(type=type,ductshape=ductshape,dual=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); |
@@ -366,3 +439,3 @@ module fanduct(type=type,ductshape=ductshape,dual=dual) { | |||
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 |