-rw-r--r-- | volcano.scad | 53 |
1 files changed, 47 insertions, 6 deletions
diff --git a/volcano.scad b/volcano.scad index 00ff64e..3c0ff04 100644 --- a/volcano.scad +++ b/volcano.scad @@ -28,8 +28,20 @@ the_w = volcano_w+volcano_ts_t+volcano_hs_t+2*sh; the_l = volcano_l+2*sh; the_h = volcano_h+sv; +/* Nozzle stuff */ +n_protrude = 0.4; // nozzle tip protrusion from silicone +n_h1 = 3; // 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; + +codpiece=true; + use <bubbles.scad>; -module heatershape() { +module heatershape(codpiece=codpiece) { difference() { union() { // main body and protrusion cube(size=[volcano_w,volcano_l,volcano_h]); @@ -60,7 +72,20 @@ module heatershape() { } // nozzle translate([volcano_n_offset_w,volcano_n_offset_l,-sv]) - cylinder(d=volcano_n_d,h=sv+1,$fn=24); + if(codpiece) { + translate([0,0,sv]) mirror([0,0,1]) { + translate([0,0,-1]) cylinder(d=volcano_n_d,h=n_h1+1,$fn=32); + 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); + } + /* + mc_d2 = n_cone_d2 + n_protrude * tan(40) * 2; + intersection() { + cylinder(d = volcano_n_d, h = n_h1 + 1 + epsilon, $fn=24); + translate([0,0,-n_h1]) cylinder(d2 = volcano_n_d * 2, d1 = 0, h = n_h1 * 2 + 1, $fn=24); + } + mirror([0,0,1]) translate([0,0,-epsilon]) cylinder(h = n_cone_h - n_protrude, d1 = n_cone_d1, d2 = mc_d2, $fn = 32); + */ + }else cylinder(d=volcano_n_d,h=sv+1,$fn=24); // cartridge translate([volcano_c_offset_w,volcano_c_offset_l,-volcano_c_t]) cylinder(d=volcano_c_d,h=volcano_c_t+1,$fn=24); @@ -102,9 +127,25 @@ use <view.scad>; view="*"; -view(view=view,volume=vol) { - mold(size=[the_w,the_l,the_h],s=ms,v_protrude=protrude,introffset=(volcano_l-volcano_cutoff_l)*3/4); - translate([ms+volcano_hs_t+sh,ms+sh,ms+sv]) heatershape(); - translate([ms+epsilon,ms+epsilon,ms+epsilon]) cube(size=[the_w-2*epsilon,the_l-2*epsilon,the_h]); +difference() { + view(view=view,volume=vol) { + difference() { + union() { + echo("ch",volcano_n_offset_l+sh-volcano_n_d/2-1); + mold(size=[the_w,the_l,the_h],s=ms,v_protrude=protrude,introffset=(volcano_l-volcano_cutoff_l)*3/4, + chamfer = volcano_n_offset_l+sh-volcano_n_d/2-1); + if(codpiece) + translate([0,0,-codpiece_h+sv]) + cube([the_w + ms*2,the_l + ms*2, codpiece_h - sv + epsilon]); + } + if(codpiece) + translate([ms+ss+volcano_hs_t+volcano_n_offset_w,ms+ss+volcano_n_offset_l,ms]) + scale([1,1,2*(codpiece_h-sv)/(volcano_n_d+2)]) + sphere(d=volcano_n_d+2,$fn=64); + } + translate([ms+volcano_hs_t+sh,ms+sh,ms+sv]) heatershape(); + translate([ms+epsilon,ms+epsilon,ms+epsilon]) cube(size=[the_w-2*epsilon,the_l-2*epsilon,the_h]); + } + * translate([ss+sh+volcano_w/2,-1,-2]) cube(size=[40,40,40]); } /* vim:set ai sw=1: */ |