backlen=4; // arm length, in the opp direction armlen=55; // arm length armheight=5; // arm height hublen=15; // hub len, the part that holds the screw hubheight=10; // hub height, " width=9; // width of arm hubdia=10; // cylinder wrapping around rudder shaft, ie, additional diameter rudderdia=3; // rudder shaft diameter drivedia=1.5; // driven diameter lockdia=2.5; // diameter of locking bolt against rudder shaft $fn=50; difference() { union() { hull() { translate([-backlen+width/2,0,0])cylinder(armheight,width/2,width/2); translate([armlen-width/2,0,0])cylinder(armheight,width/2,width/2); } translate([0,0,armheight]) hull() { translate([-backlen+width/2,0,0])cylinder(hubheight,width/2,width/2); translate([hublen-width/2,0,0])cylinder(hubheight,width/2,width/2); } translate([-backlen+width/2,0,0])cylinder(armheight+hubheight,hubdia/2,hubdia/2); } translate([-backlen+width/2,0,-0.5]) cylinder(hubheight+armheight+1,rudderdia/2,rudderdia/2); translate([armlen-width/2,0,-0.5]) cylinder(armheight+1,drivedia/2,drivedia/2); translate([0,0,armheight+hubheight/2]) rotate([0,90,0]) cylinder(hubheight+armheight+2,lockdia/2,lockdia/2); }