$fn = 32; module end_plate(){ width = 9.9; height = 12.9; thickness = 1.9; union() { cylinder(d=width, h=thickness); translate([-width / 2, 0, 0]) cube([width, height - (width / 2), thickness]); } } module feeder() { length = 24; d1 = 7.3; d2 = 6.8; union() { translate([0, 0, 1.3]) cylinder(d1=d1, d2=d2, h=length); translate([-1, d2 / 2, 1.3]) cube([2, 3, 12]); } } module shaft() { d1 = 4.75; d2 = 2.75; h1 = 12; h2 = 20; union() { cylinder(d=d1, h=h1); translate([0, 0, h1]) cylinder(d=d2, h=h2); } } module wheel() { radius = 12.5 / 2; thickness = 5; translate([5.1, 0, 25]) rotate([90, -90]) union() { translate([-10, -3, -5]) cube([20, radius, 10]); difference() { translate([0,0,-thickness / 2]) cylinder(r=radius, h=thickness); rotate_extrude(angle=360, convexity=1) translate([radius, 0, 0]) circle(d=1.75); } } } module gear() { d = 8.2; translate([-4, 0, 25]) rotate([90, 0]) translate([0, 0, -5]) cylinder(d=d, h=10); } module wings() { union() { translate([0, 2.75, 18.3]) cube([2, 3, 7]); translate([0, -5.5, 18.3]) cube([2, 3, 7]); } } module ring() { difference () { translate([0,0,27]) cylinder(d=6.8, h=2); shaft(); } } difference() { union(){ end_plate(); feeder(); wings(); } shaft(); wheel(); gear(); } ring();