Files
3D/server_rack/scad/pcie_riser_mount.scad
2026-06-15 11:43:37 +02:00

85 lines
3.4 KiB
OpenSCAD

$fn=60;
include <BOSL2/std.scad>;
include <honeycomb.scad>;
include <nutsnbolts/cyl_head_bolt.scad>;
include <fan_holder_v2.scad>
base_length=100;
base_width=20;
base_height=15;
module screw() {
nutcatch_parallel("M3", clh=0.1);
translate([0,0,23]) hole_through(name="M3", l=16, cld=0.1, h=10, hcld=0.4);
*nutcatch_sidecut("M3", l=20, clk=0.1, clh=0.1, clsl=0.1);
}
module pcie_mount() {
color("cyan") difference() {
union() {
// Base
cuboid([base_length,base_width,base_height], rounding=2, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT], anchor=TOP);
translate([0,-10,-5]) cuboid([80,4,50], rounding=40, edges=[TOP+RIGHT,TOP+LEFT,], anchor=BOT+FRONT);
// Front support
*translate([-65,0,0]) cuboid([10,20,80.5], rounding=2, edges=[FWD+LEFT,BACK+LEFT, TOP+RIGHT], anchor=BOT+RIGHT);
}
// riser_screwholes
translate([29,-8,-7.25]) rotate([0,-90,-90]) screw();
translate([-29,-8,-7.25]) rotate([0,-90,-90]) screw();
// cage_screwholes
translate([0,-20,35]) rotate([0,-90,-90]) screw();
translate([0,-20,5]) rotate([0,-90,-90]) screw();
// riser_nest
cuboid([68,2,base_height], rounding=-1, edges=[TOP+RIGHT,TOP+LEFT,TOP+BACK,TOP+FRONT], anchor=TOP+FRONT);
translate([0,-3,0]) cuboid([44,14,base_height], rounding=-1, edges=[TOP+RIGHT,TOP+LEFT,TOP+FRONT], anchor=TOP+FRONT);
}
}
module riser() {
color("grey") {
difference() {
union() {
cuboid([67.45,1.65,14.25], rounding=1, edges=[TOP+RIGHT,TOP+LEFT,BOT+RIGHT,BOT+LEFT], anchor=TOP);
cuboid([39,7.125,10.55], rounding=.5, anchor=BOT);
translate([0,0,-7.5]) cuboid([42,7,7.5], rounding=1, edges=[TOP+RIGHT,TOP+LEFT,BOT+RIGHT,BOT+LEFT], anchor=TOP);
}
translate([29,0,-7.25]) ycyl(l=5, d=3.25);
translate([-29,0,-7.25]) ycyl(l=5, d=3.25);
}
translate([-63.2,11,2]) difference() {
cuboid([12.75,18.25,80], rounding=2, anchor=BOT+BACK+RIGHT);
translate([-1,2,-1]) cuboid([15,25,80], rounding=2, anchor=BOT+BACK+RIGHT);
}
}
}
translate([0,65.5,-40]) {
pcie_mount();
translate([0,1,0]) riser();
}
// 2_bays_stand
color("blue", alpha=0.9) {
difference() {
rotate([0,90,0]) translate([0,0,-75]) rect_tube(150, 110, 105, rounding=10);
translate([0,0,45]) cuboid([130,120,50], rounding=5, edges=[BOT+LEFT,BOT+RIGHT]);
translate([0,0,-54]) cuboid([130,120,20], rounding=5, edges=[TOP+LEFT,TOP+RIGHT]);
// holes
translate([0,0,-5]) cuboid([125,120,4], rounding=2, edges=[TOP+LEFT,TOP+RIGHT,BOT+LEFT,BOT+RIGHT]);
translate([0,0,-35]) cuboid([125,120,4], rounding=2, edges=[TOP+LEFT,TOP+RIGHT,BOT+LEFT,BOT+RIGHT]);
}
translate([-75,-55,17]) linear_extrude(2.5) {
honeycomb(150, 110, 15, 4, whole_only=true);
}
translate([0,51,-13]) cuboid([150,5,2], rounding=3, edges=[FRONT+LEFT,FRONT+RIGHT]);
translate([0,51,-43]) cuboid([150,5,2], rounding=3, edges=[FRONT+LEFT,FRONT+RIGHT]);
translate([0,-51,-13]) cuboid([150,5,2], rounding=3, edges=[BACK+LEFT,BACK+RIGHT]);
translate([0,-51,-43]) cuboid([150,5,2], rounding=3, edges=[BACK+LEFT,BACK+RIGHT]);
}
// fan_mount
rotate([0,-90,0]) {
translate([0,0,75]) rect_tube(size1=[110,110], size2=[60,60], wall=2.5, h=30, rounding1=10, rounding2=3);
translate([-30,-30,103]) fan_mount(size=60,thick=3);
}