module gear () { //GEAR PINION OD = 7; ID = 5; H = 7; TEETH = 12; TOOTH_W = .9; //center cylinder(r = ID / 2, h = 7, center = true, $fn = 60); for (i = [0 : TEETH - 1]) { rotate([0, 0, i * (360 / TEETH)]) translate([0, 2.9, 0]) cube([TOOTH_W, 1.1, H], center = true); } } module notched_shaft (H = 10) { D = 5; difference () { cylinder(r = D / 2, h = H, center = true, $fn = 50); translate([4.25, 0, 0]) cube([D, D, H + 1], center = true); } } module notched_roller () { D = 37.75; D2 = 34.5; H = 3.5; H2 = 14.5; difference () { union () { difference () { cylinder(r = D / 2, h = H, $fn = 180, center = true); translate([D / 2, 0, 0]) scale([1, 2, 1]) rotate([0, 0, 45]) cube([2, 2, H + 1], center = true); } translate([0, 0, -(H / 2) - (H2 / 2)]) cylinder(r = D2 / 2, h = H2, $fn = 180, center = true); } for (i = [0 : 2]) { rotate([0, 0, i * (360 / 3)]) translate([D / 4, 0, 0]) cylinder(r = 6 / 2, h = H2 * 4, $fn = 80, center = true); } translate([0, 0, -H - (H2 / 2) - 1]) rotate([0, 0, 60]) notched_shaft(); } } PART = "gear"; if (PART == "gear") { translate([0, 0, 5]) gear(); notched_roller(); }