diff --git a/rack-mount/catalog/120mm-fan-tray_mod.scad b/rack-mount/catalog/120mm-fan-tray_mod.scad new file mode 100644 index 0000000..34bbf5b --- /dev/null +++ b/rack-mount/catalog/120mm-fan-tray_mod.scad @@ -0,0 +1,57 @@ +use <../tray/tray.scad> + +/* + Simple tray for a 120mm Case Fan. + Not compatible with nano rack configuration. + + Please make sure to configure the correct rack frame dimensions in rackFrame.scad. +*/ + + +difference () { + bottomScrewTray ( + u = 2, + trayWidth = 140, + trayDepth = 140, + trayThickness = 3, + frontLipHeight = 26, + backLipHeight = 6, + mountPoints = [[15, 15], [15+105, 15],[15, 15+105], [15+105, 15+105]], + frontThickness = 3, + sideThickness = 3, + mountPointElevation = 1, + mountPointType = "m4", + sideSupport = true, + trayLeftPadding = 15 + ); + + // Center Cutout + translate(v=[67.5, 67.5, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cylinder(h=60, r1=60, r2=60, $fn=75); + + // fan screw hole 1 + translate(v=[15, 15, -5]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cylinder(h=15.5, r1=2.5, r2=2.5, $fn=25); + + // fan screw hole 2 + translate(v=[15+105, 15, -5]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cylinder(h=15.5, r1=2.5, r2=2.5, $fn=25); + + // fan screw hole 3 + translate(v=[15+105, 15+105, -5]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cylinder(h=15.5, r1=2.5, r2=2.5, $fn=25); + + // fan screw hole 4 + translate(v=[15, 15+105, -5]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cylinder(h=15.5, r1=2.5, r2=2.5, $fn=25); + } \ No newline at end of file diff --git a/rack-mount/catalog/Minisforum_NAB9-tray_mod.scad b/rack-mount/catalog/Minisforum_NAB9-tray_mod.scad new file mode 100644 index 0000000..b0369cb --- /dev/null +++ b/rack-mount/catalog/Minisforum_NAB9-tray_mod.scad @@ -0,0 +1,143 @@ +use <../tray/tray.scad> + +/* + Simple tray for a MinisForum NAB9 mini PC. + Not compatible with nano rack configuration. + + Please make sure to configure the correct rack frame dimensions in rackFrame.scad. +*/ + +difference () { + bottomScrewTray ( + u = 5, + trayWidth = 140, + trayDepth = 140, + trayThickness = 3, + frontLipHeight = 3, + backLipHeight = 5, + mountPoints = [[20, 70], [20+95.25, 70]], + frontThickness = 3, + sideThickness = 3, + mountPointElevation = 1, + mountPointType = "m4", + sideSupport = true, + trayLeftPadding = 15 + ); + + // Side perforations for airflow + translate(v=[-4, 5, 18]) { + rotate(a=[0,90,0]) + rotate(a=[0,0,45]) + cube(size=[18, 18, 155]); + + translate(v=[0, 28, -04]) + rotate(a=[0,90,0]) + rotate(a=[0,0,45]) + cube(size=[12,12,150]); + + translate(v=[0, 48, -06.5]) + rotate(a=[0,90,0]) + rotate(a=[0,0,45]) + cube(size=[8,8,150]); + + + // Bottom perforations for airflow + // Front Right Cube + translate(v=[60, 40, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[12,12,135]); + + // Front Center Cube + translate(v=[80, 35, -50]) + rotate(a=[90,0,45]) + rotate(a=[0,90,90]) + cube(size=[12,12,135]); + + // Front Left Cube + translate(v=[95, 40, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[12,12,135]); + + // Center Right Cube + translate(v=[50.5, 65, -50]) + rotate(a=[90,0,45]) + rotate(a=[0,90,90]) + cube(size=[12,12,135]); + + // Center Left Cube + translate(v=[110, 65, -50]) + rotate(a=[90,0,45]) + rotate(a=[0,90,90]) + cube(size=[12,12,135]); + + // Rear Left Cube + translate(v=[60, 75, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[12,12,135]); + + // Rear Center Cube + translate(v=[80, 92, -50]) + rotate(a=[90,0,45]) + rotate(a=[0,90,90]) + cube(size=[12,12,135]); + + // Rear Right Cube + translate(v=[96, 75, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[12,12,135]); + + // Far Rear Right Cube + translate(v=[100, 110, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[12,25,135]); + + // Far Rear Left Cube + translate(v=[67.5, 110, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[12,25,135]); + + // Far Front Right Cube + translate(v=[100, 3, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[12,25,135]); + + // Far Front Left Cube + translate(v=[67.5, 3, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[12,25,135]); + + // Side Front Right Cube + translate(v=[125, 25, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[25,12,135]); + + // Side Front Left Cube + translate(v=[30, 25, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[25,12,135]); + + // Side Rear Right Cube + translate(v=[125, 80, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[25,12,135]); + + // Side Rear Left Cube + translate(v=[30, 80, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[25,12,135]); + + } + +} diff --git a/rack-mount/catalog/Minisforum_UM890PRO-tray_mod.scad b/rack-mount/catalog/Minisforum_UM890PRO-tray_mod.scad new file mode 100644 index 0000000..4bb4ddf --- /dev/null +++ b/rack-mount/catalog/Minisforum_UM890PRO-tray_mod.scad @@ -0,0 +1,143 @@ +use <../tray/tray.scad> + +/* + Simple tray for a MinisForum UM890 PRO mini pc. + Not compatible with nano rack configuration. + + Please make sure to configure the correct rack frame dimensions in rackFrame.scad. +*/ + +difference () { + bottomScrewTray ( + u = 6, + trayWidth = 140, + trayDepth = 140, + trayThickness = 3, + frontLipHeight = 3, + backLipHeight = 5, + mountPoints = [[67.5, 115], [67.5, 115-95.25]], + frontThickness = 3, + sideThickness = 3, + mountPointElevation = 1, + mountPointType = "m4", + sideSupport = true, + trayLeftPadding = 15 + ); + + // Side perforations for airflow + translate(v=[-4, 5, 25]) { + rotate(a=[0,90,0]) + rotate(a=[0,0,45]) + cube(size=[25, 25, 155]); + + + translate(v=[0, 38.25, -08]) + rotate(a=[0,90,0]) + rotate(a=[0,0,45]) + cube(size=[15,15,150]); + + translate(v=[0, 65, -12]) + rotate(a=[0,90,0]) + rotate(a=[0,0,45]) + cube(size=[10,10,150]); + + // Bottom perforations for airflow + // Front Right Cube + translate(v=[60, 40, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[12,12,135]); + + // Front Center Cube + translate(v=[80, 35, -50]) + rotate(a=[90,0,45]) + rotate(a=[0,90,90]) + cube(size=[12,12,135]); + + // Front Left Cube + translate(v=[95, 40, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[12,12,135]); + + // Center Right Cube + translate(v=[50.5, 65, -50]) + rotate(a=[90,0,45]) + rotate(a=[0,90,90]) + cube(size=[12,12,135]); + + // Center Left Cube + translate(v=[110, 65, -50]) + rotate(a=[90,0,45]) + rotate(a=[0,90,90]) + cube(size=[12,12,135]); + + // Rear Left Cube + translate(v=[60, 75, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[12,12,135]); + + // Rear Center Cube + translate(v=[80, 92, -50]) + rotate(a=[90,0,45]) + rotate(a=[0,90,90]) + cube(size=[12,12,135]); + + // Rear Right Cube + translate(v=[96, 75, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[12,12,135]); + + // Far Rear Right Cube + translate(v=[110, 110, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[12,25,135]); + + // Far Rear Left Cube + translate(v=[57.5, 110, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[12,25,135]); + + // Far Front Right Cube + translate(v=[110, 3, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[12,25,135]); + + // Far Front Left Cube + translate(v=[57.5, 3, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[12,25,135]); + + // Side Front Right Cube + translate(v=[125, 25, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[25,12,135]); + + // Side Front Left Cube + translate(v=[30, 25, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[25,12,135]); + + // Side Rear Right Cube + translate(v=[125, 80, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[25,12,135]); + + // Side Rear Left Cube + translate(v=[30, 80, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[25,12,135]); + + } + +} diff --git a/rack-mount/catalog/README.md b/rack-mount/catalog/README.md index 11b2d49..581341a 100644 --- a/rack-mount/catalog/README.md +++ b/rack-mount/catalog/README.md @@ -3,4 +3,3 @@ A hodgepodge of various pre-configured rack mount parts. Please feel free to submit a pull request for any new parts you end up creating! Code quality is no object here. - diff --git a/rack-mount/catalog/beelink-EQi12-tray_mod.scad b/rack-mount/catalog/beelink-EQi12-tray_mod.scad new file mode 100644 index 0000000..1d5e58e --- /dev/null +++ b/rack-mount/catalog/beelink-EQi12-tray_mod.scad @@ -0,0 +1,142 @@ +use <../tray/tray.scad> + +/* + Simple tray for a beelink mini-s series mini pc. + + Please make sure to configure the correct rack frame dimensions in rackFrame.scad. +*/ + +difference () { + bottomScrewTray ( + u = 5, + trayWidth = 140, + trayDepth = 140, + trayThickness = 3, + frontLipHeight = 3, + backLipHeight = 5, + frontThickness = 3, + sideThickness = 3, + mountPointElevation = 1, + mountPointType = "m4", + sideSupport = true, + trayLeftPadding = 15 + ); + + + // Side perforations for airflow + translate(v=[-4, 5, 18]) { + rotate(a=[0,90,0]) + rotate(a=[0,0,45]) + cube(size=[18, 18, 155]); + + translate(v=[0, 28, -04]) + rotate(a=[0,90,0]) + rotate(a=[0,0,45]) + cube(size=[12,12,150]); + + translate(v=[0, 48, -06.5]) + rotate(a=[0,90,0]) + rotate(a=[0,0,45]) + cube(size=[8,8,150]); + + + // Bottom perforations for airflow + // Front Right Cube + translate(v=[60, 40, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[12,12,135]); + + // Front Center Cube + translate(v=[80, 35, -50]) + rotate(a=[90,0,45]) + rotate(a=[0,90,90]) + cube(size=[12,12,135]); + + // Front Left Cube + translate(v=[95, 40, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[12,12,135]); + + // Center Right Cube + translate(v=[50.5, 65, -50]) + rotate(a=[90,0,45]) + rotate(a=[0,90,90]) + cube(size=[12,12,135]); + + // Center Left Cube + translate(v=[110, 65, -50]) + rotate(a=[90,0,45]) + rotate(a=[0,90,90]) + cube(size=[12,12,135]); + + // Rear Left Cube + translate(v=[60, 75, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[12,12,135]); + + // Rear Center Cube + translate(v=[80, 92, -50]) + rotate(a=[90,0,45]) + rotate(a=[0,90,90]) + cube(size=[12,12,135]); + + // Rear Right Cube + translate(v=[96, 75, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[12,12,135]); + + // Far Rear Right Cube + translate(v=[100, 110, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[12,25,135]); + + // Far Rear Left Cube + translate(v=[67.5, 110, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[12,25,135]); + + // Far Front Right Cube + translate(v=[100, 3, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[12,25,135]); + + // Far Front Left Cube + translate(v=[67.5, 3, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[12,25,135]); + + // Side Front Right Cube + translate(v=[125, 25, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[25,12,135]); + + // Side Front Left Cube + translate(v=[30, 25, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[25,12,135]); + + // Side Rear Right Cube + translate(v=[125, 80, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[25,12,135]); + + // Side Rear Left Cube + translate(v=[30, 80, -50]) + rotate(a=[90,0,0]) + rotate(a=[0,90,90]) + cube(size=[25,12,135]); + + } + +}