$fn = 40; // this is not a proper drawing yet, but it should be a working universal joint for 5 mm shaft base(); //translate([0,0,25])rotate([0,180,90])base(); //translate([0,0,12.5-5.3/2])connector(); // the parts: module base() { difference() { intersection() { union() { cylinder(d = 10, h = 7.5); translate([-5, -2.5, 0])cube([10, 5, 12.5]); translate([-5, 0, 12.5])rotate([0, 90, 0])cylinder(d = 5, h = 10); } cylinder(d = 10, h = 30); } cylinder(d = 6, h = 7.5); translate([-2.7, -5, 6.5])cube([5.4, 20, 20]); translate([-5, -5, 7.5])rotate([0, 90, 0])cylinder(d = 5, h = 10); translate([-5, 5, 7.5])rotate([0, 90, 0])cylinder(d = 5, h = 10); translate([-5, 0, 12.5])rotate([0, 90, 0])cylinder(d = 2, h = 10); translate([-5, 0, 3])rotate([0, 90, 0])cylinder(d = 2.5, h = 10); } difference(){translate([0,0,-16])cylinder(d=10,h=16); translate([0,0,-16])cylinder(d=6,h=16); translate([-5, 0, -12])rotate([0, 90, 0])cylinder(d = 2.5, h = 10); } } module connector() { difference() { hull() { cylinder(d = 5.3, h = 5.3); translate([-5.3 / 2, 0, 5.3 / 2])rotate([0, 90, 0])cylinder(d = 5.3, h = 5.3); translate([0, 5.3 / 2, 5.3 / 2])rotate([90, 0, 0])cylinder(d = 5.3, h = 5.3); } translate([-5.3 / 2, 0, 5.3 / 2])rotate([0, 90, 0])cylinder(d = 1.6, h = 5.3); translate([0, 5.3 / 2, 5.3 / 2])rotate([90, 0, 0])cylinder(d = 1.6, h = 5.3); } }