summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--e3dv6.scad63
-rw-r--r--stuff.scad2
-rw-r--r--view.scad6
3 files changed, 57 insertions, 14 deletions
diff --git a/e3dv6.scad b/e3dv6.scad
index 902eb52..9b74f8a 100644
--- a/e3dv6.scad
+++ b/e3dv6.scad
@@ -1,99 +1,138 @@
1include <stuff.scad>; 1include <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
24sv=hs_t+ss; 24sv=hs_t+ss;
25 25
26the_w = ss + max(c_tw,ts_t)+hb_w+c_t + ss; 26the_w = ss + max(c_tw,ts_t)+hb_w+c_t + ss;
27the_l = ss + hb_l + ss; 27the_l = ss + hb_l + ss;
28the_h = sv + hb_h + ss; 28the_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
36n_cone_d1 = n_cone_h * tan(40) * 2 + n_cone_d2;
37codpiece_h = n_h1 + n_cone_h - n_protrude;
38
30use <bubbles.scad>; 39use <bubbles.scad>;
31module heatershape(bubbled=true) { 40module 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
78vol_ = the_w*the_l*the_h 101vol_ = 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;
86vol = vol_*1.2; 109vol = vol_*1.2;
87echo("volume",vol); 110echo("volume",vol);
88 111
89use <view.scad>; 112use <view.scad>;
90use <mold.scad>; 113use <mold.scad>;
91 114
92view="*"; 115codpiece = true;
116view="inner";
93 117
94view(view=view,volume=vol) { 118view(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: */
diff --git a/stuff.scad b/stuff.scad
index 26fb39f..922e702 100644
--- a/stuff.scad
+++ b/stuff.scad
@@ -1,6 +1,8 @@
1layer_height=0.2; extrusion_width=0.5; 1layer_height=0.2; extrusion_width=0.5;
2epsilon = .01; 2epsilon = .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
diff --git a/view.scad b/view.scad
index e3dcbee..cc996d6 100644
--- a/view.scad
+++ b/view.scad
@@ -1,33 +1,35 @@
1include <stuff.scad>;
1use <mixing.scad>; 2use <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 */
10module view(view,volume) { 11module 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: */