use ; use ; MountSize = 40; BodyWidth = 55; $fn = 100; difference() { MainBody(); M3MountHoles(); xcenter = 49; ycenter = MountSize/2 - 10; translate([xcenter, ycenter, -5]) #BottomZRodHoles(); YRodHoles(); translate([10, 45, 0]) rotate([0, 0, -90]) #motorholes(6); } module M3MountHoles(){ edgeDistance = (MountSize-20)/2; translate([0, edgeDistance, edgeDistance]) #M3Hole(6); translate([0, MountSize-edgeDistance, edgeDistance]) #M3Hole(6); translate([0, edgeDistance, MountSize-edgeDistance]) #M3Hole(6); translate([0, MountSize-edgeDistance, MountSize-edgeDistance]) #M3Hole(6); } module BottomZRodHoles(){ holedistance = 10.6; translate([holedistance/2, holedistance/2, 0]) rotate([0,270,0]) M3Hole(6); translate([-holedistance/2, holedistance/2, 0]) rotate([0,270,0]) M3Hole(6); translate([holedistance/2, -holedistance/2, 0]) rotate([0,270,0]) M3Hole(6); translate([-holedistance/2, -holedistance/2, 0]) rotate([0,270,0]) M3Hole(6); // center hole cylinder(h = 6, d = 10.3); } module YRodHoles(){ translate([55, 30, 52.5]) rotate([0, 90, 0]) #cylinder(h = 6, d = 8); translate([55, 30, -12.5]) rotate([0, 90, 0]) #cylinder(h = 6, d = 8); translate([55, 25, 10]) #union() { // create the ovale hole with the hull of two holes hull() { translate([0, 5, 0]) rotate([0, 90, 0]) cylinder(h = 6, d = 10); translate([0, 5, 20]) rotate([0, 90, 0]) cylinder(h = 6, d = 10); } } } module MainBody() { // left mount plate translate([0,0,-5]) cube([5, MountSize, MountSize+10]); // bottom frame plate translate([5, 0,-5 ]) cube([BodyWidth, MountSize, 5]); // up frame plate translate([5, 20,40 ]) cube([BodyWidth, 20, 3]); // motorholder plate translate([0, MountSize,-5 ]) cube([40+20, 5, 50]); // rod holder translate([BodyWidth, 20,-20 ]) cube([5, 25, 80]); // stabilizetriangle translate([BodyWidth, MountSize, 45]) rotate([90, 0, 180]) linear_extrude(5) polygon([[0, 0], [0, 15], [20, 0]]); translate([BodyWidth, MountSize + 5, -5]) rotate([-90, 0, 180]) linear_extrude(5) polygon([[0, 0], [0, 15], [20, 0]]); }