chiark / gitweb /
cliphook wip - break out FlatArc
[reprap-play.git] / cliphook.scad
index 87787d82fb31bf665273e251bdb33e2f40a3e091..b1bc988cad02a049bdef0e2361528fc008739e6f 100644 (file)
@@ -5,7 +5,30 @@ function ClipHook_yd(w,g,l,ye,k) = g/2 + w + g + w/2 - ClipHook_r3(w,g,l,ye,k);
 function ClipHook_xe(w,g,l,ye,k) =
         l*1.5 + w +
        sqrt(pow( ClipHook_r3(w,g,l,ye,k),      2) -
-            pow( ClipHook_yd(w,g,l,ye,k) + ye, 2));
+            pow( ClipHook_yd(w,g,l,ye,k) - ye, 2));
+
+module FlatArc(cx,cy,r1,r2,a1,a2=360) {
+  astep = (a2-a1)/6;
+  size = 5*(r2/2);
+  translate([cx,cy,0]) {
+    intersection() {
+      difference() {
+       circle(r=r2);
+       translate([0,0,-1])
+         circle(r=r1, h=h+2);
+      }
+      scale(size) {
+       for (ai=[0:4]) {
+         echo(" jarc ", a1,a2, astep, ai, a1 + astep*ai );
+         rotate(a1 + astep*ai) {
+           polygon([ [0,0], [1,0],
+                     [cos(astep*2),sin(astep*2)] ]);
+         }
+       }
+      }
+    }
+  }
+}
 
 module ClipHook_2D(w,g,l,ye,k,h) {
   r2 =  ClipHook_r2(w,g,l,ye,k);
@@ -26,29 +49,7 @@ module ClipHook_2D(w,g,l,ye,k,h) {
 
   module jcirc(x,y) { translate([x,y,0]) circle(r=w/2); }
   module jbox(y,x1,x2) { translate([x1,y-w/2,0]) square(size=[x2-x1, w]); }
-  module jarc(cx,cy,r,a1=0,a2=360) {
-    astep = (a2-a1)/6;
-    size = 5*(r+w/2);
-    translate([cx,cy,0]) {
-      intersection() {
-       difference() {
-               circle(r=r+w/2);
-               translate([0,0,-1])
-                       circle(r=r-w/2, h=h+2);
-       }
-       scale(size) {
-         for (ai=[0:4]) {
-           echo(" jarc ", a1,a2, astep, ai, a1 + astep*ai );
-           rotate(a1 + astep*ai) {
-             polygon([ [0,0], [1,0],
-                       [cos(astep*2),sin(astep*2)] ]);
-           }
-         }
-       }
-      }
-    }
-  }
-
+  module jarc(cx,cy,r,a1=0,a2=360) { FlatArc(cx,cy,r-w/2,r+w/2,a1,a2); }
 
   jcirc(-xc, -yc);
   jbox(-yc, xc, -xc);