// -*- C -*- include include width = 20; cup = 2.5; jaw = 32.36 - 2.00; a = cup; b = width/2; alpha = atan2(a, b); c = vectorlen2d([a, b]); r = a / (1 - cos(2*alpha)); C = [0, a-r]; module Thing() { intersection(){ hull(){ translate(C) circle(r=r); translate([0, -jaw]) square(center=true, [width, 10]); } rectfromto([ -width/2, -jaw ], [ width/2, 20 ]); } } Thing();