+module PsHull(ps) {
+ hull(){
+ for (p = ps) {
+ translate(p)
+ circle(r = ourcirc_r, $fn=10);
+ }
+ }
+}
+
+module LeverSect(inadj=false){
+ P3 = inadj ? P3a : P3t;
+ diag = inadj ? 0 : atan(outside_push_inadj_slope);
+ PsHull([P2,P3,P4]);
+ difference(){
+ PsHull([P0,P1,P2,P5,P8,P9]);
+ translate(Q0) {
+ rotate(diag){
+ hull(){
+ circle(r=edge_or, $fn=20);
+ translate([0,10]) circle(r=edge_or, $fn=20);
+ }
+ }
+ }
+ }
+}
+
+module LeverSectTop(){
+ difference(){
+ LeverSect(false);
+ translate([pivot_x,0]) circle(r= pivot_r + pivot_slop, $fn=20);
+ }
+}
+
+module LeverSectBot(inadj=false){
+ P6 = inadj ? P6a : P6t;
+ P7 = inadj ? P7a : P7t;
+ mirror([0,1]) {
+ LeverSect(inadj);
+ PsHull([P5,P6,P7]);
+ translate([pivot_x,0]) circle(r=pivot_r, $fn=20);
+ }
+}
+
+module Demo(){
+ translate([0,0,-5]) color("white") ExtrusionSect();
+ LeverSectTop();
+ LeverSectBot();
+}
+
+module LeverTop(){
+ linear_extrude(height=width, convexity=100) LeverSectTop();
+}
+
+module LeverBot(inadj=false){
+ linear_extrude(height=width, convexity=100) LeverSectBot(inadj);
+}
+
+module Test(){
+ translate([0,2,0]) LeverTop();
+ LeverBot();
+ translate([0,-opening_height - 2,0]) LeverBot(true);