summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--connector_pole.scad44
-rw-r--r--full_model.scad15
-rw-r--r--parameters.scad5
3 files changed, 63 insertions, 1 deletions
diff --git a/connector_pole.scad b/connector_pole.scad
new file mode 100644
index 0000000..7661365
--- /dev/null
+++ b/connector_pole.scad
@@ -0,0 +1,44 @@
+include <parameters.scad>
+
+use <screw_hole.scad>
+
+module connector_pole(units, depth, border_top=true, border_bottom=true, cable_funnel=true) {
+ height = tray_height * units;
+ overlap = bar_thickness + pole_overlap_shunt;
+
+ difference() {
+ // pole
+ translate([0, 0, (border_bottom ? 0 : -overlap)])
+ cube([bar_thickness, pole_depth, height
+ + (border_bottom ? 0 : overlap)
+ + (border_top ? 0 : overlap)]);
+
+ // screw holes
+ for (i = [0:units])
+ for (s = [-1, 1])
+ translate([bar_thickness/2, depth, i * tray_height + s * bar_thickness/2])
+ rotate([90, 0, 0])
+ screw_hole(nut_depth = nut_height);
+
+ // cable funnel
+ if (cable_funnel)
+ for (i = [0:units-1])
+ translate([0, 0, i * tray_height + bar_thickness])
+ cube([bar_thickness, pole_cable_funnel_width, tray_height - 2 * bar_thickness]);
+
+ // receptors for lower/upper poles
+ for (i = [[border_bottom, 0, 0],
+ [border_top, depth/2, height]])
+ if (!i[0])
+ translate([0, i[1], i[2]-overlap])
+ cube([bar_thickness, depth/2, 2*overlap]);
+ }
+}
+
+connector_pole(2, 20);
+
+translate([50,0,0]) connector_pole(2, 20, border_bottom=false);
+
+translate([100,0,0]) connector_pole(2, 20, border_top=false, border_bottom=false);
+
+translate([150,0,0]) connector_pole(2, 20, border_top=false);
diff --git a/full_model.scad b/full_model.scad
index fa34e79..9ea1b4a 100644
--- a/full_model.scad
+++ b/full_model.scad
@@ -2,6 +2,7 @@ include <parameters.scad>
use <connector_back.scad>
use <connector_front.scad>
+use <connector_pole.scad>
use <hdd.scad>
use <rail.scad>
use <backplane.scad>
@@ -24,7 +25,7 @@ translate([bar_thickness/2 + x*tray_width, 0, y*tray_height]) {
border_bottom = y == 0
);
- // TODO: back connector
+ // back connector
rand_color([0.0, 0.8, 0.0], y, x)
translate([0, hdd_length - hdd_standout - bar_thickness, 0])
back_connector(
@@ -53,6 +54,18 @@ translate([bar_thickness/2 + x*tray_width, 0, y*tray_height]) {
}
}
+// back connector pole
+// TODO: split correctly if size exceeds printing area
+for (x = [0:num_hdd_x])
+ assign(border = (x==0 || x==num_hdd_x))
+ translate([x*tray_width,
+ hdd_length - hdd_standout + (border ? 0 : backplane_thickness),
+ y*tray_height])
+ connector_pole(num_hdd_y,
+ pole_depth - (border ? 0 : backplane_thickness),
+ cable_funnel = !border);
+
+
// thread rods
for (x = [0:num_hdd_x])
translate([bar_thickness/2 + x * tray_width, bar_thickness/2, -tray_height/2])
diff --git a/parameters.scad b/parameters.scad
index 3af2af7..c0291cd 100644
--- a/parameters.scad
+++ b/parameters.scad
@@ -16,6 +16,11 @@ bar_thickness = 10;
// length hdd is standing out to be grabbed
hdd_standout = 25;
+// back connector pole depth and shunt space (only used when multipe
+// parts are required to build one pole)
+pole_depth = 20;
+pole_overlap_shunt = 2;
+pole_cable_funnel_width = 3;
/// METAL PARTS: SCREWS AND RAILS
contact: Jan Huwald // Impressum