$fn=50; motorheight=42.1; motorwidth=40.5; wanddickemotor=3; wanddickelinks=5.5; cylinderdiameter=22.2; motorholedistance=(motorheight-31) /2; leftholedist=7; M3HoleDiam=3.4; M3HeadDiam=5.8; render() difference() { mainbody(); translate([motorwidth,wanddickelinks,0]) motorholes(); leftholes(); } //modules module mainbody(){ cube([motorwidth + wanddickemotor, wanddickelinks ,motorheight]); translate([motorwidth,wanddickelinks,0])cube([wanddickemotor, motorheight, motorheight]); translate([motorwidth + wanddickemotor,motorheight * 2 /3,motorheight]) rotate([0,0,180]) linear_extrude(3) polygon([[0,0], [0, motorheight * 2 /3], [motorwidth * 2 /3, motorheight* 2 /3]]); } module motorholes(){ translate([0,motorheight/2,motorheight/2])rotate([0,90,0])cylinder(h=wanddickemotor, d=cylinderdiameter, $fn=130); translate([0,motorheight - motorholedistance,motorheight - motorholedistance]) MotorM3Hole(); translate([0,motorheight - motorholedistance, motorholedistance]) MotorM3Hole(); translate([0,motorholedistance,motorheight - motorholedistance]) MotorM3Hole(); translate([0,motorholedistance, motorholedistance]) MotorM3Hole(); } module leftholes() { // bottom left translate([leftholedist,0,leftholedist]) LeftM3Hole(); //bottom right translate([motorwidth - leftholedist,0,leftholedist]) LeftM3Hole(); // upper left translate([leftholedist,0,motorwidth - leftholedist]) LeftM3Hole(); // upper right translate([motorwidth - leftholedist,0,motorwidth - leftholedist]) LeftM3Hole(); } module MotorM3Hole() { rotate([0,90,0])cylinder(h=wanddickemotor, d=M3HoleDiam); } module LeftM3Hole() { rotate([270,0,0])cylinder(h=wanddickelinks, d=M3HoleDiam); translate([0,wanddickelinks-3,0]) rotate([270,0,0])cylinder(h=3, d=M3HeadDiam); }