infty = 100; eps = 0.01; pin_d = 6.6; pin_d2 = 8.5; pin_h = 10; out_d = 11; wall = 1; slot_w = 0.6; slot_h = pin_h; slot_angle = 45; difference() { union() { cylinder(r = out_d/2, h = pin_h); for (angle = [0:15:360]) rotate([0, 0, angle]) translate([out_d/2, 0, 0]) cylinder(r = 0.9, $fn = 3, h = pin_h); // +-90 degree protrusions for (angle = [90,270]) rotate([0, 0, angle]) translate([out_d/2, 0, 0]) rotate([0, 0, 45]) cylinder(r = 1.5, $fn = 4, h = pin_h); // center protrusion difference() { translate([out_d/2, 0, 0]) cylinder(r = 2.5, $fn = 3, h = pin_h); translate([0, 0, 2*pin_h/3 - wall/2]) cylinder(r = infty, h = wall); translate([0, 0, pin_h/3 - wall/2]) cylinder(r = infty, h = wall); } // bottom cylinder cylinder(r = out_d/2 + 0.9, h = wall, $fn = 360/15); // top cylinder translate([0, 0, pin_h - wall]) cylinder(r = out_d/2 + 0.9, h = wall, $fn = 360/15); } difference() { translate([0, 0, -eps]) cylinder(r = pin_d/2, h = infty, $fn = 32); rotate([0, 0, slot_angle]) translate([-pin_d/2-eps, -slot_w/2, 0]) cube([pin_d+2*eps, slot_w, slot_h-eps]); } }