3 // print Stem and Wingnut on High Detail
4 // but adjust shell thickness to 2mm
10 include <camera-mount.scad>
12 positive_dia = inch * 3/8. - 0.375;
13 positive_l = inch * 1/2.;
15 positive_blank_dia = 8.12;
29 thread_act = thread_nom + 0.600;
34 clamp_bot_tooth_h = 2.5;
35 clamp_bot_tooth_d = 10;
36 clamp_bot_collar = 20;
37 clamp_bot_collar_th = 3.0;
41 clamp_max_table_th = 35;
43 clamp_hole_dia = thread_nom + 0.30;
45 clamp_reg_clear_x = 2.5;
46 clamp_reg_clear_y = 0.75; // each side
47 clamp_reg_extra_x = 4;
53 wingnut_wing_mindia = 17.0;
54 wingnut_wing_xrad = 8;
66 wingnut_cnr = wingnut_wing_th/2 -0.1;
68 clamp_reg_bot_x_min = -stem_base_dia/2 -clamp_reg_clear_x -clamp_reg_sz2;
69 clamp_collar_r = thread_nom/2 + clamp_bot_collar_th;
72 translate([0,0,-0.01])
73 metric_thread(diameter=thread_act, pitch=thread_pitch,
74 leadin=3, internal=true,
75 test=$test, length=l);
79 translate([0,0, stem_l -0.1])
84 cylinder(r= stem_dia/2 * 1/(0.5 * sqrt(3)),
87 cylinder(r= stem_base_dia/2,
90 OurThread(stem_inner_l);
94 module Stem(){ ////toplevel
96 english_thread(diameter=positive_dia/inch, threads_per_inch=16,
98 length= (positive_l + 0.1) / inch);
101 module StemBlankPart(){
103 cylinder(h = blank_l + 0.1 - blank_taper,
104 r = positive_blank_dia/2);
105 cylinder(h = blank_l + 0.1,
106 r = positive_blank_dia/2 - blank_taper);
110 module BlankStem(){ ////toplevel
115 module Wingnut(){ ////toplevel
118 cylinder(r= (thread_nom+wingnut_wall)/2,
121 sphere(r= wingnut_cnr);
122 translate([0,0, wingnut_cnr*0.5])
123 linear_extrude(height= wingnut_wing_xh + wingnut_th
125 square([wingnut_wing_mindia + wingnut_wing_xrad*2 - wingnut_cnr*2,
126 wingnut_wing_th - wingnut_cnr*2],
130 translate([0,0, wingnut_th])
131 linear_extrude(height= wingnut_wing_xh+1)
132 square(wingnut_wing_mindia, center=true);
133 translate([0,0, wingnut_th])
135 OurThread(wingnut_th+3);
137 linear_extrude(height=5)
138 square(center=true, wingnut_wing_mindia*2);
142 module ClampCollarPlan(){
143 circle(r= clamp_collar_r);
145 module ClampHolePlan(){
146 circle(r= clamp_hole_dia/2);
148 module ClampArmPlan(){
151 rectfromto([r, -clamp_w/2],
152 [clamp_l, +clamp_w/2]);
157 module ClampTop(){ ////toplevel
158 linear_extrude(height = clamp_top_th, convexity=4) {
167 linear_extrude(height = clamp_reg_sz1, convexity=4) {
171 translate([0, clamp_reg_sz2/2 + clamp_reg_clear_y, 0])
172 rectfromto([clamp_reg_bot_x_min - clamp_reg_extra_x, 0 ],
173 [0, clamp_reg_sz1 ]);
180 module ClampBot(){ ////toplevel
181 linear_extrude(height = clamp_bot_th, convexity=4) {
187 translate([clamp_l, 0, clamp_bot_th-0.1])
188 linear_extrude(height = clamp_bot_tooth_h +0.1)
189 rectfromto([ -clamp_bot_tooth_d, -clamp_w/2 ],
191 translate([0,0, clamp_bot_th])
193 linear_extrude(height = clamp_bot_collar)
198 translate([0, 0, clamp_bot_th]) {
199 linextr(-clamp_reg_sz2, clamp_max_table_th+clamp_reg_sz2) {
200 translate([clamp_reg_bot_x_min, 0]) {
201 rectfromto([ 0, -clamp_reg_sz2/2 ],
202 [ clamp_reg_sz2, +clamp_reg_sz2/2 ]);
205 linextr(-clamp_reg_sz2, 0) {
207 rectfromto([ clamp_reg_bot_x_min, -clamp_reg_sz2/2 ],
208 [ 0, +clamp_reg_sz2/2 ]);
215 module StemBlankTest(){ ////toplevel
217 linextr(-1.5,0) square(center=true, [10,35]);
220 module Demo(){ ////toplevel
221 color("blue") translate([0,0, clamp_top_th+0.5]) BlankStem();
222 color("red") ClampTop();
223 color("grey") translate([0,0, -(clamp_bot_th + 5)]) ClampBot();
224 translate([0,0, -(clamp_bot_collar +10)])
225 rotate([180,0,0]) Wingnut();