+// CATCH
+
+cppxC = 0.41 * sm_inner_rad * TAU;
+
+// catch pin
+
+cpp_adj = (bayo_n[0] - bayo_f[0]) * (1 - sm_inner_rad / bayo_nom_rad);
+// radius scaling due to nom and actual radius difference in
+// bayo entry construction
+
+cppa = bayo_f + [1,-1] * catch_pin_slop + [1,0] * cpp_adj;
+cppb = bayo_g + [1,-1] * catch_pin_slop + [1,0] * cpp_adj;
+cppd = [ bayo_n[0]
+ - catch_pin_slop - catch_pin_slop_x_extra,
+ -catch_stalk_above_gap ];
+cppc = [ cppd[0], cppb[1] ];
+cpph = cppd + [0,-1] * catch_stalk_h;
+cppe = cppd + [0,-1] * (catch_knob_above_gap + catch_knob_dia/2);
+cppf = [ cppa[0], cppe[1] ];
+cppg = [ cppa[0], cpph[1] ];
+cppB = 0.5 * (cppf + cppe);
+
+echo("RR", sm_inner_rad / bayo_nom_rad);
+
+// catch assembly depression below pin
+
+cppy6 = cppB[1] - (catch_knob_dia/2
+ + (cppc[1] - cppd[1])
+ + catch_stalk_below_gap);
+cpp7 = [ cppB[0], cppy6 + catch_cr ];
+cpp11 = cpp7 + [1,0] * catch_cr;
+cppy9 = cppy6 + catch_strap_width * 1/3;
+cpp9 = [ cpp7[0] + catch_cr * 2, cppy9 ];
+cpp8 = cpp9 + [0,-1] * catch_cr;
+cpp10 = cpp8 + [-1,0] * catch_cr;
+cppC = [ cppxC, cpp9[1] ];
+cppD = cppC + [0,-1] * catch_strap_width;
+
+// catch assembly stalk and so on
+
+catch_cr3 = catch_cr + catch_stalk_h;
+
+cppF = [ cppg[0] - catch_stalk_eff_bend_rad, cppd[1] ];
+cpp4 = [ cppg[0] - catch_stalk_len, cpph[1] ] + [1,-1] * catch_cr;
+cpp5 = [ cpp4[0], cppC[1] + catch_cr ];
+cpp2 = cpp5 + [-1,0] * (catch_cr * 2 + catch_stalk_base_width);
+cpp2r = cpp2 + [1,0] * catch_cr;
+cpp2d = cpp2 + [0,-1] * catch_cr;
+cpp3 = [ cpp2[0] + catch_cr + catch_cr3, cppd[1] - catch_cr3 ];
+cppA = [ -cppxC, cpp9[1] ];
+cppE = [ cppA[0], cppD[1] ];
+
+catch_assembly_dy = -cppy9 + catch_strap_width;
+
+