chiark / gitweb /
fairphone-case: make catch catchier
[reprap-play.git] / cable-splice-clamp.scad
index c23c9367563383aa174adc6f4f827aa609449160..f71c848756b259723e6fcb078acf912114ec9a5f 100644 (file)
@@ -2,7 +2,7 @@
 
 include <commitid.scad>
 
-rnom = 9;
+rnom = 3.5 / 2;
 
 // alpha is slope angle, which is half of inner concave angle that
 //  wire sits in
@@ -13,9 +13,15 @@ alpha = 40; // degrees
 mu = 1/4;
 
 // wall thickness, and base width as fraction of cable size
-wall_r = 1.5 / 6.5;
+wall_r = 2.5 / 6.5;
 base_r = 0.75;
 
+total_len = 60;
+
+strap_width = 3.0 + 0.5;
+
+strap_count = 4;
+
 // for cross-section calculations:
 //
 // origin O is at intersection of straight line segments forming walls
@@ -54,24 +60,35 @@ y_B_r = -dy_OB_r;
 x_T_r =         sina;
 y_T_r = -tana * sina;
 
-top_r = wall_r - (d_OC_r - 1);
+wall_x_r = wall_r / tan(90-alpha);
 
-echo(r0,r1, "ratio",r1/r0);
+top = wall_r * r1 - (d_OC_r - 1) * r0;
+basew = base_r * rnom;
 
-module CrossSection(plus=0) {
+echo("dias", r0*2, r1*2, "ratio",r1/r0);
+
+module CrossSectionHalf(plus=0) {
   difference(){
-    polygon([[-0.1,                         y_T_r * r0],
-            [x_T_r * r0,                   y_T_r * r0],
-            [x_B_r * r1,                   y_B_r * r1],
-            [x_B_r * r1 + wall_r * rnom,   y_B_r * r1],
-            [base_r * rnom,                top_r * rnom],
-            [-0.1,                         top_r * rnom]]);
+    polygon([[-0.1,                                y_T_r * r0],
+            [x_T_r * r0,                          y_T_r * r0],
+            [x_B_r * r1,                          y_B_r * r1],
+            [x_B_r * r1 + wall_x_r * rnom + plus, y_B_r * r1],
+            [basew                        + plus, top],
+            [-0.1,                                top]]);
     translate([0, -d_OC_r * r0])
       circle(r = r0);
   }
 }
 
+module CrossSection(plus=0) {
+  for (m=[0,1]) {
+    mirror([m,0])
+      CrossSectionHalf(plus);
+  }
+}
+
 module CrossSectionDemo(){ ////toplevel
+  color("black") CrossSection(2);
   CrossSection();
   for (rc=[["red", r1],
           ["blue",r0]]) {
@@ -79,5 +96,43 @@ module CrossSectionDemo(){ ////toplevel
   }
 }
 
+strap_wall_h = 1.5;
+strap_wall_l = 2.0;
+
+writing_dx = total_len / 3;
+writing_dy = basew*2;
+
+module HalfClamp(){ ////toplevel
+  difference(){
+    rotate([90,0,0])rotate([0,90,0]){
+      linear_extrude(height=total_len)
+       CrossSection();
+
+      for (i=[0 : strap_count]){
+       if (i*2 != strap_count) {
+         translate([0, 0,
+                    total_len * (i + 0.5) / (strap_count + 1)])
+           for (m=[0,1]){
+             mirror([0,0,m])
+               translate([0,0, strap_width/2])
+               linear_extrude(height=strap_wall_l)
+               CrossSection(strap_wall_h);
+           }
+       }
+      }
+    }
+
+    translate([0, -basew, top])
+      Commitid_BestCount([writing_dx, writing_dy]);
+  }
+}
+
+module HalfClampPrint(){ ////toplevel
+  rotate([180,0,0])
+    HalfClamp();
+}
+
 //CrossSection();
-CrossSectionDemo();
+//CrossSectionDemo();
+//HalfClamp();
+HalfClampPrint();