chiark / gitweb /
filamentspool: ArmEnd nondove commitid
[reprap-play.git] / cable-splice-clamp.scad
index 851b5f615f257f8718d1250ce53cdd546b1b7aba..35d8be143ade70e29e1ca07c08de9a16c46c3124 100644 (file)
@@ -1,5 +1,7 @@
 // -*- C -*-
 
+include <commitid.scad>
+
 cable_maxdia = 12;
 cable_mindia = 6;
 strap_width = 4 + 0.5;
@@ -16,11 +18,18 @@ delta_ellipse = 0.45;
 
 // calculated
 
-outerdia = cable_maxdia / cos(30) + wallmin*2;
 delta_shift = 1 - delta_ellipse;
 
+roundoff_rad = cable_maxdia/2 * sqrt(delta_shift)
+             + cable_mindia/2 * (1-sqrt(delta_shift));
+
+outerdia = 2*(roundoff_rad / cos(30) + wallmin);
+
 delta_shift_gap = (cable_maxdia-cable_mindia) * delta_shift;
 
+writing_dx = outerdia * sin(30);
+writing_dz = total_len / 3;
+
 module CrossSection(plus=0) {
   difference(){
     for (dx = [-plus, 0, plus])
@@ -31,9 +40,7 @@ module CrossSection(plus=0) {
       scale([cable_maxdia,
             cable_maxdia * delta_shift + cable_mindia * delta_ellipse])
        circle(r= sqrt(0.5) * delta_shift + 0.5 * delta_ellipse, $fn=4);
-      circle(r= cable_maxdia/2 * sqrt(delta_shift)
-             + cable_mindia/2 * (1-sqrt(delta_shift)),
-            $fn=20);
+      circle(r= roundoff_rad, $fn=20);
     }
 
     square(center=true, [40, delta_shift_gap]);
@@ -59,22 +66,46 @@ module CrossSectionDemo(){ ////toplevel
 }
 
 module CompleteClamp(){ ////toplevel
-  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);
+  difference(){
+    union(){
+      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);
+           }
        }
+      }
+    }
+
+    for (my = [0,1]) {
+      mirror([0,my,0])
+       translate([-writing_dx/2,
+                  cos(30) * outerdia/2,
+                  (total_len - writing_dz)/2])
+       rotate([90,0,0])
+       Commitid_BestCount([writing_dx, writing_dz]);
+    }
+  }
+}
+
+module HalfPrint(){ ////toplevel
+  rotate([0,180,0]){
+    intersection(){
+      rotate([-90,0,-90])
+       CompleteClamp();
+      translate([-100,-100,0]) cube([1000,200,200]);
     }
   }
 }
 
-CrossSectionDemo();
+//CrossSectionDemo();
 //CompleteClamp();
+HalfPrint();