switchHeight = 5; switchWidth = 12; switchLength = 20; switchHoleFromFront = 9; // we assume "front" is the left here, adjust for right switchHoleFromSide = 5.5; switchHoleSpacing = 9; baseWidth = 12; baseLength = 25; baseThickness = 2; slotWidth = 3; slotLength = 15; slotCenterFromBack = 11; slotFromSide = 6; slotSpacing = 9; filletSize = 3; $fn=10; // switch mount difference(){ cube([switchWidth,switchLength,switchHeight]); translate([switchHoleFromFront, switchHoleFromSide, 10/2+switchHeight/2+0.1]) { #cylinder(h=10, r=1, center=true); } translate([switchHoleFromFront, switchHoleFromSide+switchHoleSpacing, 10/2+switchHeight/2+0.1]) { #cylinder(h=10, r=1, center=true); } } // base translate([0,-baseLength,0]){ difference(){ cube([baseWidth,baseLength,baseThickness]); translate([slotFromSide,slotCenterFromBack,baseThickness/2]){ cube([slotWidth,slotLength,baseThickness+0.2], center=true); } } } // fillet translate([0,-filletSize,baseThickness]) { prism(baseWidth,filletSize,filletSize); } module prism(l, w, h){ polyhedron(//pt 0 1 2 3 4 5 points=[[0,0,0], [l,0,0], [l,w,0], [0,w,0], [0,w,h], [l,w,h]], faces=[[0,1,2,3],[5,4,3,2],[0,4,5,1],[0,3,4],[5,2,1]] ); }