summaryrefslogtreecommitdiff
path: root/e3dv6.scad
Side-by-side diff
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;
the_h = sv + hb_h + ss;
+/* Nozzle stuff */
+n_protrude = 0.4; // nozzle tip protrusion from silicone
+n_h1 = 3.6; // nozzle cone base from the heater body (minimal)
+n_cone_h = 2; // nozzle cone height
+n_cone_d2 = 1; // pad diameter of the 0.4 nozzle (works up to 0.6); see
+ // http://wiki.e3d-online.com/images/3/3a/V6-NOZZLE-ALL.pdf
+n_cone_d1 = n_cone_h * tan(40) * 2 + n_cone_d2;
+codpiece_h = n_h1 + n_cone_h - n_protrude;
+
use <bubbles.scad>;
-module heatershape(bubbled=true) {
+module heatershape(bubbled=true, codpiece=false) {
m = n_offset_l-hb_d/2;
module topholes(h) {
@@ -47,13 +56,27 @@ module heatershape(bubbled=true) {
// irrelevant, because we print upside-down: mo = m+max(c_t,c_tw)+ss; th=3*ss;
mo = protrude/4; th = protrude/2;
- translate([0,0,-1]) topholes(h=ss+protrude);
- translate([0,0,ss+protrude-mo-th]) hull() {
- topholes(h=layer_height);
- translate([-c_tw-ss,-ss,mo])
- cube(size=[the_w,the_l,th]);
- }
+ translate([0,0,-1]) topholes(h=ss+th);
+ if (!abro)
+ translate([0,0,ss+protrude-mo-th]) hull() {
+ topholes(h=layer_height);
+ translate([-c_tw-ss,-ss,mo])
+ cube(size=[the_w,the_l,th]);
+ }
+ else
+ translate([-c_tw-ss,-ss,ss])
+ cube(size=[the_w,the_l,th]);
}
// nozzle
- translate([n_offset_w,n_offset_l,1]) mirror([0,0,1]) cylinder(d=n_d,h=sv+1,$fn=24);
+ translate([n_offset_w,n_offset_l,1]) mirror([0,0,1])
+ if (codpiece) {
+ mc_d2 = n_cone_d2 + n_protrude * tan(40) * 2;
+ intersection() {
+ cylinder(d = n_d, h = n_h1 + 1 + epsilon, $fn=24);
+ cylinder(d1 = n_d * 2, d2 = 0, h = n_h1 * 2 + 1, $fn=24);
+ }
+ translate([0, 0, n_h1 + 1])
+ cylinder(h = n_cone_h - n_protrude, d1 = n_cone_d1, d2 = mc_d2, $fn = 32);
+ } else
+ cylinder(d=n_d,h=sv+1,$fn=24);
// heater screw
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>;
use <mold.scad>;
-view="*";
+codpiece = true;
+view="inner";
view(view=view,volume=vol) {
- mold(size=[the_w,the_l,the_h],s=ms,v_protrude=protrude,introffset=ss+c_offset_l);
- translate([ms+c_tw+ss,ms+ss,ms+sv]) heatershape();
- translate([ms+epsilon,ms+epsilon,ms+epsilon]) cube(size=[the_w-2*epsilon,the_l-2*epsilon,the_h-2*epsilon]);
+ cp_h = codpiece ? codpiece_h - sv : 0;
+ prt = abro ? protrude / 2 : protrude;
+ difference() {
+ union() {
+ mold(size=[the_w,the_l,the_h],s=ms,v_protrude=prt,introffset=ss+c_offset_l);
+ if (codpiece)
+ translate([0, 0, -cp_h])
+ cube([the_w + ms * 2, the_l + ms * 2, cp_h + epsilon]);
+ }
+ if (codpiece)
+ translate([ms + c_tw + ss + n_offset_w, ms + ss + n_offset_l, ms]) {
+ scale([1, 1, codpiece_h / (n_d + 2)])
+ sphere(d = n_d + 2, $fn = 64);
+ }
+ }
+ translate([ms+c_tw+ss,ms+ss,ms+sv]) heatershape(true, codpiece);
+ translate([ms+epsilon,ms+epsilon,ms+epsilon - cp_h])
+ cube(size=[the_w-2*epsilon,the_l-2*epsilon,the_h-2*epsilon + cp_h]);
}
/* vim:set ai sw=1: */