summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--volcano.scad47
1 files changed, 44 insertions, 3 deletions
diff --git a/volcano.scad b/volcano.scad
index 00ff64e..3c0ff04 100644
--- a/volcano.scad
+++ b/volcano.scad
@@ -7,104 +7,145 @@ volcano_n_offset_w = 4.5; // nozzle offset from the left edge along width axis
7 volcano_n_offset_l = volcano_l-15.5;// nozzle offset from the front along length axis 7 volcano_n_offset_l = volcano_l-15.5;// nozzle offset from the front along length axis
8 volcano_c_offset_w = 4; // cartridge offset from the left edge along width axis 8 volcano_c_offset_w = 4; // cartridge offset from the left edge along width axis
9 volcano_c_offset_l = volcano_l-8;// cartridge offset from the front along the length axis 9 volcano_c_offset_l = volcano_l-8;// cartridge offset from the front along the length axis
10 volcano_c_d = 6.1; // cartridge diameter 10 volcano_c_d = 6.1; // cartridge diameter
11 volcano_n_d = 7/cos(30); // nozzle (outermost) diameter 11 volcano_n_d = 7/cos(30); // nozzle (outermost) diameter
12 volcano_c_t = 2; // cartridge thickness (of the protruding part) 12 volcano_c_t = 2; // cartridge thickness (of the protruding part)
13 volcano_hs_h = [volcano_h-14.5,volcano_h-5.5];// the heater screws offsets from the bottom of the heater 13 volcano_hs_h = [volcano_h-14.5,volcano_h-5.5];// the heater screws offsets from the bottom of the heater
14 volcano_hs_d = 5.7; // and their diameter 14 volcano_hs_d = 5.7; // and their diameter
15 volcano_hs_t = 1.5; // and thickness 15 volcano_hs_t = 1.5; // and thickness
16 volcano_hs_offset_l = volcano_l-2.5;// heater screw offset from the front along the length axis 16 volcano_hs_offset_l = volcano_l-2.5;// heater screw offset from the front along the length axis
17 volcano_ts_d = 7; // Thermistor screw diameter 17 volcano_ts_d = 7; // Thermistor screw diameter
18 volcano_ts_t = 2.6; // Thermistor screw thickness 18 volcano_ts_t = 2.6; // Thermistor screw thickness
19 volcano_ts_h = volcano_h-12; // Thermistor screw offset from the bottom of the heater 19 volcano_ts_h = volcano_h-12; // Thermistor screw offset from the bottom of the heater
20 volcano_ts_offset_l = volcano_l-11.5;// Thermistor screw offset from the front along the length axis 20 volcano_ts_offset_l = volcano_l-11.5;// Thermistor screw offset from the front along the length axis
21 volcano_cutoff_t = 1.5; // Cutoff on the top thickness (depth) 21 volcano_cutoff_t = 1.5; // Cutoff on the top thickness (depth)
22 volcano_cutoff_l = 8; // Length of the cutoff (the cutoff is on the back) 22 volcano_cutoff_l = 8; // Length of the cutoff (the cutoff is on the back)
23 23
24sv=volcano_c_t+ss; // shell vertical 24sv=volcano_c_t+ss; // shell vertical
25 sh=ss; // shell horizontal 25 sh=ss; // shell horizontal
26 26
27the_w = volcano_w+volcano_ts_t+volcano_hs_t+2*sh; 27the_w = volcano_w+volcano_ts_t+volcano_hs_t+2*sh;
28the_l = volcano_l+2*sh; 28the_l = volcano_l+2*sh;
29the_h = volcano_h+sv; 29the_h = volcano_h+sv;
30 30
31/* Nozzle stuff */
32 n_protrude = 0.4;// nozzle tip protrusion from silicone
33 n_h1 = 3; // nozzle cone base from the heater body (minimal)
34 n_cone_h = 2; // nozzle cone height
35 n_cone_d2 = 1; // pad diameter of the 0.4 nozzle (works up to 0.6); see
36 // http://wiki.e3d-online.com/images/3/3a/V6-NOZZLE-ALL.pdf
37
38n_cone_d1 = n_cone_h * tan(40) * 2 + n_cone_d2;
39codpiece_h = n_h1 + n_cone_h - n_protrude;
40
41codpiece=true;
42
31use <bubbles.scad>; 43use <bubbles.scad>;
32module heatershape() { 44module heatershape(codpiece=codpiece) {
33 difference() { 45 difference() {
34 union() { // main body and protrusion 46 union() { // main body and protrusion
35 cube(size=[volcano_w,volcano_l,volcano_h]); 47 cube(size=[volcano_w,volcano_l,volcano_h]);
36 translate([0,0,volcano_h]) { 48 translate([0,0,volcano_h]) {
37 pt = [volcano_w,volcano_l-volcano_cutoff_l,protrude]; 49 pt = [volcano_w,volcano_l-volcano_cutoff_l,protrude];
38 translate([0,0,-1]) 50 translate([0,0,-1])
39 cube(size=[pt[0],pt[1],pt[2]+1]); 51 cube(size=[pt[0],pt[1],pt[2]+1]);
40 hull() { 52 hull() {
41 cube(size=pt); 53 cube(size=pt);
42 translate([-volcano_hs_t-sh,0,max(volcano_ts_t,volcano_hs_t)+sh]) 54 translate([-volcano_hs_t-sh,0,max(volcano_ts_t,volcano_hs_t)+sh])
43 cube(size=[the_w,pt[1],pt[2]-max(volcano_ts_t,volcano_hs_t)-sh]); 55 cube(size=[the_w,pt[1],pt[2]-max(volcano_ts_t,volcano_hs_t)-sh]);
44 translate([0,-sh,sh]) 56 translate([0,-sh,sh])
45 cube(size=[pt[0],pt[1]+2*sh,pt[2]-sh]); 57 cube(size=[pt[0],pt[1]+2*sh,pt[2]-sh]);
46 } 58 }
47 } 59 }
48 } 60 }
49 // cutoff on top 61 // cutoff on top
50 translate([-1,volcano_l-volcano_cutoff_l+volcano_cutoff_t,volcano_h-volcano_cutoff_t]) { 62 translate([-1,volcano_l-volcano_cutoff_l+volcano_cutoff_t,volcano_h-volcano_cutoff_t]) {
51 cube(size=[volcano_w+2,volcano_cutoff_l-volcano_cutoff_t+1,volcano_cutoff_t+1]); 63 cube(size=[volcano_w+2,volcano_cutoff_l-volcano_cutoff_t+1,volcano_cutoff_t+1]);
52 translate([0,0,volcano_cutoff_t]) 64 translate([0,0,volcano_cutoff_t])
53 rotate([0,90,0]) 65 rotate([0,90,0])
54 cylinder(r=volcano_cutoff_t,h=volcano_w+2,$fn=24); 66 cylinder(r=volcano_cutoff_t,h=volcano_w+2,$fn=24);
55 } 67 }
56 // screwhole on top of protrusion 68 // screwhole on top of protrusion
57 translate([volcano_w/2,(volcano_l-volcano_cutoff_l)/2,volcano_h+protrude+2]) 69 translate([volcano_w/2,(volcano_l-volcano_cutoff_l)/2,volcano_h+protrude+2])
58 mirror([0,0,1]) 70 mirror([0,0,1])
59 cylinder(d=3,h=protrude+1); 71 cylinder(d=3,h=protrude+1);
60 } 72 }
61 // nozzle 73 // nozzle
62 translate([volcano_n_offset_w,volcano_n_offset_l,-sv]) 74 translate([volcano_n_offset_w,volcano_n_offset_l,-sv])
63 cylinder(d=volcano_n_d,h=sv+1,$fn=24); 75 if(codpiece) {
76 translate([0,0,sv]) mirror([0,0,1]) {
77 translate([0,0,-1]) cylinder(d=volcano_n_d,h=n_h1+1,$fn=32);
78 translate([0,0,n_h1-epsilon]) cylinder(d1=n_cone_d1,d2=n_cone_d2+n_protrude*tan(40)*2,h=n_cone_h-n_protrude,$fn=32);
79 }
80 /*
81 mc_d2 = n_cone_d2 + n_protrude * tan(40) * 2;
82 intersection() {
83 cylinder(d = volcano_n_d, h = n_h1 + 1 + epsilon, $fn=24);
84 translate([0,0,-n_h1]) cylinder(d2 = volcano_n_d * 2, d1 = 0, h = n_h1 * 2 + 1, $fn=24);
85 }
86 mirror([0,0,1]) translate([0,0,-epsilon]) cylinder(h = n_cone_h - n_protrude, d1 = n_cone_d1, d2 = mc_d2, $fn = 32);
87 */
88 }else cylinder(d=volcano_n_d,h=sv+1,$fn=24);
64 // cartridge 89 // cartridge
65 translate([volcano_c_offset_w,volcano_c_offset_l,-volcano_c_t]) 90 translate([volcano_c_offset_w,volcano_c_offset_l,-volcano_c_t])
66 cylinder(d=volcano_c_d,h=volcano_c_t+1,$fn=24); 91 cylinder(d=volcano_c_d,h=volcano_c_t+1,$fn=24);
67 // heatblock screws 92 // heatblock screws
68 for(h=volcano_hs_h) 93 for(h=volcano_hs_h)
69 translate([1,volcano_hs_offset_l,h]) 94 translate([1,volcano_hs_offset_l,h])
70 rotate([0,-90,0]) 95 rotate([0,-90,0])
71 cylinder(d=volcano_hs_d,h=volcano_hs_t+1,$fn=24); 96 cylinder(d=volcano_hs_d,h=volcano_hs_t+1,$fn=24);
72 // thermistor screw 97 // thermistor screw
73 translate([volcano_w-1,volcano_ts_offset_l,volcano_ts_h]) 98 translate([volcano_w-1,volcano_ts_offset_l,volcano_ts_h])
74 rotate([0,90,0]) 99 rotate([0,90,0])
75 cylinder(d=volcano_ts_d,h=volcano_ts_t+1,$fn=24); 100 cylinder(d=volcano_ts_d,h=volcano_ts_t+1,$fn=24);
76 bubbles(size=[volcano_w,sh/2,volcano_h]); 101 bubbles(size=[volcano_w,sh/2,volcano_h]);
77 translate([0,volcano_l,0]) bubbles(size=[volcano_w,sh/2,volcano_h-volcano_cutoff_t]); 102 translate([0,volcano_l,0]) bubbles(size=[volcano_w,sh/2,volcano_h-volcano_cutoff_t]);
78 for(x=[0,volcano_w]) translate([x,0,0]) 103 for(x=[0,volcano_w]) translate([x,0,0])
79 rotate([0,0,90]) bubbles(size=[volcano_l,(volcano_hs_t+sh)/2,volcano_h-volcano_cutoff_t]); 104 rotate([0,0,90]) bubbles(size=[volcano_l,(volcano_hs_t+sh)/2,volcano_h-volcano_cutoff_t]);
80 rotate([-90,0,0]) 105 rotate([-90,0,0])
81 bubbles(size=[volcano_w,sv/2,volcano_l]); 106 bubbles(size=[volcano_w,sv/2,volcano_l]);
82} 107}
83module silicone() { 108module silicone() {
84 translate([-sh-volcano_hs_t,-sh,-sv]) 109 translate([-sh-volcano_hs_t,-sh,-sv])
85 cube(size=[the_w,the_l,the_h-epsilon]); 110 cube(size=[the_w,the_l,the_h-epsilon]);
86} 111}
87 112
88use <mold.scad>; 113use <mold.scad>;
89 114
90vol_ = the_w*the_l*the_h 115vol_ = the_w*the_l*the_h
91 - volcano_w*volcano_l*volcano_h // heater block 116 - volcano_w*volcano_l*volcano_h // heater block
92 + volcano_w*volcano_cutoff_t*volcano_cutoff_l// cutoff 117 + volcano_w*volcano_cutoff_t*volcano_cutoff_l// cutoff
93 - PI*pow(volcano_n_d/2,2)*sv // nozzle 118 - PI*pow(volcano_n_d/2,2)*sv // nozzle
94 - PI*pow(volcano_c_d/2,2)*volcano_c_t // cartridge 119 - PI*pow(volcano_c_d/2,2)*volcano_c_t // cartridge
95 - PI*pow(volcano_ts_d/2,2)*volcano_ts_t// thermistor screw 120 - PI*pow(volcano_ts_d/2,2)*volcano_ts_t// thermistor screw
96 - PI*pow(volcano_hs_d/2,2)*volcano_hs_t *2// heater screws 121 - PI*pow(volcano_hs_d/2,2)*volcano_hs_t *2// heater screws
97; 122;
98vol = vol_*1.2; 123vol = vol_*1.2;
99echo("volume",vol); 124echo("volume",vol);
100 125
101use <view.scad>; 126use <view.scad>;
102 127
103view="*"; 128view="*";
104 129
130difference() {
105view(view=view,volume=vol) { 131view(view=view,volume=vol) {
106 mold(size=[the_w,the_l,the_h],s=ms,v_protrude=protrude,introffset=(volcano_l-volcano_cutoff_l)*3/4); 132 difference() {
133 union() {
134 echo("ch",volcano_n_offset_l+sh-volcano_n_d/2-1);
135 mold(size=[the_w,the_l,the_h],s=ms,v_protrude=protrude,introffset=(volcano_l-volcano_cutoff_l)*3/4,
136 chamfer = volcano_n_offset_l+sh-volcano_n_d/2-1);
137 if(codpiece)
138 translate([0,0,-codpiece_h+sv])
139 cube([the_w + ms*2,the_l + ms*2, codpiece_h - sv + epsilon]);
140 }
141 if(codpiece)
142 translate([ms+ss+volcano_hs_t+volcano_n_offset_w,ms+ss+volcano_n_offset_l,ms])
143 scale([1,1,2*(codpiece_h-sv)/(volcano_n_d+2)])
144 sphere(d=volcano_n_d+2,$fn=64);
145 }
107 translate([ms+volcano_hs_t+sh,ms+sh,ms+sv]) heatershape(); 146 translate([ms+volcano_hs_t+sh,ms+sh,ms+sv]) heatershape();
108 translate([ms+epsilon,ms+epsilon,ms+epsilon]) cube(size=[the_w-2*epsilon,the_l-2*epsilon,the_h]); 147 translate([ms+epsilon,ms+epsilon,ms+epsilon]) cube(size=[the_w-2*epsilon,the_l-2*epsilon,the_h]);
109} 148}
149 * translate([ss+sh+volcano_w/2,-1,-2]) cube(size=[40,40,40]);
150}
110/* vim:set ai sw=1: */ 151/* vim:set ai sw=1: */