From 35556d55663d347d59ef505126eb150297558a99 Mon Sep 17 00:00:00 2001 From: Lisa Marie Maginnis Date: Mon, 4 Apr 2016 13:39:38 -0400 Subject: [PATCH] Added Andrew's ssd-spacer --- rackable/19to22adapter/19to22adapter.escad | 24 ++-- rackable/25to35adapter/ssd-spacer.escad | 153 +++++++++++++++++++++ 2 files changed, 166 insertions(+), 11 deletions(-) create mode 100644 rackable/25to35adapter/ssd-spacer.escad diff --git a/rackable/19to22adapter/19to22adapter.escad b/rackable/19to22adapter/19to22adapter.escad index 1491251..a7ee55d 100644 --- a/rackable/19to22adapter/19to22adapter.escad +++ b/rackable/19to22adapter/19to22adapter.escad @@ -1,22 +1,24 @@ // 19 to 22 inch rack adapter // Change these to adjust the total adapter size -full_length = 80; +full_length = 100; full_width = 44.23; full_height = 45; // Change these to adjust the interface to your device -support_bracket_thickness = 10; +support_bracket_thickness = 9; support_bracket_base_thickness = 2.5; -support_bracket_hole_y_offset = 18; -support_bracket_hole_z_offset = 18; -support_bracket_hole_r = 2; +support_bracket_hole_r = 2.9 / 2; +support_bracket_hole_y_offset = support_bracket_hole_r + 11; +support_bracket_hole_z_offset = support_bracket_hole_r + 15.75; +support_bracket_hole_z_offset_top = support_bracket_hole_r + 35.75; + // Change these to adjust the interface to your rack (should be standard) rack_mount_length = 20; rack_mount_thickness = 2.5; -rack_mount_hole_r = 6.5 / 2; -rack_mount_hole_x_offset = (11.75 / 2) + 5.3; +rack_mount_hole_r = 7.5 / 2; +rack_mount_hole_x_offset = rack_mount_hole_r + 5.3; rack_mount_hole_y_offset = rack_mount_hole_r + 2.9; // Add two triangle supports that end at the start of the interface to the rack. @@ -53,7 +55,7 @@ module support_screw_hole(height, y_offset, z_offset, support_hole_r) { } // Builds the full object -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) { +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_z_offset_top, support_hole_r) { support_length = length - rack_length; @@ -72,11 +74,11 @@ module rack_adapter(length, width, height, rack_length, rack_thickness, rack_hol support_screw_hole(height, support_hole_y_offset, support_hole_z_offset, support_hole_r); support_screw_hole(height, width - support_hole_y_offset, support_hole_z_offset, support_hole_r); - support_screw_hole(height, support_hole_y_offset, height - support_hole_z_offset, support_hole_r); - support_screw_hole(height, width - support_hole_y_offset, height - support_hole_z_offset, support_hole_r); + support_screw_hole(height, support_hole_y_offset, support_hole_z_offset_top, support_hole_r); + support_screw_hole(height, width - support_hole_y_offset, support_hole_z_offset_top, support_hole_r); } } // Call the main construct -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); +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_z_offset_top, support_bracket_hole_r); diff --git a/rackable/25to35adapter/ssd-spacer.escad b/rackable/25to35adapter/ssd-spacer.escad new file mode 100644 index 0000000..2151f66 --- /dev/null +++ b/rackable/25to35adapter/ssd-spacer.escad @@ -0,0 +1,153 @@ +// This code is licensensed under: +// +// Creative Commons CC0 (public domain) +// +// https://creativecommons.org/publicdomain/zero/1.0/ +// +// Created by Andrew Engelbrecht 2016 +// +// ssd-spacer.escad is an ImplicitCAD/OpenSCAD description +// of a spacer to place between an SSD and the other side +// of a server's 3.5" drive caddy. +// + + +height = 13; +width = 101.6 - 69.85 - 0.5; // -0.5 gives a little wiggle room +length = 99; + +wallWidth = 2.5; +floorHeight = 2; + +wallCurveRadius = height - floorHeight; + +ssdScrewHeight = 3; +ssdScrewDistance1 = 14; +ssdScrewDistance2 = 90.5; +ssdScrewRadius = 1.75; +ssdScrewdriverRadius = 4; + +caddyScrewHeight = 6.35; +caddyScrewDistance1 = 28; +caddyScrewDistance2 = 69.5; +caddyScrewRadius = 1.35; // smaller for grip +caddyNutSpaceRadius = 4; + +sigmoidSteepness = -0.49; +sigmoidCenterOffset = width / 2 - wallWidth - 5; +sigmoidHeight = floorHeight; + +big = 1000; // arbitrarily big number + + +module screwHole (radius, x, y, z, angle) { + + translate (x, y, z) { + rotate ([0,angle,0]) { + linear_extrude (big) { + circle (radius); + } + } + } +} + +// helper module for creating screw head, nut, and/or screw driver access +module accessSpaceHelper (radius, x, y, z, length, angle, translateFunction) { + + translate (x, y, z) { + rotate ([90, angle, 0]) { + linear_extrude (length, translate (h) = translateFunction (h)) { + union () { + circle (radius); + translate (-radius) { + square (radius * 2, big); + } + } + } + } + } +} + +// creates linearly extruded space for screw head and nut +module accessSpaceLinear (radius, x, y, z, length, angle) { + + function dontTranslate (h) = [0, 0]; + + accessSpaceHelper(radius, x, y, z, length, angle, dontTranslate); +} + +// creates curved screw head and screwdriver access space +module accessSpaceSigmoid (radius, x, y, z, length, angle) { + + function sigmoidFunc (h) = [0, sigmoidHeight / (1 + exp (sigmoidSteepness * (h - sigmoidCenterOffset)))]; + + accessSpaceHelper(radius, x, y, z, length, angle, sigmoidFunc); +} + + +module main () { + difference () { + + // outer shape: a box + linear_extrude (height) { + square (width, length); + } + + // cut away center leaving curves along walls + translate (wallWidth - big / 2, wallWidth - big / 2, floorHeight) { + intersection () { + + translate (big / 2, 0, 0) { + linear_extrude (height = big, r = wallCurveRadius) { + square (big, big); + } + } + + translate (0, big / 2, 0) { + linear_extrude (height = big, r = wallCurveRadius) { + square (big, big); + } + } + + translate (width - big / 2 - wallWidth * 2, 0, 0) { + linear_extrude (height = big, r = wallCurveRadius) { + square (big, big); + } + } + + translate (0, length - big / 2 - wallWidth * 2, 0) { + linear_extrude (height = big) { + square (big, big); + } + } + } + } + + // ssd screw holes and and access + union () { + + for (distance = [ssdScrewDistance1, ssdScrewDistance2]) { + + screwHole (ssdScrewRadius, wallWidth * 2, distance, ssdScrewHeight, 270); + // curved space for screw head and screw driver + accessSpaceSigmoid (ssdScrewdriverRadius, wallWidth, distance, ssdScrewdriverRadius, width - wallWidth, 90); + } + } + + // caddy screw holes and and washer space + union () { + + for (distance = [caddyScrewDistance1, caddyScrewDistance2]) { + + screwHole (caddyScrewRadius, width - wallWidth * 2, distance, caddyScrewHeight, 90); + // linear space for optional nut + accessSpaceLinear (caddyNutSpaceRadius, width - wallWidth, distance, caddyScrewHeight, width / 2 - wallWidth, 270); + } + } + + } +} + + +main(); + -- 2.25.1