-module rectfromto(a,b) {
- ab = b - a;
- translate([min(a[0], b[0]), min(a[1], b[1])])
- square([abs(ab[0]), abs(ab[1])]);
-}
-module circleat(c,r) { translate(c) circle(r); }
-module linextr(z0,z1) {
- translate([0,0,z0])
- linear_extrude(height=z1-z0)
- children();
-}
+// hinge plan
+hp_rn = hingescrew_nut_dia/2;
+hp_r2 = hp_rn + lever_cover_th;
+hp_rs = hingescrew_shaft_dia/2;
+hp_r1 = hp_rs + hingemount_th;
+
+hppU = lpp13;
+hppS = epp2o + [0,-1] * case_th_bottom;
+hp_k = 0.5 * (hppU[1] - hppS[1] + foldover_gap);
+
+hppM = [ epp4[0] - foldover_lever_gap - hp_r2,
+ 0.5 * (hppU + hppS)[1] ];
+hppT = hppM + 0.5 * [0,+1] * hp_k;
+hppB = hppM + 0.5 * [0,-1] * hp_k;
+
+// hinge elevation x coords
+
+hingescrew_portion_len =
+ 0.5* (hingescrew_shaft_len - hingescrew_nut_thick - hinge_x_gap);
+
+hex20 = max(epp2o[0],
+ phone_cnr_rad,
+ kppd[0] + hingescrew_head_th + keeper_gap_x_holes);
+hex21 = hex20 + hingescrew_portion_len;
+hex22 = hex21 - hinge_x_gap;
+hex23 = hex22 + hingescrew_portion_len;
+hex24 = hex23 + hinge_x_postscrew_gap;
+
+// ---------- modules ----------