blob: d130b40e4c7d8543eac64a4e3d2f0b61df344b38 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
/// ARRAY SIZE
// size of the array
num_hdd_x = 4;
num_hdd_y = 5;
/// PRINTER SPECIFICATION
// assumed space deviation of the resulting form; used to leave space
// in holes so that screws and rods do not stuck
pla_epsilon = 0.05;
/// PRIMARY DIMENSIONS
// width of vertical and horizontal bars
vrail_width = 15;
hrail_height = 15;
// depth of front and back
front_depth = 15;
back_depth = 6;
// length hdd is standing out to be grabbed
hdd_standout = 15;
// dimensions of the L-shaped rail between front and back
rail_width = 21;
rail_height = rail_width;
rail_thickness = 2;
// width and height of the horizontal support bar (U-shaped metal)
support_bar_width = 10 + pla_epsilon;
// width of the SATA power cable (including some extra space for
// navigation)
spc_width=3;
/// HDD SIZE (from spec)
// dimensions of HDDs; not model-specific
hdd_width = 101.6 + pla_epsilon;
hdd_height = 25.4 + pla_epsilon;
hdd_length = 146;
/// OPENSCAD HACKS
$fn = 180;
// a length larger than any constructed feature; use to simulate
// infinitely long structures (for difference operations)
large = 1000;
// A small quantity that does not change the print results. Use to
// displace surfaces of CSG operations to prevent them from overlapping.
epsilon = 0.0001;
/// COMPUTED DIMENSIONS
tray_width = hdd_width + vrail_width/2;
tray_height = hdd_height + hrail_height;
connector_width = vrail_width - 2*(1 + rail_thickness);
/// COMMON FUNCTIONS
// they do not belong here but are not enough to warrant a seperate
// file. sorry
module ccube(x) cube(x, center=true);
|