chiark / gitweb /
scaffold-clamp-cleat: wip, reorg nfc
[reprap-play.git] / scaffold-clamp-common.scad
index d2640b6a9a08ef3e8b75c0467896634de7a9da05..cc5bad153206ffca5fdb94c8685e9bcd2de9dff8 100644 (file)
@@ -28,6 +28,15 @@ bolt_gap = 1.0; // total, on both sides
 
 vhook_th = 14;
 
+// ---------- cleat ----------
+
+cleat_frames = 10;
+cleat_curve_r = 200;
+cleat_horn_l = 60;
+cleat_horn_d_min = [8, 10];
+cleat_horn_d_max = [10, 12];
+cleat_height = 25;
+
 // ---------- hhook ----------
 
 hhook_inside = 40;
@@ -43,6 +52,8 @@ pin_tail = pin_hole_dia + pin_head_th + hinge_z_gap*3;
 
 // ========== calculated ==========
 
+TAU = PI*2;
+
 hole_dia = th + pin_gap;
 
 bolt_hole_r = (bolt_dia + bolt_gap)/2;
@@ -236,6 +247,47 @@ module VHookPlanDemo(){
     }
 }
 
+// ---------- cleat ----------
+
+function cleat_frame_theta(s) = s * cleat_horn_l / 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 +
+                             cleat_horn_d_max * (1-s) ) * 0.5;
+
+module CleatFrame(s) {
+  r = cleat_frame_r(s);
+  translate([cleat_frame_x(s), 0, cleat_frame_z(s)])
+    rotate([0, 90, 0])
+    scale([1, r[1]/r[0]])
+    sphere(r= r[0]);
+}
+
+
+module CleatHorn(){
+  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
+  %DummyA();
+
+  translate([0, -(main_r + cleat_height), 0]) {
+    rotate([0, -90, 90]) {
+      for (m=[0,1]) {
+       mirror([m,0,0])
+         CleatHorn();
+      }
+    }
+  }
+}
+
 // ---------- hhook ----------
 
 module HHookHookPlan(){