$fn = 33; M3HoleDiam = 3.4; height = 40; thickness = 3; length = 30; // cambelt has 6mm width innerspace = 8; // call main YRollHolder(); module YRollHolder() { render() difference() { frame(); holes(); } } module frame() { cube([innerspace + 2 * thickness, thickness, height]); translate([0, thickness, 0]) cube([thickness, length, height]); translate([innerspace + thickness, thickness, 0]) cube([thickness, length, height]); } module holes() { // two inner holes translate([innerspace / 2 + thickness, 0, height / 4]) M3Hole(); translate([innerspace / 2 + thickness, 0, height / 4 * 3]) M3Hole(); translate([0, length / 4 * 3, height / 2]) SideM3Hole(); translate([innerspace + thickness, length / 4 * 3, height / 2]) SideM3Hole(); } module M3Hole() { rotate([0, 90, 90])cylinder(h = thickness, d = M3HoleDiam); } module SideM3Hole() { rotate([0, 90, 0])cylinder(h = thickness, d = M3HoleDiam); }