summaryrefslogtreecommitdiff
path: root/volcano.scad
Side-by-side diff
Diffstat (limited to 'volcano.scad') (more/less context) (ignore whitespace changes)
-rw-r--r--volcano.scad108
1 files changed, 108 insertions, 0 deletions
diff --git a/volcano.scad b/volcano.scad
new file mode 100644
index 0000000..7f7ffce
--- a/dev/null
+++ b/volcano.scad
@@ -0,0 +1,108 @@
+include <stuff.scad>;
+
+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;
+
+use <bubbles.scad>;
+module heatershape() {
+ 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])
+ 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 <mold.scad>;
+
+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.scad>;
+
+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]);
+}
+/* vim:set ai sw=1: */