use ; include ; difference() { union() { body(); zcube(); } dist=(heightMain-holeDist)/2; translate([0,0,dist]) bearingHalfHole(); translate([0,0,dist+holeDist]) bearingHalfHole(); cubecenter=heightMain/2-rollWithRodDist/2; translate([0, 0, heightMain/2]) cube([width, 5, rollWithRodDist]); translate([0, -5, cubecenter]) beltHolder(); translate([width, -5, cubecenter]) rotate([0, 180, 0]) beltHolder(); // add the 4 mountholes MountHoles(); } module body() { edgeRound=1.5; translate([edgeRound, 0, edgeRound]) minkowski() { cube([width-edgeRound*2, depth/2, heightMain-edgeRound*2]); rotate([-90, 0, 0]) cylinder(r=edgeRound,h=depth/2); } } // add the offset cube with the triangle to have space for the belts in it module zcube() { cubez=heightMain/2-rollWithRodDist; translate([0, -5, cubez]) cube([width, 5, rollWithRodDist]); // the bottom triangle translate([0, 0, cubez]) rotate([-90,0,-90]) linear_extrude(width) #polygon([[0,0],[5,0],[0,5]]); } module bearingHalfHole() { sideDist=3; rotate([0, 90, 0]) cylinder(h = width, d = 8+2); // we are defining +1mm to fit the rod in the hole... translate([sideDist,0,0]) rotate([0, 90, 0]) cylinder(h = bearingLength, d = bearingDiam); translate([width-bearingLength-sideDist,0,0]) rotate([0, 90, 0]) cylinder(h = bearingLength, d = bearingDiam); } module beltHolder() { translate([0, 0, -twoRodSize/2]) { cube([17, 10, twoRodSize]); translate([20, 0, twoRodSize/2]) rotate([-90, 0, 0]) difference() { hull() { cylinder(r=middleCylinderOuterRad, h=10); #translate([-5, 0, 0]) #cylinder(r=1, h=10); } cylinder(r=middleCylinderRad, h=10); } } } module MountHoles() { translate([holeLeftRightMargin,0,holeTop]) { rotate([0,0,90]) #M3Hole(10); translate([0,5,0]) rotate([0,0,90]) M3Nut(5); } translate([width-holeLeftRightMargin,0,holeTop]) { rotate([0,0,90]) #M3Hole(10); translate([0,5,0]) rotate([0,0,90]) M3Nut(5); } translate([holeLeftRightMargin,0,holeBottom]) { translate([0,-5,0]) rotate([0,0,90]) #M3Hole(15); translate([0,5,0]) rotate([0,0,90]) M3Nut(10); } translate([width-holeLeftRightMargin,0,holeBottom]) { translate([0,-5,0]) rotate([0,0,90]) #M3Hole(15); translate([0,5,0]) rotate([0,0,90]) M3Nut(10); } }