+ translate([0, 0, clamp_bot_th]) {
+ linextr(-clamp_reg_sz2, clamp_max_table_th+clamp_reg_sz2) {
+ translate([clamp_reg_bot_x_min, 0]) {
+ rectfromto([ 0, -clamp_reg_sz2/2 ],
+ [ clamp_reg_sz2, +clamp_reg_sz2/2 ]);
+ }
+ }
+ linextr(-clamp_reg_sz2, 0) {
+ difference(){
+ rectfromto([ clamp_reg_bot_x_min, -clamp_reg_sz2/2 ],
+ [ 0, +clamp_reg_sz2/2 ]);
+ ClampHolePlan();
+ }
+ }
+ }
+}
+
+module StemBlankTest(){ ////toplevel
+ StemBlankPart();
+ linextr(-1.5,0) square(center=true, [10,35]);
+}
+
+module Demo(){ ////toplevel
+ color("blue") translate([0,0, clamp_top_th+0.5]) BlankStem();
+ color("red") ClampTop();
+ color("grey") translate([0,0, -(clamp_bot_th + 5)]) ClampBot();
+ translate([0,0, -(clamp_bot_collar +10)])
+ rotate([180,0,0]) Wingnut();