summaryrefslogtreecommitdiff
path: root/volcano.scad
blob: 7f7ffcefd8afc47dec4b72aa9b8009323a2cd50c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
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: */