Added Andrew's ssd-spacer
[cad-files.git] / rackable / 19to22adapter / 19to22adapter.escad
... / ...
CommitLineData
1// 19 to 22 inch rack adapter
2
3// Change these to adjust the total adapter size
4full_length = 80;
5full_width = 44.23;
6full_height = 45;
7
8// Change these to adjust the interface to your device
9support_bracket_thickness = 10;
10support_bracket_base_thickness = 2.5;
11support_bracket_hole_y_offset = 18;
12support_bracket_hole_z_offset = 18;
13support_bracket_hole_r = 2;
14
15// Change these to adjust the interface to your rack (should be standard)
16rack_mount_length = 20;
17rack_mount_thickness = 2.5;
18rack_mount_hole_r = 6.5 / 2;
19rack_mount_hole_x_offset = (11.75 / 2) + 5.3;
20rack_mount_hole_y_offset = rack_mount_hole_r + 2.9;
21
22// Add two triangle supports that end at the start of the interface to the rack.
23module dual_supports(length, width, height, support_length, support_thickness, support_base_thickness) {
24 difference() { // Extra triangle supports on both sides of the Y axis
25 translate([support_base_thickness, 0, 0])
26 linear_extrude(height(x, y) = (-width / support_length) * x + width) square(size = [support_length, width]);
27 translate([support_base_thickness, support_thickness, 0])
28 linear_extrude(height) square(size = [support_length, width - support_thickness * 2]);
29 }
30}
31
32// Create our basic L-shaped bracket
33module l_bracket(length, width, height, rack_thickness, support_base_thickness) {
34 difference() { // Cut our L bracket
35 linear_extrude(height) square(size = [length, width]);
36
37 translate([0,0, rack_thickness])
38 linear_extrude(height)
39 translate([support_base_thickness, 0]) square(size = [length, width]);
40 }
41}
42
43// Cuts the bolt holes for attachingto the rack
44module rack_bolt_holes(height, x_offset, y_offset, rack_hole_r) {
45 // Holes for rackmount
46 translate([x_offset, y_offset, 0])
47 linear_extrude(height) circle(r = rack_hole_r);
48}
49
50module support_screw_hole(height, y_offset, z_offset, support_hole_r) {
51 translate([-1, y_offset, z_offset]) rotate(a = [0, 90])
52 linear_extrude(height) circle(r = support_hole_r);
53}
54
55// Builds the full object
56module rack_adapter(length, width, height, rack_length, rack_thickness, rack_hole_r, rack_hole_x_offset, rack_hole_y_offset, support_thickness, support_base_thickness, support_hole_y_offset, support_hole_z_offset, support_hole_r) {
57
58 support_length = length - rack_length;
59
60 difference() { // For adding the screw holes
61
62 union(r = 0) { // Combine supports with L bracket
63 dual_supports(length, width, height, support_length, support_thickness, support_base_thickness);
64 l_bracket(length, width, height, rack_thickness, support_base_thickness);
65 }
66
67 // Holes for rackmount
68 rack_bolt_holes(height, rack_hole_x_offset + support_length, width - rack_hole_y_offset, rack_hole_r);
69 rack_bolt_holes(height, rack_hole_x_offset + support_length, rack_hole_y_offset, rack_hole_r);
70
71 // Holes for mounting to unit
72
73 support_screw_hole(height, support_hole_y_offset, support_hole_z_offset, support_hole_r);
74 support_screw_hole(height, width - support_hole_y_offset, support_hole_z_offset, support_hole_r);
75 support_screw_hole(height, support_hole_y_offset, height - support_hole_z_offset, support_hole_r);
76 support_screw_hole(height, width - support_hole_y_offset, height - support_hole_z_offset, support_hole_r);
77 }
78}
79
80// Call the main construct
81rack_adapter(full_length, full_width, full_height, rack_mount_length, rack_mount_thickness, rack_mount_hole_r, rack_mount_hole_x_offset, rack_mount_hole_y_offset, support_bracket_thickness, support_bracket_base_thickness, support_bracket_hole_y_offset, support_bracket_hole_z_offset, support_bracket_hole_r);
82