120mm Fan Tray + 3 mini pc trays (#18)

Add 120mm Fan Tray + 3 mini pc trays

NOT COMPATIBLE WITH NANO PROFILE
The Fan tray and Mini PC trays in this pull request are only compatible with the Micro and Mini rackstack profiles.
This commit is contained in:
George Luetkemeyer
2024-11-21 16:40:53 -06:00
committed by GitHub
parent c1c93a3dd5
commit 3ea9bda2da
5 changed files with 485 additions and 1 deletions

View File

@ -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);
}

View File

@ -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]);
}
}

View File

@ -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]);
}
}

View File

@ -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.

View File

@ -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]);
}
}