author | Ivan Kokshaysky <ink@rc.ru> | 2016-11-05 11:38:27 (UTC) |
---|---|---|
committer | Ivan Kokshaysky <ink@rc.ru> | 2016-11-05 11:38:27 (UTC) |
commit | 3c2368a1dd659cdb89771c6cce4bb0999283311f (patch) (unidiff) | |
tree | ef19afe57993de315ada983c0f43e2e7d58ce06b | |
parent | 60c7c744af79d8b13256c17258ed45bfaa7dd0c4 (diff) | |
download | hotendery-3c2368a1dd659cdb89771c6cce4bb0999283311f.zip hotendery-3c2368a1dd659cdb89771c6cce4bb0999283311f.tar.gz hotendery-3c2368a1dd659cdb89771c6cce4bb0999283311f.tar.bz2 |
Nozzle cover and mold adjustments
- codpiece for the nozzle;
- shortened molds for single component silicone, namely
Abro "The Gasket Maker" Red ("abro" flag in stuff.scad).
Signed-off-by: Ivan Kokshaysky <ink@rc.ru>
-rw-r--r-- | e3dv6.scad | 63 | ||||
-rw-r--r-- | stuff.scad | 2 | ||||
-rw-r--r-- | view.scad | 6 |
3 files changed, 57 insertions, 14 deletions
@@ -1,99 +1,138 @@ | |||
1 | include <stuff.scad>; | 1 | include <stuff.scad>; |
2 | 2 | ||
3 | hb_w = 16; // width (along X axis) | 3 | hb_w = 16; // width (along X axis) |
4 | hb_l = 20; // length (along Y axis) | 4 | hb_l = 20; // length (along Y axis) |
5 | hb_h = 11.5; // height (guess!) | 5 | hb_h = 11.5; // height (guess!) |
6 | hb_d = 6; // heatbreak diameter | 6 | hb_d = 6; // heatbreak diameter |
7 | n_offset_w = 8; // nozzle offset from the left | 7 | n_offset_w = 8; // nozzle offset from the left |
8 | n_offset_l = 4.5;// nozzle offset from the front | 8 | n_offset_l = 4.5;// nozzle offset from the front |
9 | n_d = 7/cos(30);// nozzle (outermost) diameter | 9 | n_d = 7/cos(30);// nozzle (outermost) diameter |
10 | hs_offset_w = 8;// heater screw offset from the left | 10 | hs_offset_w = 8;// heater screw offset from the left |
11 | hs_offset_l = 17.5;// heater screw offset from the front | 11 | hs_offset_l = 17.5;// heater screw offset from the front |
12 | hs_d = 5.7; // heater screw diameter | 12 | hs_d = 5.7; // heater screw diameter |
13 | hs_t = 1.5; // heater screw head thickness | 13 | hs_t = 1.5; // heater screw head thickness |
14 | ts_offset_l = 3.5;// thermistor screw offset from the front | 14 | ts_offset_l = 3.5;// thermistor screw offset from the front |
15 | ts_offset_h = 4.8;// thermistor screw offset from the bottom | 15 | ts_offset_h = 4.8;// thermistor screw offset from the bottom |
16 | ts_d = 7; // thermistor screw diameter | 16 | ts_d = 7; // thermistor screw diameter |
17 | ts_t = 2.6; // thermistor screw head thickness | 17 | ts_t = 2.6; // thermistor screw head thickness |
18 | c_offset_l = 11.5;// cartrdige offset from the from | 18 | c_offset_l = 11.5;// cartrdige offset from the from |
19 | c_offset_h = 4; // cartridge offset from the bottom | 19 | c_offset_h = 4; // cartridge offset from the bottom |
20 | c_d = 6.1; // cartrdige diameter | 20 | c_d = 6.1; // cartrdige diameter |
21 | c_t = 1.7; // cartridge protrusion length (thickness) | 21 | c_t = 1.7; // cartridge protrusion length (thickness) |
22 | c_tw = 4.3; // thickness of the other cartridge end with wires | 22 | c_tw = 4.3; // thickness of the other cartridge end with wires |
23 | 23 | ||
24 | sv=hs_t+ss; | 24 | sv=hs_t+ss; |
25 | 25 | ||
26 | the_w = ss + max(c_tw,ts_t)+hb_w+c_t + ss; | 26 | the_w = ss + max(c_tw,ts_t)+hb_w+c_t + ss; |
27 | the_l = ss + hb_l + ss; | 27 | the_l = ss + hb_l + ss; |
28 | the_h = sv + hb_h + ss; | 28 | the_h = sv + hb_h + ss; |
29 | 29 | ||
30 | /* Nozzle stuff */ | ||
31 | n_protrude = 0.4;// nozzle tip protrusion from silicone | ||
32 | n_h1 = 3.6; // nozzle cone base from the heater body (minimal) | ||
33 | n_cone_h = 2; // nozzle cone height | ||
34 | n_cone_d2 = 1; // pad diameter of the 0.4 nozzle (works up to 0.6); see | ||
35 | // http://wiki.e3d-online.com/images/3/3a/V6-NOZZLE-ALL.pdf | ||
36 | n_cone_d1 = n_cone_h * tan(40) * 2 + n_cone_d2; | ||
37 | codpiece_h = n_h1 + n_cone_h - n_protrude; | ||
38 | |||
30 | use <bubbles.scad>; | 39 | use <bubbles.scad>; |
31 | module heatershape(bubbled=true) { | 40 | module heatershape(bubbled=true, codpiece=false) { |
32 | m = n_offset_l-hb_d/2; | 41 | m = n_offset_l-hb_d/2; |
33 | module topholes(h) { | 42 | module topholes(h) { |
34 | hull() { | 43 | hull() { |
35 | for(sx=[-1,1]) for(sy=[-1,1]) | 44 | for(sx=[-1,1]) for(sy=[-1,1]) |
36 | translate([hb_w/2+sx*(hb_w/2-m-hb_d/2),hb_l/2+sy*(hb_l/2-m-hb_d/2),0]) | 45 | translate([hb_w/2+sx*(hb_w/2-m-hb_d/2),hb_l/2+sy*(hb_l/2-m-hb_d/2),0]) |
37 | cylinder(d=hb_d,h=h,$fn=24); | 46 | cylinder(d=hb_d,h=h,$fn=24); |
38 | } | 47 | } |
39 | translate([-c_tw,c_offset_l-c_d/2,0]) | 48 | translate([-c_tw,c_offset_l-c_d/2,0]) |
40 | cube(size=[hb_w/2+c_tw,c_d,h]); | 49 | cube(size=[hb_w/2+c_tw,c_d,h]); |
41 | } | 50 | } |
42 | // main body and protrusion | 51 | // main body and protrusion |
43 | // body | 52 | // body |
44 | cube(size=[hb_w,hb_l,hb_h]); | 53 | cube(size=[hb_w,hb_l,hb_h]); |
45 | // protrusion | 54 | // protrusion |
46 | translate([0,0,hb_h]) { | 55 | translate([0,0,hb_h]) { |
47 | // irrelevant, because we print upside-down: mo = m+max(c_t,c_tw)+ss; th=3*ss; | 56 | // irrelevant, because we print upside-down: mo = m+max(c_t,c_tw)+ss; th=3*ss; |
48 | mo = protrude/4; th = protrude/2; | 57 | mo = protrude/4; th = protrude/2; |
49 | translate([0,0,-1]) topholes(h=ss+protrude); | 58 | translate([0,0,-1]) topholes(h=ss+th); |
50 | translate([0,0,ss+protrude-mo-th]) hull() { | 59 | if (!abro) |
51 | topholes(h=layer_height); | 60 | translate([0,0,ss+protrude-mo-th]) hull() { |
52 | translate([-c_tw-ss,-ss,mo]) | 61 | topholes(h=layer_height); |
53 | cube(size=[the_w,the_l,th]); | 62 | translate([-c_tw-ss,-ss,mo]) |
54 | } | 63 | cube(size=[the_w,the_l,th]); |
64 | } | ||
65 | else | ||
66 | translate([-c_tw-ss,-ss,ss]) | ||
67 | cube(size=[the_w,the_l,th]); | ||
55 | } | 68 | } |
56 | // nozzle | 69 | // nozzle |
57 | translate([n_offset_w,n_offset_l,1]) mirror([0,0,1]) cylinder(d=n_d,h=sv+1,$fn=24); | 70 | translate([n_offset_w,n_offset_l,1]) mirror([0,0,1]) |
71 | if (codpiece) { | ||
72 | mc_d2 = n_cone_d2 + n_protrude * tan(40) * 2; | ||
73 | intersection() { | ||
74 | cylinder(d = n_d, h = n_h1 + 1 + epsilon, $fn=24); | ||
75 | cylinder(d1 = n_d * 2, d2 = 0, h = n_h1 * 2 + 1, $fn=24); | ||
76 | } | ||
77 | translate([0, 0, n_h1 + 1]) | ||
78 | cylinder(h = n_cone_h - n_protrude, d1 = n_cone_d1, d2 = mc_d2, $fn = 32); | ||
79 | } else | ||
80 | cylinder(d=n_d,h=sv+1,$fn=24); | ||
58 | // heater screw | 81 | // heater screw |
59 | translate([hs_offset_w,hs_offset_l,1]) mirror([0,0,1]) cylinder(d=hs_d,h=hs_t+1,$fn=24); | 82 | translate([hs_offset_w,hs_offset_l,1]) mirror([0,0,1]) cylinder(d=hs_d,h=hs_t+1,$fn=24); |
60 | // thermistor screw | 83 | // thermistor screw |
61 | translate([1,ts_offset_l,ts_offset_h]) rotate([0,-90,0]) cylinder(d=ts_d,h=ts_t+1,$fn=24); | 84 | translate([1,ts_offset_l,ts_offset_h]) rotate([0,-90,0]) cylinder(d=ts_d,h=ts_t+1,$fn=24); |
62 | // cartridge on the right | 85 | // cartridge on the right |
63 | translate([hb_w-1,c_offset_l,c_offset_h]) rotate([0,90,0]) cylinder(d=c_d,h=c_t+1,$fn=24); | 86 | translate([hb_w-1,c_offset_l,c_offset_h]) rotate([0,90,0]) cylinder(d=c_d,h=c_t+1,$fn=24); |
64 | // cartrdige on the left | 87 | // cartrdige on the left |
65 | translate([1,c_offset_l,c_offset_h]) rotate([0,-90,0]) cylinder(d=c_d,h=c_tw+1,$fn=24); | 88 | translate([1,c_offset_l,c_offset_h]) rotate([0,-90,0]) cylinder(d=c_d,h=c_tw+1,$fn=24); |
66 | translate([-c_tw,c_offset_l-c_d/2,c_offset_h]) cube(size=[c_tw+1,c_d,hb_h-c_offset_h]); | 89 | translate([-c_tw,c_offset_l-c_d/2,c_offset_h]) cube(size=[c_tw+1,c_d,hb_h-c_offset_h]); |
67 | 90 | ||
68 | if(bubbled) { | 91 | if(bubbled) { |
69 | for(y=[0,hb_l]) translate([0,y,0]) bubbles(size=[hb_w,ss/2,hb_h]); | 92 | for(y=[0,hb_l]) translate([0,y,0]) bubbles(size=[hb_w,ss/2,hb_h]); |
70 | rotate([0,0,90]) bubbles(size=[hb_l,(c_tw+ss)/2,hb_h],d=(c_tw+ss)/2,s=1.1*(c_tw+ss)/2); | 93 | rotate([0,0,90]) bubbles(size=[hb_l,(c_tw+ss)/2,hb_h],d=(c_tw+ss)/2,s=1.1*(c_tw+ss)/2); |
71 | translate([hb_w,0,0]) rotate([0,0,90]) bubbles(size=[hb_l,(c_t+ss)/2,hb_h],d=(c_t+ss),s=1.1*(c_t+ss)); | 94 | translate([hb_w,0,0]) rotate([0,0,90]) bubbles(size=[hb_l,(c_t+ss)/2,hb_h],d=(c_t+ss),s=1.1*(c_t+ss)); |
72 | rotate([-90,0,0]) bubbles(size=[hb_w,sv/2,hb_l]); | 95 | rotate([-90,0,0]) bubbles(size=[hb_w,sv/2,hb_l]); |
73 | } | 96 | } |
74 | } | 97 | } |
75 | 98 | ||
76 | function vc(d,h) = PI*pow(d/2,2)*h; // cylinder volume | 99 | function vc(d,h) = PI*pow(d/2,2)*h; // cylinder volume |
77 | 100 | ||
78 | vol_ = the_w*the_l*the_h | 101 | vol_ = the_w*the_l*the_h |
79 | - hb_w*hb_l*hb_h // heater block | 102 | - hb_w*hb_l*hb_h // heater block |
80 | - vc(d=n_d,h=sv) // nozzle | 103 | - vc(d=n_d,h=sv) // nozzle |
81 | - vc(d=hs_d,h=hs_t) // heater screw | 104 | - vc(d=hs_d,h=hs_t) // heater screw |
82 | - vc(d=ts_d,h=ts_t) // thermistor_screw | 105 | - vc(d=ts_d,h=ts_t) // thermistor_screw |
83 | - vc(d=c_d,h=c_t) // cartridge on the right | 106 | - vc(d=c_d,h=c_t) // cartridge on the right |
84 | - vc(d=c_d,h=c_tw)/2 - c_d*c_tw*(hb_h-c_offset_h)// cartridge on the left | 107 | - vc(d=c_d,h=c_tw)/2 - c_d*c_tw*(hb_h-c_offset_h)// cartridge on the left |
85 | ; | 108 | ; |
86 | vol = vol_*1.2; | 109 | vol = vol_*1.2; |
87 | echo("volume",vol); | 110 | echo("volume",vol); |
88 | 111 | ||
89 | use <view.scad>; | 112 | use <view.scad>; |
90 | use <mold.scad>; | 113 | use <mold.scad>; |
91 | 114 | ||
92 | view="*"; | 115 | codpiece = true; |
116 | view="inner"; | ||
93 | 117 | ||
94 | view(view=view,volume=vol) { | 118 | view(view=view,volume=vol) { |
95 | mold(size=[the_w,the_l,the_h],s=ms,v_protrude=protrude,introffset=ss+c_offset_l); | 119 | cp_h = codpiece ? codpiece_h - sv : 0; |
96 | translate([ms+c_tw+ss,ms+ss,ms+sv]) heatershape(); | 120 | prt = abro ? protrude / 2 : protrude; |
97 | translate([ms+epsilon,ms+epsilon,ms+epsilon]) cube(size=[the_w-2*epsilon,the_l-2*epsilon,the_h-2*epsilon]); | 121 | difference() { |
122 | union() { | ||
123 | mold(size=[the_w,the_l,the_h],s=ms,v_protrude=prt,introffset=ss+c_offset_l); | ||
124 | if (codpiece) | ||
125 | translate([0, 0, -cp_h]) | ||
126 | cube([the_w + ms * 2, the_l + ms * 2, cp_h + epsilon]); | ||
127 | } | ||
128 | if (codpiece) | ||
129 | translate([ms + c_tw + ss + n_offset_w, ms + ss + n_offset_l, ms]) { | ||
130 | scale([1, 1, codpiece_h / (n_d + 2)]) | ||
131 | sphere(d = n_d + 2, $fn = 64); | ||
132 | } | ||
133 | } | ||
134 | translate([ms+c_tw+ss,ms+ss,ms+sv]) heatershape(true, codpiece); | ||
135 | translate([ms+epsilon,ms+epsilon,ms+epsilon - cp_h]) | ||
136 | cube(size=[the_w-2*epsilon,the_l-2*epsilon,the_h-2*epsilon + cp_h]); | ||
98 | } | 137 | } |
99 | /* vim:set ai sw=1: */ | 138 | /* vim:set ai sw=1: */ |
@@ -1,6 +1,8 @@ | |||
1 | layer_height=0.2; extrusion_width=0.5; | 1 | layer_height=0.2; extrusion_width=0.5; |
2 | epsilon = .01; | 2 | epsilon = .01; |
3 | 3 | ||
4 | protrude=10; // distance to protrude vertically | 4 | protrude=10; // distance to protrude vertically |
5 | ss=1; // minimum silicone shell thickness | 5 | ss=1; // minimum silicone shell thickness |
6 | ms=1; // mold shell thickness | 6 | ms=1; // mold shell thickness |
7 | |||
8 | abro = 1; // single component silicone | ||
@@ -1,33 +1,35 @@ | |||
1 | include <stuff.scad>; | ||
1 | use <mixing.scad>; | 2 | use <mixing.scad>; |
2 | 3 | ||
3 | /** | 4 | /** |
4 | * view(...) { | 5 | * view(...) { |
5 | * outer_mold();// children(0); | 6 | * outer_mold();// children(0); |
6 | * inner_shape();// children(1); | 7 | * inner_shape();// children(1); |
7 | * silicone(); // children(2); | 8 | * silicone(); // children(2); |
8 | * } | 9 | * } |
9 | */ | 10 | */ |
10 | module view(view,volume) { | 11 | module view(view,volume) { |
11 | module cou() { color("palegreen",0.7) children(); } | 12 | module cou() { color("palegreen",0.7) children(); } |
12 | module cin() { color("silver",0.8) children(); } | 13 | module cin() { color("silver",0.8) children(); } |
13 | module csi() { color("salmon",0.5) children(); } | 14 | module csi() { color("salmon",0.5) children(); } |
14 | module cmx() { color("gray",0.7) children(); } | 15 | module cmx() { color("gray",0.7) children(); } |
15 | if(view=="outer") cou() children(0); | 16 | if(view=="outer") cou() children(0); |
16 | else if(view=="inner") cin() children(1); | 17 | else if(view=="inner") cin() children(1); |
17 | else if(view=="mixplate") cmx() { | 18 | else if(view=="mixplate") cmx() { |
18 | mixing(volume=volume,what="vessel"); | 19 | mixing(volume=volume,what="vessel"); |
19 | translate([0,mixing_size(volume=volume)[1]/2+5,0]) | 20 | translate([0,mixing_size(volume=volume)[1]/2+5,0]) |
20 | rotate([0,0,90]) mixing(volume=volume,what="splitter"); | 21 | rotate([0,0,90]) mixing(volume=volume,what="splitter"); |
21 | }else if(view=="outcome") csi() { | 22 | }else if(view=="outcome") csi() { |
22 | difference() { | 23 | difference() { |
23 | children(2); | 24 | children(2); |
24 | children([0:1]); | 25 | children([0:1]); |
25 | } | 26 | } |
26 | }else{ | 27 | }else{ |
27 | cou() children(0); cin() children(1); | 28 | cou() children(0); cin() children(1); |
28 | csi() children(2); | 29 | csi() children(2); |
29 | translate([-mixing_size(volume=volume)[1]*2,0]) rotate([0,0,90]) | 30 | if (!abro) |
30 | cmx() mixing(volume=volume,what="altogethernow"); | 31 | translate([-mixing_size(volume=volume)[1]*2,0]) rotate([0,0,90]) |
32 | cmx() mixing(volume=volume,what="altogethernow"); | ||
31 | } | 33 | } |
32 | } | 34 | } |
33 | /* vim:set ai sw=1: */ | 35 | /* vim:set ai sw=1: */ |