| 1 | // 19 to 22 inch rack adapter |
| 2 | |
| 3 | // Change these to adjust the total adapter size |
| 4 | full_length = 80; |
| 5 | full_width = 44.23; |
| 6 | full_height = 45; |
| 7 | |
| 8 | // Change these to adjust the interface to your device |
| 9 | support_bracket_thickness = 10; |
| 10 | support_bracket_base_thickness = 2.5; |
| 11 | support_bracket_hole_y_offset = 18; |
| 12 | support_bracket_hole_z_offset = 18; |
| 13 | support_bracket_hole_r = 2; |
| 14 | |
| 15 | // Change these to adjust the interface to your rack (should be standard) |
| 16 | rack_mount_length = 20; |
| 17 | rack_mount_thickness = 2.5; |
| 18 | rack_mount_hole_r = 6.5 / 2; |
| 19 | rack_mount_hole_x_offset = (11.75 / 2) + 5.3; |
| 20 | rack_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. |
| 23 | module 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 |
| 33 | module 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 |
| 44 | module 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 | |
| 50 | module 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 |
| 56 | module 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 |
| 81 | rack_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 | |