cleat_frames = 10;
cleat_curve_r = 200;
-cleat_horn_l = 60;
-cleat_horn_d_min = [8, 10];
-cleat_horn_d_max = [10, 12];
+cleat_horn_l = 40;
+cleat_horn_d_min = [10, 12];
+cleat_horn_d_max = [12, 14];
cleat_height = 25;
cleat_stem_l = 20;
vhook_ctr = vhook_y0 - vhook_inside/2;
vhook_outer_dia = vhook_inside + vhook_th*2;
+// calculated - cleat
+
+cleat_horn_tl = cleat_horn_l + cleat_stem_l/2;
+
// calculated - hhook
hhook_outer_dia = hhook_inside + hhook_th*2;
// ---------- cleat ----------
-function cleat_frame_theta(s) = s * cleat_horn_l / cleat_curve_r * 360/TAU;
+function cleat_frame_theta(s) = s * cleat_horn_tl / cleat_curve_r * 360/TAU;
function cleat_frame_z(s) = cleat_curve_r * (1 - cos(cleat_frame_theta(s)));
function cleat_frame_x(s) = cleat_curve_r * sin(cleat_frame_theta(s));
function cleat_frame_r(s) = ( cleat_horn_d_min * s +
for (si=[0 : cleat_frames-2]) {
s0 = si / (cleat_frames-1);
s1 = (si+1) / (cleat_frames-1);
- //hull(){
+ hull(){
CleatFrame(s0);
CleatFrame(s1);
- //}
+ }
}
}
module CleatBase(){
frames = cleat_frames/2;
- se = cleat_stem_l/2 / cleat_horn_l;
+ se = cleat_stem_l/2 / cleat_horn_tl;
r = cleat_frame_r(se);
- for (si=[0: frames-2]) {
- s0 = se * si / (frames-1);
- s1 = se * (si+1) / (frames-1);
- hull(){
+ hull(){
+ for (s = [-se, se]) {
for (z= [-(cleat_height + tube_dia/2),
- cleat_frame_z(se)]) {
- translate([cleat_frame_x(se), 0, z])
- CleatFrameSphere(r);
+ cleat_frame_z(s)]) {
+ translate([cleat_frame_x(s), 0, z])
+ linear_extrude(height=0.1)
+ scale([1, r[1]/r[0]])
+ circle(r=r[0]);
}
}
}
-
- for (si=[0 : cleat_frames-2]) {
- s0 = si / (cleat_frames-1);
- s1 = (si+1) / (cleat_frames-1);
- //hull(){
- CleatFrame(s0);
- CleatFrame(s1);
- //}
- }
}
module VCleatA(){ ////toplevel
translate([0, -(main_r + cleat_height), 0]) {
rotate([0, -90, 90]) {
+ CleatBase();
for (m=[0,1]) {
mirror([m,0,0]) {
CleatHorn();
}
- mirror([m,0,0]) {
- CleatBase();
- }
}
}
}