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