CommitLineData
a3f445db
CE
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
10slot_length = 32;
11// Thickness of slot for shelving leg
12slot_thickness = 1.8;
13
14// Thickness of wall around slot
15wall_thickness = 3;
16
17// Depth of the base foot
18base_depth = 4;
19// Depth of the slot and walls around the length
20slot_depth = 20;
21// Offset for leg slot into the base
22slot_offset = -1;
23
24\$fs = 0.1;
25
26foot ();
27
28module base () {
29 side = slot_length + slot_thickness/2;
30 offset (r = wall_thickness) polygon ([ [0, 0], [ side , 0], [0, side] ]);
31}
32
33module 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
43module 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
53module 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}