chiark / gitweb /
sewing-table: introduce R_EDGE (nfc)
[reprap-play.git] / sewing-table.scad.m4
index 1c0842d734b1c6df0a4134de1fa555723e911c4d..1edc2b7bb8e4f69e16119454a6a93aeeb6ca8c5b 100644 (file)
@@ -143,6 +143,8 @@ module RoundEdge(left_cnr, right_cnr) {
 }
 
 module RoundCornerCut(ci) {
+  // ci should be [this_cnr, right_cnr]
+  // where right_cnr is to the right (ie, anticlockwise)
   this_cnr = ci[0];
   right_cnr = ci[1];
   offr= round_cnr_rad - round_edge_rad;
@@ -258,6 +260,7 @@ module TestPiece1(){ ////toplevel
            [   0, 0]
            ];
   corners = TestPiece_holes2corners(holes);
+  rcs = [corners[0], corners[1]];
   difference(){
     union(){
       TileBase(corners[0], corners[2]);
@@ -266,9 +269,9 @@ module TestPiece1(){ ////toplevel
       RoundEdge(corners[3], corners[0]);
     }
     InterlockEdge(corners[1], corners[2], 1, nlobes=1);
-    RoundCornerCut(corners[0], corners[1]);
+    RoundCornerCut(rcs);
   }
-  RoundCornerAdd(corners[0], corners[1]);
+  RoundCornerAdd(rcs);
 }
 
 module TestPiece2(){ ////toplevel
@@ -291,6 +294,8 @@ module TestDemo(){ ////toplevel
 }
   
 function Rectangle_corners(c0, sz) =
+  // returns the corners of a rectangle from c0 to c0+sz
+  // if sz is positive, the corners are anticlockwise starting with c0
   [ c0 + [ 0,     0     ],
     c0 + [ sz[0], 0     ],
     c0 + [ sz[0], sz[1] ],
@@ -302,6 +307,13 @@ function Rectangle_corners2posts(c) =
     c[2] + thehd_bl,
     c[3] + thehd_br ];
 
+m4_dnl   R_EDGE(c,ix)
+m4_dnl        c is from Rectangle_corners and
+m4_dnl        ix is a corner number
+m4_dnl    expands to two comma-separated corners:
+m4_dnl    that denoted by ix, and the next one anticlockwise
+m4_define(`R_EDGE',`$1[$2],$1[(($2)+1)%4]')
+
 module Tile02(){ ////toplevel
   sz = [100,170];
   c0 = -sz;
@@ -312,11 +324,11 @@ module Tile02(){ ////toplevel
     union(){
       TileBase(c[0], c[2]);
       Posts(posts);
-      RoundEdge(c[0], c[1]);
-      RoundEdge(c[3], c[0]);
-      InterlockEdge(c[2], c[3], 0);
+      RoundEdge(R_EDGE(c,0));
+      RoundEdge(R_EDGE(c,3));
+      InterlockEdge(R_EDGE(c,2), 0);
     }
-    InterlockEdge(c[1], c[2], 1);
+    InterlockEdge(R_EDGE(c,1), 1);
     RoundCornerCut(rcs);
   }
   RoundCornerAdd(rcs);
@@ -327,15 +339,15 @@ module Tile12(){ ////toplevel
   c0 = [-sz[0], 0];
   c = Rectangle_corners(c0, sz);
   posts = Rectangle_corners2posts(c);
-  rcs = [c[2], c[3]];
+  rcs = [c[3], c[0]];
   difference(){
     union(){
       TileBase(c[0], c[2]);
-      RoundEdge(c[2], c[3]);
-      RoundEdge(c[3], c[0]);
+      RoundEdge(R_EDGE(c,2));
+      RoundEdge(R_EDGE(c,3));
       Posts(posts);
     }
-    InterlockEdge(c[0], c[1], 1);
+    InterlockEdge(R_EDGE(c,0), 1);
     RoundCornerCut(rcs);
   }
   RoundCornerAdd(rcs);