|
diff --git a/mold.scad b/mold.scad index d5354b0..e4f93fc 100644 --- a/ mold.scad+++ b/ mold.scad |
|
@@ -1,48 +1,49 @@ |
1 | module mold( |
1 | module mold( |
2 | size, /* mold inner size */ |
2 | size, /* mold inner size */ |
3 | s=1, /* shell thickness */ |
3 | s=1, /* shell thickness */ |
4 | h_protrude=5,/* how far to protrude outside horizontally */ |
4 | h_protrude=-1,/* how far to protrude outside horizontally, default is size[2] */ |
5 | v_protrude=10,/* and vertically */ |
5 | v_protrude=10,/* and vertically */ |
6 | l_intrude=0,/* how far to intrude on the left */ |
6 | l_intrude=0,/* how far to intrude on the left */ |
7 | r_intrude=0,/* how far to intrude on the right */ |
7 | r_intrude=0,/* how far to intrude on the right */ |
8 | f_intrude=0,/* how far to intrude on the front */ |
8 | f_intrude=0,/* how far to intrude on the front */ |
9 | introffset,/* offset from the front of the left and right intrusions */ |
9 | introffset,/* offset from the front of the left and right intrusions */ |
10 | chamfer=1 |
10 | chamfer=1 |
11 | ) { |
11 | ) { |
12 | difference() { |
12 | difference() { |
13 | cube(size=[size[0]+2*s,size[1]+2*s,size[2]+s]); |
13 | cube(size=[size[0]+2*s,size[1]+2*s,size[2]+s]); |
14 | translate([s,s,s]) { |
14 | translate([s,s,s]) { |
15 | hull() { |
15 | hull() { |
16 | translate([chamfer,0,chamfer]) |
16 | translate([chamfer,0,chamfer]) |
17 | cube(size=[size[0]-2*chamfer,size[1],size[2]-2*chamfer]); |
17 | cube(size=[size[0]-2*chamfer,size[1],size[2]-2*chamfer]); |
18 | translate([0,chamfer,chamfer]) |
18 | translate([0,chamfer,chamfer]) |
19 | cube(size=[size[0],size[1]-2*chamfer,size[2]-2*chamfer]); |
19 | cube(size=[size[0],size[1]-2*chamfer,size[2]-2*chamfer]); |
20 | translate([chamfer,chamfer,0]) |
20 | translate([chamfer,chamfer,0]) |
21 | cube(size=[size[0]-2*chamfer,size[1]-2*chamfer,size[2]+1]); |
21 | cube(size=[size[0]-2*chamfer,size[1]-2*chamfer,size[2]+1]); |
22 | } |
22 | } |
23 | } |
23 | } |
24 | } |
24 | } |
25 | gw = 3*s; // guide width, in case I'll want to change it. |
25 | gw = 3*s; // guide width, in case I'll want to change it. |
26 | module trusion(in) { |
26 | h_protrude_ = h_protrude<0 ? size[2] : h_protrude; |
| |
27 | module trusion(in,gw=gw,h_protrude=h_protrude_) { |
27 | translate([-gw/2,0,s+size[2]]) union() { |
28 | translate([-gw/2,0,s+size[2]]) union() { |
28 | hull() { |
29 | hull() { |
29 | translate([0,0,in]) |
30 | translate([0,0,in]) |
30 | cube(size=[gw,in+s,v_protrude-in]); |
31 | cube(size=[gw,in+s,v_protrude-in]); |
31 | cube(size=[gw,s,in]); |
32 | cube(size=[gw,s,in]); |
32 | } |
33 | } |
33 | hull() { |
34 | hull() { |
34 | translate([0,0,-h_protrude]) |
35 | translate([0,0,-h_protrude]) |
35 | cube(size=[gw,s,v_protrude+h_protrude]); |
36 | cube(size=[gw,s,v_protrude+h_protrude]); |
36 | translate([0,-h_protrude,0]) |
37 | translate([0,-h_protrude,0]) |
37 | cube(size=[gw,s+h_protrude,v_protrude]); |
38 | cube(size=[gw,s+h_protrude,v_protrude]); |
38 | } |
39 | } |
39 | } |
40 | } |
40 | } |
41 | } |
41 | /* frontal guide */ |
42 | /* frontal guide */ |
42 | translate([s+size[0]/2,0,]) trusion(in=f_intrude); |
43 | translate([s+size[0]/2,0,]) trusion(in=f_intrude); |
43 | /* left guide */ |
44 | /* left guide */ |
44 | translate([0,s+introffset,0]) rotate([0,0,-90]) trusion(in=l_intrude); |
45 | translate([0,s+introffset,0]) rotate([0,0,-90]) trusion(in=l_intrude); |
45 | /* right guide */ |
46 | /* right guide */ |
46 | translate([size[0]+2*s,s+introffset,0]) rotate([0,0,90]) trusion(in=r_intrude); |
47 | translate([size[0]+2*s,s+introffset,0]) rotate([0,0,90]) trusion(in=r_intrude); |
47 | } |
48 | } |
48 | /* vim:set ai sw=1: */ |
49 | /* vim:set ai sw=1: */ |
|