diff --git a/server_rack/images/fan_plate.png b/server_rack/images/fan_plate.png new file mode 100644 index 0000000..942dea4 Binary files /dev/null and b/server_rack/images/fan_plate.png differ diff --git a/server_rack/images/rack.png b/server_rack/images/rack.png new file mode 100644 index 0000000..5dfb28f Binary files /dev/null and b/server_rack/images/rack.png differ diff --git a/server_rack/images/ssd_plate.png b/server_rack/images/ssd_plate.png new file mode 100644 index 0000000..b1d1033 Binary files /dev/null and b/server_rack/images/ssd_plate.png differ diff --git a/server_rack/scad/base_plate.scad b/server_rack/scad/base_plate.scad index 63944c1..6f72dad 100644 --- a/server_rack/scad/base_plate.scad +++ b/server_rack/scad/base_plate.scad @@ -15,20 +15,20 @@ module pilar() { } } // holes_positions -* color("red") { +color("red") { translate([-60,0,b_height-.5]) ycyl(l=200, d=1); translate([60,0,b_height-.5]) ycyl(l=200, d=1); } // sample side attach -* difference() { +difference() { translate([0, 0, 0]) zcyl(l=5, d=18, rounding2=1); nutcatch_parallel("M4", clh=0.1); translate([0,0,10]) hole_through(name="M4", l=10+5, cld=0.1, h=0, hcld=0.4); } // base plate -difference() { +!difference() { union() { rect_tube(b_height+1, base_l, wall=base_e, rounding=base_e, irounding=base_e/2, center=true) { attach(BOT) rect_tube(base_e, base_l, wall=base_e*4, rounding=base_e, irounding=base_e/2, center=true); diff --git a/server_rack/scad/fan_mount.scad b/server_rack/scad/fan_mount.scad new file mode 100644 index 0000000..5044d52 --- /dev/null +++ b/server_rack/scad/fan_mount.scad @@ -0,0 +1,18 @@ +include + +module fan_mount() { + difference() { + union() { + rotate([0,0,45]) cuboid([250,15,3], rounding=5, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT]); + rotate([0,0,-45]) cuboid([250,15,3], rounding=5, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT]); + tube(od=172.5, id=138.5, l=3); + } + // fan_holes + translate([52.5,52.5,0]) zcyl(l=10, d=4.5); + translate([52.5,-52.5,0]) zcyl(l=10, d=4.5); + translate([-52.5,52.5,0]) zcyl(l=10, d=4.5); + translate([-52.5,-52.5,0]) zcyl(l=10, d=4.5); + } +} + +*fan_mount(); diff --git a/server_rack/scad/rack.scad b/server_rack/scad/rack.scad new file mode 100644 index 0000000..7b53f59 --- /dev/null +++ b/server_rack/scad/rack.scad @@ -0,0 +1,133 @@ +$fn=60; + +include +include +include ; +include +include + +base_l=190; +base_e=3; +b_height=5; +r_height=200; + +module screw(x) { + translate([0,-5,0]) rotate([90,90,0]) { + nutcatch_parallel("M4", clh=0.1); + hole_through(name="M4", l=x, cld=0.1, h=0, hcld=0.4); + } +} + +module base_plate() { + /*[front]*/ + translate([0,0,13]) { + union() { + translate([-90,-97,0]) corner(); + translate([90,-97,0]) mirror([1,0,0]) corner(); + } + union() { + translate([-90,97,0]) corner(); + translate([90,97,0]) mirror([1,0,0]) corner(); + } + } + /*[plate]*/ + translate([0,0,3]) rect_tube(7, size=[base_l,base_l+7], wall=base_e, center=true) { + attach(BOT) rect_tube(base_e, size=[base_l,base_l+7], wall=base_e*5, irounding=10, center=true); + } +} + +module rail(h) { + difference() { + color("grey") cuboid([10,10,h], rounding=1); + color("red") for(i=[-90 : 20 : 90]) translate([0,0,i]) screw(10.5); + } +} + +module rail2(h) { + difference() { + color("grey") cuboid([20,10,h], rounding=1); + color("red") for(i=[-90 : 20 : 90]) { + translate([5,0,i]) screw(10.5); + translate([-5,0,i]) screw(10.5); + } + } +} + +module corner() { + difference() { + union() { + cuboid([30,3,30], rounding=3, edges=[LEFT+TOP,LEFT+BOT]); + translate([50,0,-10]) cuboid([100,3,10]); + } + translate([15,0,15]) ycyl(l=3.5, d=40); + translate([-10,0,10]) screw(10.5); + translate([-10,0,-10]) screw(10.5); + translate([30,0,-10]) screw(10.5); + } +} + +module connector() { + mirror ([0,0,1]) difference() { + union() { + cuboid([33,16,30], rounding=1); + translate([50,0,-10]) cuboid([100,16,10], rounding=1); + } + translate([20,0,15]) ycyl(l=16.5, d=40, rounding=-1.5); + translate([-12,0,0]) cuboid([12,11,30], rounding=-1); + translate([-3,0,10]) rotate([0,0,90]) screw(20); + translate([-11,0,5]) ycyl(l=20, d=2); + translate([-11,0,-5]) ycyl(l=20, d=2); + } + *difference() { + translate([-5,0,10]) rotate([0,90,0]) nutcatch_parallel("M4", clh=0.1); + translate([-3,0,10]) rotate([0,0,90]) screw(20); + } +} + +module walls() { + difference() { + union() { + translate([0,0,19]) cuboid([3,85,38], rounding=3, edges=[TOP+FRONT,TOP+BACK]); + for(i=[2:13:28]) translate([-1.5,0,i]) ycyl(l=85, d=3); + } + for(i=[7:13:33]) { + translate([0,-38.5,i]) xcyl(l=3, d=3.5); + translate([0,38.5,i]) xcyl(l=3, d=3.5); + } + } +} + +// holes_positions +color("red") { + translate([-60,0,-10]) ycyl(l=220, d=1); + translate([60,0,-10]) ycyl(l=220, d=1); + translate([-100,0,-10]) ycyl(l=220, d=1); + translate([100,0,-10]) ycyl(l=220, d=1); +} + +/*[rails]*/ + translate([-105,-90,0]) mirror([0,1,0]) rail2(200); + translate([-105,90,0]) rail2(200); + translate([100,-90,0]) mirror([0,1,0]) rail(200); + translate([100,90,0]) rail(200); + // 1U + translate([120,90,-40]) rail(120); + +/*connectors*/ +color("green") translate([0,0,-80]) rotate([0,0,90]) { + translate([-79,-100,0]) connector(); + translate([79,-100,0]) mirror([1,0,0]) connector(); +} + +color("cyan") { + /*[plates_and_accessories]*/ + translate([0,0,7]) { + base_plate(); + rotate([0,0,90]) ssd_mount(); + } + translate([0,0,-53]) { + base_plate(); + translate([0,0,-0.5]) rotate([0,0,90])fan_mount(); + } +} + diff --git a/server_rack/scad/temp.scad b/server_rack/scad/temp.scad deleted file mode 100644 index c02be2c..0000000 --- a/server_rack/scad/temp.scad +++ /dev/null @@ -1,30 +0,0 @@ -$fn=60; - -include -include - -* import("../stl/dual_2.5_ssd_shelf.stl"); - -module wall() { - difference() { - union() { - translate([0,0,19]) cuboid([3,85,38], rounding=3, edges=[TOP+FRONT,TOP+BACK]); - translate([-1.5,0,2.5]) ycyl(l=85, d=3); - translate([-1.5,0,15.5]) ycyl(l=85, d=3); - translate([-1.5,0,28.5]) ycyl(l=85, d=3); - } - translate([0,-38.5,7]) xcyl(l=3, d=3.5); - translate([0,-38.5,20]) xcyl(l=3, d=3.5); - translate([0,-38.5,33]) xcyl(l=3, d=3.5); - translate([0,38.5,7]) xcyl(l=3, d=3.5); - translate([0,38.5,20]) xcyl(l=3, d=3.5); - translate([0,38.5,33]) xcyl(l=3, d=3.5); - } -} - -color("red") { - rect_tube(h=3, size=[76,85], wall=7); - * cuboid([76,85,3]); - translate([36.5,0,0]) wall(); - translate([-36.5,0,0]) mirror([1,0,0]) wall(); -} \ No newline at end of file diff --git a/server_rack/scad/triple_ssd_mount.scad b/server_rack/scad/triple_ssd_mount.scad index 3da21ae..daa978b 100644 --- a/server_rack/scad/triple_ssd_mount.scad +++ b/server_rack/scad/triple_ssd_mount.scad @@ -1,37 +1,33 @@ -$fn=60; - include -module wall() { +module walls() { difference() { union() { translate([0,0,19]) cuboid([3,85,38], rounding=3, edges=[TOP+FRONT,TOP+BACK]); - translate([-1.5,0,2]) ycyl(l=85, d=3); - translate([-1.5,0,15]) ycyl(l=85, d=3); - translate([-1.5,0,28]) ycyl(l=85, d=3); - } - translate([0,-38.5,7]) xcyl(l=3, d=3.5); - translate([0,-38.5,20]) xcyl(l=3, d=3.5); - translate([0,-38.5,33]) xcyl(l=3, d=3.5); - translate([0,38.5,7]) xcyl(l=3, d=3.5); - translate([0,38.5,20]) xcyl(l=3, d=3.5); - translate([0,38.5,33]) xcyl(l=3, d=3.5); - } -} - - -difference() { - union() { - rect_tube(h=3, size=[85,85], wall=10, center=true, anchor=TOP) - translate([36.5,0,0]) wall(); - translate([-36.5,0,0]) mirror([1,0,0]) wall(); - rotate([0,0,41]) cuboid([170,10,3], rounding=5, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT]); - rotate([0,0,-41]) cuboid([170,10,3], rounding=5, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT]); - tube(od=135, id=125, l=3); + for(i=[2:13:28]) translate([-1.5,0,i]) ycyl(l=85, d=3); } - * cuboid([66,75,8]); - translate([60,52.5,0]) zcyl(l=10, d=4.5); - translate([60,-52.5,0]) zcyl(l=10, d=4.5); - translate([-60,52.5,0]) zcyl(l=10, d=4.5); - translate([-60,-52.5,0]) zcyl(l=10, d=4.5); + for(i=[7:13:33]) { + translate([0,-38.5,i]) xcyl(l=3, d=3.5); + translate([0,38.5,i]) xcyl(l=3, d=3.5); + } + } } + +module ssd_mount() { + difference() { + union() { + rect_tube(h=3, size=[85,85], wall=10, center=true); + translate([36.5,0,0]) walls(); + translate([-36.5,0,0]) mirror([1,0,0]) walls(); + rotate([0,0,41]) cuboid([250,15,3], rounding=5, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT]); + rotate([0,0,-41]) cuboid([250,15,3], rounding=5, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT]); + tube(od=172.5, id=147.5, l=3); + } + translate([60,52.5,0]) zcyl(l=10, d=4.5); + translate([60,-52.5,0]) zcyl(l=10, d=4.5); + translate([-60,52.5,0]) zcyl(l=10, d=4.5); + translate([-60,-52.5,0]) zcyl(l=10, d=4.5); + } +} + +*ssd_mount(); diff --git a/server_rack/stl/connector.stl b/server_rack/stl/connector.stl new file mode 100644 index 0000000..d2b8fed Binary files /dev/null and b/server_rack/stl/connector.stl differ diff --git a/server_rack/stl/fan_plate.stl b/server_rack/stl/fan_plate.stl new file mode 100644 index 0000000..8c520ba Binary files /dev/null and b/server_rack/stl/fan_plate.stl differ diff --git a/server_rack/stl/front_plate.stl b/server_rack/stl/front_plate.stl new file mode 100644 index 0000000..e420020 Binary files /dev/null and b/server_rack/stl/front_plate.stl differ diff --git a/server_rack/stl/rail.stl b/server_rack/stl/rail.stl new file mode 100644 index 0000000..695d9f0 Binary files /dev/null and b/server_rack/stl/rail.stl differ diff --git a/server_rack/stl/rail2.stl b/server_rack/stl/rail2.stl new file mode 100644 index 0000000..b748376 Binary files /dev/null and b/server_rack/stl/rail2.stl differ diff --git a/server_rack/stl/rail_1U.stl b/server_rack/stl/rail_1U.stl new file mode 100644 index 0000000..7930ae7 Binary files /dev/null and b/server_rack/stl/rail_1U.stl differ diff --git a/server_rack/stl/triple_ssd_plus_fan_plate.stl b/server_rack/stl/triple_ssd_plus_fan_plate.stl new file mode 100644 index 0000000..58bafad Binary files /dev/null and b/server_rack/stl/triple_ssd_plus_fan_plate.stl differ