summaryrefslogtreecommitdiffabout
authorMichael Krelin <hacker@klever.net>2016-05-30 23:05:36 (UTC)
committer Michael Krelin <hacker@klever.net>2016-05-30 23:05:36 (UTC)
commitc11d5b7e8f4b8f0e7a20d81dd813a21e19b705c3 (patch) (unidiff)
treec361a9b9a84be5e1983404afdc98f3e77298664e
parentd2f2c94ddbbf6c00b6ea89257f8f3e242f9216bd (diff)
downloadfanductory-c11d5b7e8f4b8f0e7a20d81dd813a21e19b705c3.zip
fanductory-c11d5b7e8f4b8f0e7a20d81dd813a21e19b705c3.tar.gz
fanductory-c11d5b7e8f4b8f0e7a20d81dd813a21e19b705c3.tar.bz2
make the blow target adjustable
blow a bit below layer printed to target the neighborhood instead of the very nozzle
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--fanduct.scad9
1 files changed, 5 insertions, 4 deletions
diff --git a/fanduct.scad b/fanduct.scad
index 7fc1ff4..f4bb705 100644
--- a/fanduct.scad
+++ b/fanduct.scad
@@ -1,22 +1,23 @@
1use <snapper.scad>; 1use <snapper.scad>;
2 extrusion_width=.5; layer_height=.2; // print parameters 2 extrusion_width=.5; layer_height=.2; // print parameters
3 3
4 epsilon=.005; // for finer cuts 4 epsilon=.005; // for finer cuts
5 5
6 heater_w = 16; // heatblock width 6 heater_w = 16; // heatblock width
7 heater_l = 20; // heatblock length 7 heater_l = 20; // heatblock length
8 nozzle_offset=4.5;// nozzle offset from the edge of heatblock 8 nozzle_offset=4.5;// nozzle offset from the edge of heatblock
9 9
10 fanduct_elevation = 3; // fanduct elevation above nozzle tip 10 fanduct_elevation = 3; // fanduct elevation above nozzle tip
11 fanduct_blowtarget = -2; // what to blow at
11 fanduct_h = 6; // inner height of the duct 12 fanduct_h = 6; // inner height of the duct
12 fanduct_w = 7; // inner width of the duct 13 fanduct_w = 7; // inner width of the duct
13 fanduct_shell=1.2; // shell thickness 14 fanduct_shell=1.2; // shell thickness
14 fanduct_ir = sqrt(pow(heater_w/2,2)+pow(heater_l-nozzle_offset,2))+5;// inner radius 15 fanduct_ir = sqrt(pow(heater_w/2,2)+pow(heater_l-nozzle_offset,2))+5;// inner radius
15 16
16 jet_angle = 60; // angular width of the jet 17 jet_angle = 60; // angular width of the jet
17 18
18 inlet_w = 12.5; // inlet width 19 inlet_w = 12.5; // inlet width
19 inlet_h = 17; // inlet height 20 inlet_h = 17; // inlet height
20 inlet_l = 7; // inlet length of protrusion (or depth of intrusion:)) 21 inlet_l = 7; // inlet length of protrusion (or depth of intrusion:))
21 inlet_away = 15;// how far away inlet is 22 inlet_away = 15;// how far away inlet is
22 23
@@ -72,41 +73,41 @@ module fanduct(type=type) {
72 cylinder(d=2*extrusion_width,h=2*fanduct_shell+inlet_h,$fn=6); 73 cylinder(d=2*extrusion_width,h=2*fanduct_shell+inlet_h,$fn=6);
73 } 74 }
74 xyxyxy=concat(xyxy,[[0,0]]); 75 xyxyxy=concat(xyxy,[[0,0]]);
75 for(i=[0:1:len(xyxyxy)-2]) 76 for(i=[0:1:len(xyxyxy)-2])
76 hull() for(j=[i,i+1]) pin(xyxyxy[j]); 77 hull() for(j=[i,i+1]) pin(xyxyxy[j]);
77 } 78 }
78 79
79 module circus(what) { 80 module circus(what) {
80 if(what=="in") { 81 if(what=="in") {
81 difference() { 82 difference() {
82 rotate_extrude($fn=smooth_f) 83 rotate_extrude($fn=smooth_f)
83 polygon([ 84 polygon([
84 [0,-fanduct_elevation], 85 [0,-fanduct_elevation+fanduct_blowtarget+epsilon],
85 [fanduct_ir+fanduct_shell,fanduct_shell+fanduct_h/2], 86 [fanduct_ir+fanduct_shell,fanduct_shell+fanduct_h/2],
86 [fanduct_ir+fanduct_shell+fanduct_w/2,0], 87 [fanduct_ir+fanduct_shell+fanduct_w/2,0],
87 [0,-fanduct_elevation-.1]]); 88 [0,-fanduct_elevation+fanduct_blowtarget-epsilon]]);
88 translate([0,0,-1]) 89 translate([0,0,-1])
89 cylinder(r=hotend_clearance,h=fanduct_h+2*fanduct_shell+2,$fn=smooth_f); 90 cylinder(r=hotend_clearance,h=fanduct_h+2*fanduct_shell+2,$fn=smooth_f);
90 mirror([0,0,1]) 91 mirror([0,0,1])
91 translate([0,0,-epsilon]) 92 translate([0,0,-epsilon])
92 cylinder(r=fanduct_ir+fanduct_shell+1,h=fanduct_elevation+.1+2); 93 cylinder(r=fanduct_ir+fanduct_shell+1,h=fanduct_elevation+.1+2);
93 } 94 }
94 }else if(what=="out") { 95 }else if(what=="out") {
95 rotate_extrude($fn=smooth_f) 96 rotate_extrude($fn=smooth_f)
96 polygon([ 97 polygon([
97 [0,-fanduct_elevation], 98 [0,-fanduct_elevation+fanduct_blowtarget+epsilon],
98 [fanduct_ir+fanduct_shell+1,fanduct_h/2], 99 [fanduct_ir+fanduct_shell+1,fanduct_h/2],
99 [fanduct_ir+fanduct_w/2+fanduct_shell+1,fanduct_shell], 100 [fanduct_ir+fanduct_w/2+fanduct_shell+1,fanduct_shell],
100 [0,-fanduct_elevation-.1]]); 101 [0,-fanduct_elevation+fanduct_blowtarget-epsilon]]);
101 }else if(what=="airguides") { 102 }else if(what=="airguides") {
102 inr = fanduct_ir+fanduct_shell; our = inr+fanduct_w; 103 inr = fanduct_ir+fanduct_shell; our = inr+fanduct_w;
103 union() { 104 union() {
104 for(my=[0,1]) mirror([0,my,0]) { 105 for(my=[0,1]) mirror([0,my,0]) {
105 guideline([ 106 guideline([
106 [-our,inlet_w/6], 107 [-our,inlet_w/6],
107 [-inr*sin(60),inr*cos(60)] 108 [-inr*sin(60),inr*cos(60)]
108 ]); 109 ]);
109 a0=30; as=15; a1=180; 110 a0=30; as=15; a1=180;
110 for(a=[a0+as:as:a1]) { 111 for(a=[a0+as:as:a1]) {
111 f = as/(a1-a+as); 112 f = as/(a1-a+as);
112 rotate([0,0,a]) guideline([[-inr-fanduct_w*f,0]]); 113 rotate([0,0,a]) guideline([[-inr-fanduct_w*f,0]]);