chiark / gitweb /
filamentclip wip
[reprap-play.git] / cliphook.scad
index 86a76babb0df4075f39f5f0f76e3026fd369eef2..826d0d754554d34bf3f91a9f527e39b7d0edffef 100644 (file)
@@ -7,6 +7,29 @@ function ClipHook_xe(w,g,l,ye,k) =
        sqrt(pow( ClipHook_r3(w,g,l,ye,k),      2) -
             pow( ClipHook_yd(w,g,l,ye,k) - ye, 2));
 
+module FlatArc(cx,cy,r1,r2,a1,a2=361,$fn=$fn) {
+  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);
   r3 =  ClipHook_r3(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);
@@ -66,4 +67,4 @@ module ClipHook(w=1.2, g=0.2, l=0.0, ye=0, k=2.0, h=3.5, demo=false) {
       translate([l+w,0,0]) rotate(180) ClipHook_2D(w,g,l,ye,k);
 }
 
-ClipHook(l=3, ye=1.5, k=1, demo=true);
+//ClipHook(l=3, ye=1.5, k=1, demo=true);