|
|
|
@@ -28,6 +28,15 @@ 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) { |
@@ -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>; |
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: */ |
|