summaryrefslogtreecommitdiff
path: root/e3dv6.scad
Unidiff
Diffstat (limited to 'e3dv6.scad') (more/less context) (ignore whitespace changes)
-rw-r--r--e3dv6.scad63
1 files changed, 51 insertions, 12 deletions
diff --git a/e3dv6.scad b/e3dv6.scad
index 902eb52..9b74f8a 100644
--- a/e3dv6.scad
+++ b/e3dv6.scad
@@ -28,6 +28,15 @@ the_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) {
@@ -47,13 +56,27 @@ module heatershape(bubbled=true) {
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);
@@ -90,10 +113,26 @@ use <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: */