include ; volcano_l = 20; // length (along Y axis) volcano_w = 11.5; // width (along X axis) volcano_h = 20; // height (guess!) volcano_n_offset_w = 4.5; // nozzle offset from the left edge along width axis volcano_n_offset_l = volcano_l-15.5; // nozzle offset from the front along length axis volcano_c_offset_w = 4; // cartridge offset from the left edge along width axis volcano_c_offset_l = volcano_l-8; // cartridge offset from the front along the length axis volcano_c_d = 6.1; // cartridge diameter volcano_n_d = 7/cos(30); // nozzle (outermost) diameter volcano_c_t = 2; // cartridge thickness (of the protruding part) volcano_hs_h = [volcano_h-14.5,volcano_h-5.5]; // the heater screws offsets from the bottom of the heater volcano_hs_d = 5.7; // and their diameter volcano_hs_t = 1.5; // and thickness volcano_hs_offset_l = volcano_l-2.5; // heater screw offset from the front along the length axis volcano_ts_d = 7; // Thermistor screw diameter volcano_ts_t = 2.6; // Thermistor screw thickness volcano_ts_h = volcano_h-12; // Thermistor screw offset from the bottom of the heater volcano_ts_offset_l = volcano_l-11.5; // Thermistor screw offset from the front along the length axis volcano_cutoff_t = 1.5; // Cutoff on the top thickness (depth) volcano_cutoff_l = 8; // Length of the cutoff (the cutoff is on the back) sv=volcano_c_t+ss; // shell vertical sh=ss; // shell horizontal 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 ; module heatershape(codpiece=codpiece) { difference() { union() { // main body and protrusion cube(size=[volcano_w,volcano_l,volcano_h]); translate([0,0,volcano_h]) { pt = [volcano_w,volcano_l-volcano_cutoff_l,protrude]; translate([0,0,-1]) cube(size=[pt[0],pt[1],pt[2]+1]); hull() { cube(size=pt); translate([-volcano_hs_t-sh,0,max(volcano_ts_t,volcano_hs_t)+sh]) cube(size=[the_w,pt[1],pt[2]-max(volcano_ts_t,volcano_hs_t)-sh]); translate([0,-sh,sh]) cube(size=[pt[0],pt[1]+2*sh,pt[2]-sh]); } } } // cutoff on top translate([-1,volcano_l-volcano_cutoff_l+volcano_cutoff_t,volcano_h-volcano_cutoff_t]) { cube(size=[volcano_w+2,volcano_cutoff_l-volcano_cutoff_t+1,volcano_cutoff_t+1]); translate([0,0,volcano_cutoff_t]) rotate([0,90,0]) cylinder(r=volcano_cutoff_t,h=volcano_w+2,$fn=24); } // screwhole on top of protrusion translate([volcano_w/2,(volcano_l-volcano_cutoff_l)/2,volcano_h+protrude+2]) mirror([0,0,1]) cylinder(d=3,h=protrude+1); } // nozzle translate([volcano_n_offset_w,volcano_n_offset_l,-sv]) 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); // heatblock screws for(h=volcano_hs_h) translate([1,volcano_hs_offset_l,h]) rotate([0,-90,0]) cylinder(d=volcano_hs_d,h=volcano_hs_t+1,$fn=24); // thermistor screw translate([volcano_w-1,volcano_ts_offset_l,volcano_ts_h]) rotate([0,90,0]) cylinder(d=volcano_ts_d,h=volcano_ts_t+1,$fn=24); bubbles(size=[volcano_w,sh/2,volcano_h]); translate([0,volcano_l,0]) bubbles(size=[volcano_w,sh/2,volcano_h-volcano_cutoff_t]); for(x=[0,volcano_w]) translate([x,0,0]) rotate([0,0,90]) bubbles(size=[volcano_l,(volcano_hs_t+sh)/2,volcano_h-volcano_cutoff_t]); rotate([-90,0,0]) bubbles(size=[volcano_w,sv/2,volcano_l]); } module silicone() { translate([-sh-volcano_hs_t,-sh,-sv]) cube(size=[the_w,the_l,the_h-epsilon]); } use ; vol_ = the_w*the_l*the_h - volcano_w*volcano_l*volcano_h // heater block + volcano_w*volcano_cutoff_t*volcano_cutoff_l // cutoff - PI*pow(volcano_n_d/2,2)*sv // nozzle - PI*pow(volcano_c_d/2,2)*volcano_c_t // cartridge - PI*pow(volcano_ts_d/2,2)*volcano_ts_t // thermistor screw - PI*pow(volcano_hs_d/2,2)*volcano_hs_t *2 // heater screws ; vol = vol_*1.2; echo("volume",vol); use ; view="*"; 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: */