// -*- C -*- include main_thick = 3.3; main_in_dia = 28.9 + 0.5; horn_ext_dia = 20 - 0.5; //? horn_c_x = -5; //? horn_c_dy= -5; //? blhook_start_ang = 45; width = 20; mc_mid_rad = main_in_dia/2 + main_thick/2; mc_bl = circle_point([0,0], mc_mid_rad, 270-blhook_start_ang); $fs=0.1; horn_thick = main_thick; module MainLoop(){ intersection(){ difference(){ circle(r= main_in_dia/2 + main_thick, $fn=50); circle(r= main_in_dia/2, $fn=50); } polygon([[0,0], 3*mc_bl, [0, -100], [100,-100], [100,100], [0,100]]); } translate(mc_bl) circle(main_thick/2); translate([horn_c_x, mc_mid_rad + horn_c_dy]) intersection(){ difference(){ circle(horn_ext_dia/2); circle(horn_ext_dia/2 - horn_thick); } polygon([[0,0], [-50,0], [0,50]]); } translate([0,main_in_dia/2]) mirror([1,0]) square([-horn_c_x + horn_ext_dia/2 * 0.75, main_thick]); } MainLoop();