summaryrefslogtreecommitdiffabout
authorMichael Krelin <hacker@klever.net>2016-06-13 14:10:26 (UTC)
committer Michael Krelin <hacker@klever.net>2016-06-13 14:10:26 (UTC)
commit96c68b7fc20735d0cacb027827282f070403d885 (patch) (unidiff)
treefd4adc6046f2b8b3d2e01b9ea415fbb9f96b3726
parent2d09f1c09a64adab3a756e5d7108a2138682a2f3 (diff)
downloadfanductory-96c68b7fc20735d0cacb027827282f070403d885.zip
fanductory-96c68b7fc20735d0cacb027827282f070403d885.tar.gz
fanductory-96c68b7fc20735d0cacb027827282f070403d885.tar.bz2
dualism: the duct
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--fanduct.scad42
1 files changed, 39 insertions, 3 deletions
diff --git a/fanduct.scad b/fanduct.scad
index 3e2a15e..b9689c9 100644
--- a/fanduct.scad
+++ b/fanduct.scad
@@ -28,18 +28,27 @@ inlet_away = 15; // how far away inlet is
28inlet_long_l = inlet_short_l+inlet_h; 28inlet_long_l = inlet_short_l+inlet_h;
29hotend_clearance = heater_clearance; 29hotend_clearance = heater_clearance;
30 30
31 nozzles_apart = 18; // distance between nozzles for dual hotend
32 space_behind_nozzle = 15;// space behind the nozzle where we're allowed to go
33 // without the fear of hitting carriage
34
31 snapper_d = 8; snapper_overlap=0.2;// snip snap 35 snapper_d = 8; snapper_overlap=0.2;// snip snap
32 36
33smooth_f = 120; 37smooth_f = 120;
34 38
35type="3jets"; // "3jets" ; // circular|3jets 39 type="circular"; // circular|3jets
36ductshape="square"; // square|round 40ductshape="square"; // square|round
41 dual=true; // dual or single
37 42
43to_midduct = fanduct_ir+fanduct_shell+fanduct_w/2;
44dual_spots = [ [+space_behind_nozzle, -(to_midduct+nozzles_apart/2)],
45 [- to_midduct, -(to_midduct+nozzles_apart/2)],
46 [- to_midduct, 0] ];
38 47
39module fanduct(type=type,ductshape=ductshape) { 48module fanduct(type=type,ductshape=ductshape,dual=dual) {
40
41 // ***duct is all around! 49 // ***duct is all around!
42 module duct(what) { 50 module duct(what) {
51 module single() {
43 if(what=="in") { 52 if(what=="in") {
44 sh = fanduct_w+2*fanduct_shell; sv = fanduct_h+2*fanduct_shell; 53 sh = fanduct_w+2*fanduct_shell; sv = fanduct_h+2*fanduct_shell;
45 smax = max(sh,sv); 54 smax = max(sh,sv);
@@ -69,6 +78,33 @@ module fanduct(type=type,ductshape=ductshape) {
69 } 78 }
70 } 79 }
71 } 80 }
81 module dual() {
82 module hulls(spots=dual_spots) {
83 for(my=[0,1]) mirror([0,my,0]) for(pn=[0:1:len(spots)-2]) hull() {
84 for(p=[spots[pn],spots[pn+1]]) translate(p) children();
85 }
86 }
87 if(what=="in") {
88 hulls() cylinder(d=fanduct_w+2*fanduct_shell,h=fanduct_h+2*fanduct_shell);
89 }else if(what=="out") {
90 sh = fanduct_w; sv = fanduct_h;
91 smax = max(sh,sv);
92 translate([0,0,fanduct_shell]) hulls() {
93 cylinder(d=fanduct_w,h=fanduct_h/2);
94 translate([0,0,fanduct_h/2])
95 scale([sh/smax,sh/smax,sv/smax])
96 intersection() {
97 sphere(d=smax,$fn=36);
98 translate([0,0,-1])
99 cylinder(d=smax+2,h=smax+2,$fn=36);
100 }
101 }
102 }
103 }
104
105 if(dual) dual();
106 else single();
107 }
72 108
73 // ***bumps for easier position adjustments in line with hotend 109 // ***bumps for easier position adjustments in line with hotend
74 module marks(what) { 110 module marks(what) {