eps = 0.01; infty = 100; inner_d = 11.7; outer_d = 16; body_h = 1.5; tip_h = 3; tip_w1 = 5; tip_w2 = 0.5; tip_d = outer_d/2-0.5; difference() { union() { cylinder(r = outer_d/2, h = body_h); hull() { translate([0, -tip_w1/2, 0]) cube([tip_d, tip_w1, body_h]); translate([0, -tip_w2/2, tip_h - eps]) cube([tip_d, tip_w2, eps]); } }; // inner hole translate([0, 0, -eps]) cylinder(r = inner_d/2, h = tip_h + 2*eps); // rear side translate([0, 0, -eps]) rotate([0, 0, 135]) cube(infty); }