$fn = 50; module holeRad() { cylinder(r=2,h=3); translate([0,0,2.2]) cylinder(r=3.8,h=3); } module mountSDS() { union() { difference() { cylinder(r=5/2,h=20); translate([0,0,-0.5]) cylinder(r=1.5,h=20+1); } cylinder(r1=4.6,r2=5/2,h=3); } } module holesRad() { translate([0,0,-0.5]) holeRad(); translate([101.6,0,-0.5]) holeRad(); translate([0,56,-0.5]) holeRad(); translate([101.6,56,-0.5]) holeRad(); } module standsSDS() { translate([5,70-11,0]) mountSDS(); translate([5+60,70-11,0]) mountSDS(); translate([5+41,70-(11+55),0]) mountSDS(); %translate([5+41+3,0,15]) cube([20,7,5]); } module mountPCB() { difference() { union() { cube([5,45,8.6]); translate([50,0,0]) cube([5,45,8.6]); } translate([2.5,2.5,5]) cube([50,42.5,2]); translate([45,14,0]) cube([15,25,10]); } } difference() { cube([130,75,1.8]); translate([7.6,10,0]) holesRad(); translate([20,5,-0.5]) cube([26,12,3]); } difference() { translate([56,72.5,1.4]) rotate(-90) standsSDS(); translate([7.6,10,0]) holesRad(); } translate([5,15,1.0]) mountPCB(); difference() { translate([0,0,1.8]) rotate([0,45,0]) cube([4,75,4]); translate([-20,-20,-20]) cube([200,200,20]); translate([7.6,10,0]) holesRad(); } difference() { translate([130-sqrt(4*4+4*4),0,1.8]) rotate([0,45,0]) cube([4,75,4]); translate([-20,-20,-20]) cube([200,200,20]); } translate([sqrt(4*4+4*4)/2,15,0]) cube([6,45,4.65]);