diff options
author | Jan Huwald <jh@sotun.de> | 2014-02-04 11:24:39 (GMT) |
---|---|---|
committer | Jan Huwald <jh@sotun.de> | 2014-02-04 11:24:39 (GMT) |
commit | 406a11c1adf8f54b2a41c4968253d2a5a29a0002 (patch) | |
tree | a11c3f72777fe9ccaac834f448db202cb4a74b44 |
unfinished version of the front connector
-rw-r--r-- | connector_front.scad | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/connector_front.scad b/connector_front.scad new file mode 100644 index 0000000..e15089d --- /dev/null +++ b/connector_front.scad @@ -0,0 +1,83 @@ +// PARAMETERS + +// space above hdd available for air flow +cooling_height = 10; + +// thickness of the support bar +bar_thickness = 10; + +// diameter of thread rod used for support +rod_diameter = 4; + +// dimensions of HDDs; not model-specific; current values are fake +hdd_width = 80; +hdd_height = 30; +hdd_length = 100; + +// dimensions of the L-shaped rail between front and back +rail_width = 15; +rail_height = rail_width; +rail_thickness = 1; + +// dimension of a single hdd tray (hdd + space around) +tray_height = hdd_height + cooling_height + rail_thickness; +tray_width = hdd_width + bar_thickness; + +pla_epsilon = 0.1; + + +// CONSTRUCTION + +module nipple(e = 0) { + rotate([0, 180, 0]) + cylinder(h = bar_thickness / 4 + e, r1 = bar_thickness / 4 + e, r2 = 0, $fs=0.1); +} + +module half() difference() { + union() { + // upper horizontal bar + translate([0, 0, tray_height - bar_thickness]) + cube([tray_width / 2, bar_thickness, bar_thickness]); + + // vertical bar + cube([bar_thickness/2, bar_thickness, tray_height]); + + // lower horizontal bar + cube([bar_thickness/2 + rail_width + pla_epsilon, bar_thickness, bar_thickness]); + + // vertical thread bold receiver + translate([0, bar_thickness, tray_height-bar_thickness]) cube([bar_thickness/2, bar_thickness, bar_thickness]); + translate([tray_width/2 - bar_thickness, bar_thickness, tray_height-bar_thickness]) cube([bar_thickness, bar_thickness, bar_thickness]); + + // male downward positioning nippel + translate([rail_width, bar_thickness / 2, 0]) nipple(); + } + + // receiver for rail + translate([bar_thickness/2 - rail_thickness, 0, bar_thickness - rail_thickness]) { + cube([rail_thickness, bar_thickness, rail_height]); + cube([rail_width, bar_thickness, rail_thickness]); + } + + // holes for thread rods (horizontal, vertical) + translate([0, bar_thickness / 2, 0]) + cylinder(h = tray_height, r = (rod_diameter + pla_epsilon) / 2, $fs=0.1); + translate([0, bar_thickness * 1.5, tray_height - bar_thickness / 2]) rotate([0, 90, 0]) + cylinder(h = tray_width / 2, r = (rod_diameter + pla_epsilon) / 2, $fs=0.1); + + // female downward positioning nippel + translate([rail_width, bar_thickness / 2, tray_height]) nipple(pla_epsilon); +} + +difference() { + union() { + half(); + mirror() half(); + } + + // female leftward positioning nippel + # translate([-tray_width/2, bar_thickness / 2, tray_height - bar_thickness / 2]) rotate([0, 270, 0]) nipple(pla_epsilon); +} + +// male rightward positioning nippel +translate([tray_width / 2, bar_thickness / 2, tray_height - bar_thickness / 2]) rotate([0, 270, 0]) nipple(); |