chiark / gitweb /
scaffold-clamp: wip
[reprap-play.git] / scaffold-clamp.scad
index 730dfaf905ff10cc95ac409706772d8ac1a8db89..0c2f35f7b8c14533474217d7e9b900300ab0c6b7 100644 (file)
@@ -6,7 +6,7 @@ tube_dia = 48.3;
 
 th = 7;
 
-pin_gap = 1.0; // around
+pin_gap = 1.5; // around
 
 smooth_r = 10;
 
@@ -15,11 +15,17 @@ bolt_flat = 10 + 1;
 
 open_gap = 10;
 
+hinge_unit = 10;
+hinge_units = 4;
+hinge_z_gap = 1;
+
 // calculated
 
 pin_dia = th;
 hole_dia = th + pin_gap;
 
+hinge_gap = pin_gap;
+
 hinge_o_r = 0.5 * hole_dia + th;
 
 hinge_x = -0.5 * tube_dia - hinge_o_r;
@@ -28,10 +34,13 @@ max_x = bolt_x + max(0.5 + bolt_dia + th, 0.5 * bolt_flat/2);
 
 flats_y = open_gap/2 + th;
 
+stride_z = hinge_unit*2 + hinge_z_gap*2;
+total_z = hinge_units * stride_z - hinge_z_gap;
+
 $fa = 3;
 $fs = 0.1;
 
-module Plan() {
+module MainPlan() {
   difference(){
     offset(r=-smooth_r) offset(delta=smooth_r)
       union(){
@@ -43,7 +52,49 @@ module Plan() {
     circle(r = tube_dia/2);
     rectfromto([0,       -open_gap/2],
               [max_x+1, +open_gap/2]);
+    translate([hinge_x, 0]) circle(r= hole_dia/2);
+  }
+}
+
+module Portion(d=0) {
+  translate([hinge_x, 0]) circle(r= hinge_o_r + d);
+  rectfromto([hinge_x*2, 0],
+            [max_x+10, -(tube_dia/2+th+10)]);
+}
+
+module MainPlanA(){
+  intersection(){
+    MainPlan();
+    Portion(0);
+  }
+}
+
+module MainPlanB(){
+  difference(){
+    MainPlan();
+    Portion(hinge_gap);
+  }
+}
+
+module HalfClamp(){
+  linextr(0, total_z) mirror([0,1]) MainPlanB();
+  for (i=[0 : hinge_units-1]) {
+    translate([0,0, stride_z*i])
+      linextr(0, hinge_unit) MainPlanA();
+  }
+}
+
+module PlanDemo(){
+  MainPlan();
+  translate([0,0,-4]) color("red") Portion(1);
+  translate([0,0,-2]) color("grey") Portion(0);
+
+  translate([0, tube_dia*1.5]) {
+    MainPlanB();
+    MainPlanA();
   }
+//  translate([max_x - hinge_x + 20, 0]) color("blue") MainPlanA();
 }
 
-Plan();
+//PlanDemo();
+HalfClamp();