+module ClampBot(){ ////toplevel
+ linear_extrude(height = clamp_bot_th, convexity=4) {
+ difference(){
+ ClampArmPlan();
+ ClampHolePlan();
+ }
+ }
+ translate([clamp_l, 0, clamp_bot_th-0.1])
+ linear_extrude(height = clamp_bot_tooth_h +0.1)
+ rectfromto([ -clamp_bot_tooth_d, -clamp_w/2 ],
+ [ 0, +clamp_w/2 ]);
+ translate([0,0, clamp_bot_th])
+ mirror([0,0,1])
+ linear_extrude(height = clamp_bot_collar)
+ difference(){
+ ClampCollarPlan();
+ ClampHolePlan();
+ }
+ 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();
+}
+