epsilon = 0.01; $fn=100; module tube(h, de, di){ translate([0,0,h/2-epsilon]) difference(){ cylinder(h, d = de, center = true); cylinder(h+epsilon, d = di, center = true); } } module transmission(h, d0, d1, d2, h1, h2, p1, p2, d3, d4,l1, l2){ difference (){ cylinder(h, d=d0); tube (h - h1, de = d0 + epsilon, di = d1); tube(h - h2, de = d1 + epsilon, di = d2); translate([0,0, h - p1 + epsilon]) cylinder(h= p1, d = d4); translate([0,0,-epsilon]) cylinder(h = h - h2, d=d3); translate([0,0,h-p2/2]){ minkowski(){ sphere(d=1); cube([l1,l2,p2+epsilon], center=true); } minkowski(){ sphere(d=1); cube([l2,l1,p2+epsilon], center=true); } } }; translate([0,0,115]) mirror([0,0,1]) difference(){ translate([0,0,82.5-p2]){ translate([0,0,p2/2]){ cube([l1,l2,p2], center=true); cube([l2,l1,p2], center=true); } cylinder(p2, d=d4); } translate([0,0,96]) difference(){ cylinder(50, d=50,center=true); translate([0,0,-40]) minkowski(){ cylinder(50, d1=50, d2=0, center=true); sphere(d=3); } } } } transmission( h=31.65, d0=14, d1=12.5, d2=10.5, h1 = 12.35, h2 = 18.85, p1 = 18, p2 = 17.1, d3 = 4, d4 = 5.5, l1 = 10, l2 = 3 );