8ace09a8b7f6f2001557ff7fe13d687beb03dab8
[clinton/3d-models.git] / etc / shelving-foot.scad
1 // super simple feet for metal shelving
2 // Created 2017 Clinton Ebadi <clinton@unknownlamer.org>
3
4 // Released under the https://wiki.creativecommons.org/wiki/CC0
5 // To the extent possible under law, Clinton Ebadi has waived all
6 // copyright and related or neighboring rights to super simple feet
7 // for metal shelving.
8
9 // Length of slot for shelving leg
10 slot_length = 32;
11 // Thickness of slot for shelving leg
12 slot_thickness = 1.8;
13
14 // Thickness of wall around slot
15 wall_thickness = 3;
16
17 // Depth of the base foot
18 base_depth = 4;
19 // Depth of the slot and walls around the length
20 slot_depth = 20;
21 // Offset for leg slot into the base
22 slot_offset = -1;
23
24 $fs = 0.1;
25
26 foot ();
27
28 module base () {
29 side = slot_length + slot_thickness/2;
30 offset (r = wall_thickness) polygon ([ [0, 0], [ side , 0], [0, side] ]);
31 }
32
33 module walls () {
34 intersection () {
35 offset (r = wall_thickness) {
36 square ([slot_thickness, slot_length + slot_thickness/2]);
37 square ([slot_length + slot_thickness/2, slot_thickness]);
38 }
39 base ();
40 }
41 }
42
43 module slot () {
44 square ([slot_thickness, slot_length]);
45 square ([slot_length, slot_thickness]);
46
47 // tiny chamfer around bend
48 x = 2;
49 polygon ([ [0, 0], [ slot_thickness*2+x/2, 0], [0, slot_thickness*2+x/2] ]);
50 }
51
52
53 module foot () {
54 difference () {
55 union () {
56 linear_extrude (base_depth) base ();
57 translate ([0, 0, base_depth+slot_offset]) linear_extrude (slot_depth+slot_offset) walls ();
58 }
59 translate ([0, 0, base_depth+slot_offset]) linear_extrude (slot_depth+slot_offset+0.1) slot ();
60 }
61 }