acorn: v0
[clinton/3d-models.git] / etc / shelving-foot.scad
... / ...
CommitLineData
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
10// preview[view:east, tilt:top diagonal]
11
12// Length of slot for shelving leg
13slot_length = 32;
14// Thickness of slot for shelving leg
15slot_thickness = 1.8;
16
17// Thickness of wall around slot
18wall_thickness = 3;
19
20// Depth of the base foot
21base_depth = 4;
22// Depth of the slot and walls around the length
23slot_depth = 20;
24// Offset for leg slot into the base
25slot_offset = -1;
26
27$fs = 0.1;
28
29foot ();
30
31module base () {
32 side = slot_length + slot_thickness/2;
33 offset (r = wall_thickness) polygon ([ [0, 0], [ side , 0], [0, side] ]);
34}
35
36module walls () {
37 intersection () {
38 offset (r = wall_thickness) {
39 square ([slot_thickness, slot_length + slot_thickness/2]);
40 square ([slot_length + slot_thickness/2, slot_thickness]);
41 }
42 base ();
43 }
44}
45
46module slot () {
47 square ([slot_thickness, slot_length]);
48 square ([slot_length, slot_thickness]);
49
50 // tiny chamfer around bend
51 x = 2;
52 polygon ([ [0, 0], [ slot_thickness*2+x/2, 0], [0, slot_thickness*2+x/2] ]);
53}
54
55
56module foot () {
57 difference () {
58 union () {
59 linear_extrude (base_depth) base ();
60 translate ([0, 0, base_depth+slot_offset]) linear_extrude (slot_depth+slot_offset) walls ();
61 }
62 translate ([0, 0, base_depth+slot_offset]) linear_extrude (slot_depth+slot_offset+0.1) slot ();
63 }
64}