Added various plates
BIN
server_rack/images/Bauhaus graphic design.jpg
Normal file
|
After Width: | Height: | Size: 117 KiB |
BIN
server_rack/images/Brutalist Architecture.webp
Normal file
|
After Width: | Height: | Size: 128 KiB |
BIN
server_rack/images/IMG_20251026_123955786_MFNR.jpg
Normal file
|
After Width: | Height: | Size: 3.3 MiB |
BIN
server_rack/images/IMG_20251026_124001656_MFNR.jpg
Normal file
|
After Width: | Height: | Size: 3.2 MiB |
BIN
server_rack/images/IMG_20251026_124016724_MFNR.jpg
Normal file
|
After Width: | Height: | Size: 2.9 MiB |
BIN
server_rack/images/IMG_20251031_102315126_MFNR.jpg
Normal file
|
After Width: | Height: | Size: 3.4 MiB |
BIN
server_rack/images/IMG_20251031_102349440_MFNR.jpg
Normal file
|
After Width: | Height: | Size: 3.5 MiB |
BIN
server_rack/images/Ikea Svalnäs.jpg
Normal file
|
After Width: | Height: | Size: 302 KiB |
BIN
server_rack/images/Tray trolley.webp
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
server_rack/images/m_connector.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 18 KiB |
BIN
server_rack/images/nano_itx_mount.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 44 KiB |
BIN
server_rack/images/s_height_plate_fan_mount.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
@@ -1,20 +1,14 @@
|
||||
fragments = 36;
|
||||
d=3.96;
|
||||
h=3;
|
||||
include <BOSL2/std.scad>
|
||||
|
||||
module pcb() {
|
||||
color("green") {
|
||||
difference(){
|
||||
cube(size = [170,170,h], center = false);
|
||||
color("green", alpha=.5) difference() {
|
||||
cuboid([170,170,1.6], rounding=3, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT]);
|
||||
// mini-itx holes
|
||||
translate([6.35,6.35+22.86,0])
|
||||
cylinder(5, d/2, d/2, $fn = fragments, center=false);
|
||||
translate([6.35,6.35+154.94,0])
|
||||
cylinder(5, d/2, d/2, $fn = fragments, center=false);
|
||||
translate([6.35+157.48,6.35,0])
|
||||
cylinder(5, d/2, d/2, $fn = fragments, center=false);
|
||||
translate([6.35+157.48,6.35+154.94,0])
|
||||
cylinder(5, d/2, d/2, $fn = fragments, center=false);
|
||||
}
|
||||
translate([-78.74,74.84,5]) zcyl(l=20, d=2.7);
|
||||
translate([-78.74,-80.1,5]) zcyl(l=20, d=2.7);
|
||||
translate([78.74,-80.1,5]) zcyl(l=20, d=2.7);
|
||||
translate([78.74,51.98,5]) zcyl(l=20, d=2.7);
|
||||
}
|
||||
}
|
||||
|
||||
*pcb();
|
||||
@@ -1,7 +1,6 @@
|
||||
$fn=60;
|
||||
|
||||
include <BOSL2/std.scad>
|
||||
include <boltsos_0.4.1/BOLTS.scad>
|
||||
|
||||
include <mini_itx_board.scad>
|
||||
|
||||
@@ -17,24 +16,28 @@ module pilar() {
|
||||
}
|
||||
|
||||
// holes_positions
|
||||
* color("red") {
|
||||
translate([-78.7,-52.2,5]) zcyl(l=20, d=1);
|
||||
translate([-78.7,80.1,5]) zcyl(l=20, d=1);
|
||||
translate([78.8,80.1,5]) zcyl(l=20, d=1);
|
||||
translate([78.8,-74.8,5]) zcyl(l=20, d=1);
|
||||
color("red") {
|
||||
translate([-78.74,74.84,5]) zcyl(l=20, d=1);
|
||||
translate([-78.74,-80.1,5]) zcyl(l=20, d=1);
|
||||
translate([78.74,-80.1,5]) zcyl(l=20, d=1);
|
||||
translate([78.74,51.98,5]) zcyl(l=20, d=1);
|
||||
}
|
||||
|
||||
* translate([-85,-81,10]) pcb();
|
||||
|
||||
color("cyan") {
|
||||
// mini_itx_plate
|
||||
rect_tube(3, frame_l, wall=frame_e*6, rounding=frame_e, irounding=frame_e/2, center=true);
|
||||
color("yellow") {
|
||||
// base_plate
|
||||
difference() {
|
||||
cuboid([frame_l,frame_l,frame_e], rounding=3, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT]);
|
||||
cuboid([frame_l-34,frame_l-34,frame_e+1], rounding=3, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT]);
|
||||
}
|
||||
*rect_tube(3, frame_l, wall=frame_e*6, rounding=frame_e, irounding=frame_e/2, center=true);
|
||||
|
||||
// pcb_supports
|
||||
translate([0,0,p_height-1]) {
|
||||
translate([-78.7,-52.2,0]) pilar();
|
||||
translate([-78.7,80.1,0]) pilar();
|
||||
translate([78.8,80.1,0]) pilar();
|
||||
translate([78.8,-74.8,0]) pilar();
|
||||
translate([-78.74,74.84,0]) pilar();
|
||||
translate([-78.74,-80.1,0]) pilar();
|
||||
translate([78.74,-80.1,0]) pilar();
|
||||
translate([78.74,51.98,0]) pilar();
|
||||
}
|
||||
}
|
||||
|
||||
translate([0,0,10]) pcb();
|
||||
14
server_rack/scad/nano_itx_board.scad
Normal file
@@ -0,0 +1,14 @@
|
||||
include <BOSL2/std.scad>
|
||||
|
||||
module pcb() {
|
||||
color("green", alpha=.5) difference() {
|
||||
cuboid([120,120,1.6], rounding=3, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT]);
|
||||
// nano-itx holes
|
||||
translate([-56.4,-41.9,5]) zcyl(l=20, d=2.7);
|
||||
translate([-56.4,56.4,5]) zcyl(l=20, d=2.7);
|
||||
translate([56.4,56.4,5]) zcyl(l=20, d=2.7);
|
||||
translate([56.4,-56.4,5]) zcyl(l=20, d=2.7);
|
||||
}
|
||||
}
|
||||
|
||||
*pcb();
|
||||
44
server_rack/scad/nano_itx_mount.scad
Normal file
@@ -0,0 +1,44 @@
|
||||
$fn=60;
|
||||
|
||||
include <BOSL2/std.scad>
|
||||
include <boltsos_0.4.1/BOLTS.scad>
|
||||
|
||||
include <nano_itx_board.scad>
|
||||
|
||||
frame_l=130;
|
||||
frame_e=3;
|
||||
p_height=5;
|
||||
|
||||
module pilar() {
|
||||
difference() {
|
||||
zcyl(l=p_height, d=8, rounding1=-2);
|
||||
zcyl(l=p_height, d=3, rounding=-1);
|
||||
}
|
||||
}
|
||||
|
||||
// holes_positions
|
||||
color("red") {
|
||||
translate([-56.4,-41.9,5]) zcyl(l=20, d=1);
|
||||
translate([-56.4,56.4,5]) zcyl(l=20, d=1);
|
||||
translate([56.4,56.4,5]) zcyl(l=20, d=1);
|
||||
translate([56.4,-56.4,5]) zcyl(l=20, d=1);
|
||||
}
|
||||
|
||||
color("pink") {
|
||||
// base_plate
|
||||
difference() {
|
||||
cuboid([frame_l,frame_l,frame_e], rounding=3, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT]);
|
||||
cuboid([frame_l-30,frame_l-30,frame_e+1], rounding=3, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT]);
|
||||
}
|
||||
*rect_tube(3, frame_l, wall=frame_e*6, rounding=frame_e, irounding=frame_e/2, center=true);
|
||||
|
||||
// pcb_supports
|
||||
translate([0,0,p_height-1]) {
|
||||
translate([-56.4,-41.9,0]) pilar();
|
||||
translate([-56.4,56.4,0]) pilar();
|
||||
translate([56.4,56.4,0]) pilar();
|
||||
translate([56.4,-56.4,0]) pilar();
|
||||
}
|
||||
}
|
||||
|
||||
translate([0,0,10]) pcb();
|
||||
@@ -3,13 +3,15 @@ $fn=60;
|
||||
include <BOSL2/std.scad>
|
||||
include <boltsos_0.4.1/BOLTS.scad>
|
||||
include <nutsnbolts/cyl_head_bolt.scad>;
|
||||
include <triple_ssd_mount.scad>
|
||||
include <ssd_plate_addon.scad>
|
||||
include <ssd_mount.scad>
|
||||
include <fan_mount.scad>
|
||||
|
||||
base_l=190;
|
||||
base_e=3;
|
||||
b_height=5;
|
||||
r_height=200;
|
||||
hdd=1;
|
||||
|
||||
module screw(x) {
|
||||
translate([0,-5,0]) rotate([90,90,0]) {
|
||||
@@ -18,6 +20,31 @@ module screw(x) {
|
||||
}
|
||||
}
|
||||
|
||||
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 s_height_corner() {
|
||||
difference() {
|
||||
union() {
|
||||
cuboid([30,3,10], rounding=3, edges=[LEFT+TOP,LEFT+BOT]);
|
||||
translate([50,0,0]) cuboid([100,3,10]);
|
||||
}
|
||||
translate([-10,0,0]) screw(10.5);
|
||||
translate([-10,0,-10]) screw(10.5);
|
||||
translate([30,0,0]) screw(10.5);
|
||||
}
|
||||
}
|
||||
|
||||
module base_plate() {
|
||||
/*[front]*/
|
||||
translate([0,0,13]) {
|
||||
@@ -36,6 +63,24 @@ module base_plate() {
|
||||
}
|
||||
}
|
||||
|
||||
module s_height_plate() {
|
||||
/*[front]*/
|
||||
translate([0,0,3]) {
|
||||
union() {
|
||||
translate([-90,-97,0]) s_height_corner();
|
||||
translate([90,-97,0]) mirror([1,0,0]) s_height_corner();
|
||||
}
|
||||
union() {
|
||||
translate([-90,97,0]) s_height_corner();
|
||||
translate([90,97,0]) mirror([1,0,0]) s_height_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);
|
||||
@@ -53,20 +98,7 @@ module rail2(h) {
|
||||
}
|
||||
}
|
||||
|
||||
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() {
|
||||
module b_connector() {
|
||||
mirror ([0,0,1]) difference() {
|
||||
union() {
|
||||
cuboid([33,16,30], rounding=1);
|
||||
@@ -84,6 +116,31 @@ module connector() {
|
||||
}
|
||||
}
|
||||
|
||||
module m_connector() {
|
||||
mirror ([0,0,1]) difference() {
|
||||
union() {
|
||||
translate([0,-1.5,-20]) {
|
||||
translate([-7,0,0]) cuboid([17,13,40], rounding=1);
|
||||
translate([50,0,0]) cuboid([110,13,10], rounding=1);
|
||||
}
|
||||
}
|
||||
translate([-12,0,-20]) cuboid([12,11,40], rounding=-1);
|
||||
translate([-3,0,0]) {
|
||||
translate([0,0,-10]) rotate([0,0,90]) screw(20);
|
||||
translate([0,0,-30]) rotate([0,0,90]) screw(20);
|
||||
}
|
||||
translate([-11,0,0]) {
|
||||
translate([0,0,-5]) ycyl(l=20, d=2);
|
||||
translate([0,0,-15]) ycyl(l=20, d=2);
|
||||
translate([0,0,-25]) ycyl(l=20, d=2);
|
||||
translate([0,0,-35]) 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() {
|
||||
@@ -106,28 +163,63 @@ color("red") {
|
||||
}
|
||||
|
||||
/*[rails]*/
|
||||
translate([-105,-90,0]) mirror([0,1,0]) rail2(200);
|
||||
translate([-105,90,0]) rail2(200);
|
||||
// 1 U
|
||||
translate([-130,90,-40]) rail(120);
|
||||
// 1.5 U
|
||||
translate([100,90,180]) rail(160);
|
||||
translate([100,-90,180]) mirror([0,1,0]) rail(160);
|
||||
// 2U
|
||||
translate([100,-90,0]) mirror([0,1,0]) rail(200);
|
||||
translate([100,90,0]) rail(200);
|
||||
// 1U
|
||||
translate([120,90,-40]) rail(120);
|
||||
// 2U double
|
||||
translate([-105,-90,0]) mirror([0,1,0]) rail2(200);
|
||||
translate([-105,90,0]) rail2(200);
|
||||
|
||||
/*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("green") {
|
||||
translate([0,0,-80]) rotate([0,0,90]) {
|
||||
translate([-79,-100,0]) b_connector();
|
||||
translate([79,-100,0]) mirror([1,0,0]) b_connector();
|
||||
}
|
||||
rotate([0,0,90]) {
|
||||
translate([-79,-100,80]) m_connector();
|
||||
translate([79,-100,80]) mirror([1,0,0]) m_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();
|
||||
color("cyan") base_plate();
|
||||
rotate([0,0,90]) {
|
||||
color("cyan") ssd_plate_addon();
|
||||
color("orange") translate([0,0,-3]) mirror([0,0,1]) mount();
|
||||
}
|
||||
}
|
||||
|
||||
translate([0,0,8]) {
|
||||
color("pink") {
|
||||
s_height_plate();
|
||||
rotate([0,0,90]) {
|
||||
translate([0,0,-0.5]) {
|
||||
*ssd_plate_addon();
|
||||
fan_mount();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
translate([0,0,92.5]) {
|
||||
mirror([0,0,1]) {
|
||||
color("cyan") base_plate();
|
||||
color("cyan") translate([0,0,-0.5]) fan_mount();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// addon
|
||||
color("red") {
|
||||
union() {
|
||||
translate([-90,97,40]) corner();
|
||||
translate([90,97,40]) mirror([1,0,0]) corner();
|
||||
}
|
||||
}
|
||||
|
||||
40
server_rack/scad/ssd_mount.scad
Normal file
@@ -0,0 +1,40 @@
|
||||
include <BOSL2/std.scad>
|
||||
|
||||
hdd=1;
|
||||
|
||||
module addon() {
|
||||
difference() {
|
||||
union() {
|
||||
rotate([0,0,41]) cuboid([175,10,3], rounding=5, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT]);
|
||||
rotate([0,0,-41]) cuboid([175,10,3], rounding=5, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT]);
|
||||
tube(od=122.5, id=112.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);
|
||||
}
|
||||
}
|
||||
|
||||
module walls(hdd) {
|
||||
difference() {
|
||||
union() {
|
||||
cuboid([3,85,13+13*hdd], rounding=3, edges=[TOP+FRONT,TOP+BACK], anchor=BOT);
|
||||
for(i=[0:13:13*hdd]) translate([-1.5,0,2+i]) ycyl(l=85, d=3);
|
||||
}
|
||||
for(i=[0:13:13*hdd]) {
|
||||
translate([0,-38.5,7+i]) xcyl(l=3, d=3.5);
|
||||
translate([0,38.5,7+i]) xcyl(l=3, d=3.5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module mount() {
|
||||
addon();
|
||||
rect_tube(h=3, size=[85,85], wall=10, center=true);
|
||||
translate([36.5,0,0]) walls(hdd);
|
||||
translate([-36.5,0,0]) mirror([1,0,0]) walls(hdd);
|
||||
}
|
||||
|
||||
|
||||
*mount();
|
||||
17
server_rack/scad/ssd_plate_addon.scad
Normal file
@@ -0,0 +1,17 @@
|
||||
include <BOSL2/std.scad>
|
||||
|
||||
module ssd_plate_addon() {
|
||||
difference() {
|
||||
union() {
|
||||
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_plate_addon();
|
||||
@@ -1,33 +0,0 @@
|
||||
include <BOSL2/std.scad>
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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();
|
||||
BIN
server_rack/stl/front_plate_alt.stl
Normal file
BIN
server_rack/stl/m_connector.stl
Normal file
BIN
server_rack/stl/nano_itx_mount.stl
Normal file
BIN
server_rack/stl/rail_1.5U.stl
Normal file
BIN
server_rack/stl/rail_2U.stl
Normal file
BIN
server_rack/stl/s_heigtht_plate.stl
Normal file
@@ -1,14 +0,0 @@
|
||||
$fn = 60;
|
||||
|
||||
include <BOSL2/std.scad>
|
||||
|
||||
tube_dia=16;
|
||||
|
||||
// new
|
||||
cuboid([90,150,9], rounding=3) attach(BOT) textured_tile("trunc_diamonds", [80,140], tex_reps=[10,10]/*, style="convex"*/);
|
||||
translate([0,0,17]) {
|
||||
difference() {
|
||||
cyl(l=25, d1=80, d2=26, rounding1=-5, rounding2=5);
|
||||
zcyl(l=25, d=tube_dia+.5, rounding=-2);
|
||||
}
|
||||
}
|
||||