$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; Motorhalter(); module Motorhalter() { 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); }