$fn=60; include include ; 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() { 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() { 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); } } color("grey") translate([-63.2,0.825,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); } !color("cyan") translate([0,-8,0]) { pcie_mount(); } color("grey") translate([0,-7,0]) riser();