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