$fn=64; //outside diameter=15.2+0.7; diameterBig=17+0.7; pushFitRadius=1; //to motor shaftDiameter=7+0.4; shaftLength=13; shaftLowerDiameter=12; shaftLowerLength=3; screwDiameter=2.7; screwDiameterLoose=3.2; screwPosition=8; module pushFit() { union() { cylinder(h=35, r=diameter/2); union() { for (i=[0:360/6:360]) { rotate([0,0,i]) translate([diameterBig/2-pushFitRadius,0,0]) rotate([0,-1.5,0]) cylinder(h=35, r=pushFitRadius); } } } } module pushFit2() { union() { cylinder(h=35, r=diameter/2); union() { for (i=[0:360/6:360]) { rotate([0,0,i]) translate([diameterBig/2-pushFitRadius,0,0]) rotate([0,-0.7,45]) cube([pushFitRadius,pushFitRadius,35]); } } translate([0,0,1]) cylinder(h=1, d1=19, d2=diameter); cylinder(h=1, d=19); } } module toMotor() { union() { cylinder(h=shaftLowerLength, r=shaftLowerDiameter/2); translate([0,0,shaftLowerLength-0.01]) cylinder(h=shaftLength, r=shaftDiameter/2); translate([0,0,screwPosition]) rotate([90,0,0]) cylinder(h=10,r=screwDiameter/2); //screw hole translate([0,0,screwPosition]) rotate([-90,0,0]) cylinder(h=10,r=screwDiameterLoose/2); //screw hole big } } difference() { pushFit2(); translate([0,0,-0.1]) toMotor(); }