chiark / gitweb /
quacks-ingredients: wip counts
[reprap-play.git] / quacks-ingredients-counts.scad
index 97503e3c002de0d9f282b7e1dc07f947b20b113e..1c33a55bcca6054dbb6d1da992cdb9dcc3fd8d32 100644 (file)
 module Black(){ ////toplevel
 // total=18, rowsz=5, nrows=4
   union(){
-    $ndots = 1;
-    translate(token_pitch * [  -2.5,  -2.0 ]) Token_L();
-    translate(token_pitch * [  -2.2,  -1.0 ]) Token_L();
-    translate(token_pitch * [  -2.0,   0.0 ]) Token_L();
-    translate(token_pitch * [  -1.8,   1.0 ]) Token_L();
-    translate(token_pitch * [  -1.5,  -2.0 ]) Token_L();
-    translate(token_pitch * [  -1.2,  -1.0 ]) Token_L();
-    translate(token_pitch * [  -1.0,   0.0 ]) Token_L();
-    translate(token_pitch * [  -0.8,   1.0 ]) Token_L();
-    translate(token_pitch * [  -0.5,  -2.0 ]) Token_L();
-    translate(token_pitch * [  -0.2,  -1.0 ]) Token_L();
-    translate(token_pitch * [   0.0,   0.0 ]) Token_L();
-    translate(token_pitch * [   0.2,   1.0 ]) Token_L();
-    translate(token_pitch * [   0.5,  -2.0 ]) Token_L();
-    translate(token_pitch * [   0.8,  -1.0 ]) Token_L();
-    translate(token_pitch * [   1.0,   0.0 ]) Token_L();
-    translate(token_pitch * [   1.2,   1.0 ]) Token_L();
-    translate(token_pitch * [   1.5,  -2.0 ]) Token_L();
-    translate(token_pitch * [   1.8,  -1.0 ]) Token_L();
-  };
-  union(){
-    $ndots = 2;
-  };
-  union(){
-    $ndots = 3;
-  };
-  union(){
-    $ndots = 4;
+    Frame($phase, token_pitch * [ 5 + 0.5, 4 ]);
+    $nspots = 1;
+    translate(token_pitch * [  -2.0,  -1.5 ]) Token_L();
+    translate(token_pitch * [  -2.0,  -0.5 ]) Token_L();
+    translate(token_pitch * [  -2.0,   0.5 ]) Token_L();
+    translate(token_pitch * [  -2.0,   1.5 ]) Token_L();
+    translate(token_pitch * [  -1.0,  -1.5 ]) Token_L();
+    translate(token_pitch * [  -1.0,  -0.5 ]) Token_L();
+    translate(token_pitch * [  -1.0,   0.5 ]) Token_L();
+    translate(token_pitch * [  -1.0,   1.5 ]) Token_L();
+    translate(token_pitch * [   0.0,  -1.5 ]) Token_L();
+    translate(token_pitch * [   0.0,  -0.5 ]) Token_L();
+    translate(token_pitch * [   0.0,   0.5 ]) Token_L();
+    translate(token_pitch * [   0.0,   1.5 ]) Token_L();
+    translate(token_pitch * [   1.0,  -1.5 ]) Token_L();
+    translate(token_pitch * [   1.0,  -0.5 ]) Token_L();
+    translate(token_pitch * [   1.0,   0.5 ]) Token_L();
+    translate(token_pitch * [   1.0,   1.5 ]) Token_L();
+    translate(token_pitch * [   2.0,  -1.5 ]) Token_L();
+    translate(token_pitch * [   2.0,  -0.5 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 5 + 0.5, 4 ]);
+    $nspots = 2;
+  };
+  union(){
+    Frame($phase, token_pitch * [ 5 + 0.5, 4 ]);
+    $nspots = 3;
+  };
+  union(){
+    Frame($phase, token_pitch * [ 5 + 0.5, 4 ]);
+    $nspots = 4;
   };
 }
 module Blue(){ ////toplevel
 // total=34, rowsz=6, nrows=6
   union(){
-    $ndots = 1;
-    translate(token_pitch * [  -3.0,  -3.0 ]) Token_L();
-    translate(token_pitch * [  -2.8,  -2.0 ]) Token_L();
-    translate(token_pitch * [  -2.7,  -1.0 ]) Token_L();
-    translate(token_pitch * [  -2.5,   0.0 ]) Token_L();
-    translate(token_pitch * [  -2.3,   1.0 ]) Token_L();
-    translate(token_pitch * [  -2.2,   2.0 ]) Token_L();
-    translate(token_pitch * [  -2.0,  -3.0 ]) Token_L();
-    translate(token_pitch * [  -1.8,  -2.0 ]) Token_L();
-    translate(token_pitch * [  -1.7,  -1.0 ]) Token_L();
-    translate(token_pitch * [  -1.5,   0.0 ]) Token_L();
-    translate(token_pitch * [  -1.3,   1.0 ]) Token_L();
-    translate(token_pitch * [  -1.2,   2.0 ]) Token_L();
-    translate(token_pitch * [  -1.0,  -3.0 ]) Token_L();
-    translate(token_pitch * [  -0.8,  -2.0 ]) Token_L();
-  };
-  union(){
-    $ndots = 2;
-    translate(token_pitch * [  -0.7,  -1.0 ]) Token_L();
-    translate(token_pitch * [  -0.5,   0.0 ]) Token_L();
-    translate(token_pitch * [  -0.3,   1.0 ]) Token_L();
-    translate(token_pitch * [  -0.2,   2.0 ]) Token_L();
-    translate(token_pitch * [   0.0,  -3.0 ]) Token_L();
-    translate(token_pitch * [   0.2,  -2.0 ]) Token_L();
-    translate(token_pitch * [   0.3,  -1.0 ]) Token_L();
-    translate(token_pitch * [   0.5,   0.0 ]) Token_L();
-    translate(token_pitch * [   0.7,   1.0 ]) Token_L();
-    translate(token_pitch * [   0.8,   2.0 ]) Token_L();
-  };
-  union(){
-    $ndots = 3;
-  };
-  union(){
-    $ndots = 4;
-    translate(token_pitch * [   1.0,  -3.0 ]) Token_L();
-    translate(token_pitch * [   1.2,  -2.0 ]) Token_L();
-    translate(token_pitch * [   1.3,  -1.0 ]) Token_L();
-    translate(token_pitch * [   1.5,   0.0 ]) Token_L();
-    translate(token_pitch * [   1.7,   1.0 ]) Token_L();
-    translate(token_pitch * [   1.8,   2.0 ]) Token_L();
-    translate(token_pitch * [   2.0,  -3.0 ]) Token_L();
-    translate(token_pitch * [   2.2,  -2.0 ]) Token_L();
-    translate(token_pitch * [   2.3,  -1.0 ]) Token_L();
-    translate(token_pitch * [   2.5,   0.0 ]) Token_L();
+    Frame($phase, token_pitch * [ 6 + 0.5, 6 ]);
+    $nspots = 1;
+    translate(token_pitch * [  -2.5,  -2.5 ]) Token_L();
+    translate(token_pitch * [  -2.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [  -2.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [  -2.5,   0.5 ]) Token_L();
+    translate(token_pitch * [  -2.5,   1.5 ]) Token_L();
+    translate(token_pitch * [  -2.5,   2.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,  -2.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,   0.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,   1.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,   2.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,  -2.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,  -1.5 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 6 + 0.5, 6 ]);
+    $nspots = 2;
+    translate(token_pitch * [  -0.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,   0.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,   1.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,   2.5 ]) Token_L();
+    translate(token_pitch * [   0.5,  -2.5 ]) Token_L();
+    translate(token_pitch * [   0.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [   0.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [   0.5,   0.5 ]) Token_L();
+    translate(token_pitch * [   0.5,   1.5 ]) Token_L();
+    translate(token_pitch * [   0.5,   2.5 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 6 + 0.5, 6 ]);
+    $nspots = 3;
+  };
+  union(){
+    Frame($phase, token_pitch * [ 6 + 0.5, 6 ]);
+    $nspots = 4;
+    translate(token_pitch * [   1.5,  -2.5 ]) Token_L();
+    translate(token_pitch * [   1.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [   1.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [   1.5,   0.5 ]) Token_L();
+    translate(token_pitch * [   1.5,   1.5 ]) Token_L();
+    translate(token_pitch * [   1.5,   2.5 ]) Token_L();
+    translate(token_pitch * [   2.5,  -2.5 ]) Token_L();
+    translate(token_pitch * [   2.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [   2.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [   2.5,   0.5 ]) Token_L();
   };
 }
 module Green(){ ////toplevel
 // total=38, rowsz=7, nrows=6
   union(){
-    $ndots = 1;
-    translate(token_pitch * [  -3.5,  -3.0 ]) Token_L();
-    translate(token_pitch * [  -3.3,  -2.0 ]) Token_L();
-    translate(token_pitch * [  -3.2,  -1.0 ]) Token_L();
-    translate(token_pitch * [  -3.0,   0.0 ]) Token_L();
-    translate(token_pitch * [  -2.8,   1.0 ]) Token_L();
-    translate(token_pitch * [  -2.7,   2.0 ]) Token_L();
-    translate(token_pitch * [  -2.5,  -3.0 ]) Token_L();
-    translate(token_pitch * [  -2.3,  -2.0 ]) Token_L();
-    translate(token_pitch * [  -2.2,  -1.0 ]) Token_L();
-    translate(token_pitch * [  -2.0,   0.0 ]) Token_L();
-    translate(token_pitch * [  -1.8,   1.0 ]) Token_L();
-    translate(token_pitch * [  -1.7,   2.0 ]) Token_L();
-    translate(token_pitch * [  -1.5,  -3.0 ]) Token_L();
-    translate(token_pitch * [  -1.3,  -2.0 ]) Token_L();
-    translate(token_pitch * [  -1.2,  -1.0 ]) Token_L();
-  };
-  union(){
-    $ndots = 2;
-    translate(token_pitch * [  -1.0,   0.0 ]) Token_L();
-    translate(token_pitch * [  -0.8,   1.0 ]) Token_L();
-    translate(token_pitch * [  -0.7,   2.0 ]) Token_L();
-    translate(token_pitch * [  -0.5,  -3.0 ]) Token_L();
-    translate(token_pitch * [  -0.3,  -2.0 ]) Token_L();
-    translate(token_pitch * [  -0.2,  -1.0 ]) Token_L();
-    translate(token_pitch * [   0.0,   0.0 ]) Token_L();
-    translate(token_pitch * [   0.2,   1.0 ]) Token_L();
-    translate(token_pitch * [   0.3,   2.0 ]) Token_L();
-    translate(token_pitch * [   0.5,  -3.0 ]) Token_L();
-  };
-  union(){
-    $ndots = 3;
-  };
-  union(){
-    $ndots = 4;
-    translate(token_pitch * [   0.7,  -2.0 ]) Token_L();
-    translate(token_pitch * [   0.8,  -1.0 ]) Token_L();
-    translate(token_pitch * [   1.0,   0.0 ]) Token_L();
-    translate(token_pitch * [   1.2,   1.0 ]) Token_L();
-    translate(token_pitch * [   1.3,   2.0 ]) Token_L();
-    translate(token_pitch * [   1.5,  -3.0 ]) Token_L();
-    translate(token_pitch * [   1.7,  -2.0 ]) Token_L();
-    translate(token_pitch * [   1.8,  -1.0 ]) Token_L();
-    translate(token_pitch * [   2.0,   0.0 ]) Token_L();
-    translate(token_pitch * [   2.2,   1.0 ]) Token_L();
-    translate(token_pitch * [   2.3,   2.0 ]) Token_L();
-    translate(token_pitch * [   2.5,  -3.0 ]) Token_L();
-    translate(token_pitch * [   2.7,  -2.0 ]) Token_L();
+    Frame($phase, token_pitch * [ 7 + 0.5, 6 ]);
+    $nspots = 1;
+    translate(token_pitch * [  -3.0,  -2.5 ]) Token_L();
+    translate(token_pitch * [  -3.0,  -1.5 ]) Token_L();
+    translate(token_pitch * [  -3.0,  -0.5 ]) Token_L();
+    translate(token_pitch * [  -3.0,   0.5 ]) Token_L();
+    translate(token_pitch * [  -3.0,   1.5 ]) Token_L();
+    translate(token_pitch * [  -3.0,   2.5 ]) Token_L();
+    translate(token_pitch * [  -2.0,  -2.5 ]) Token_L();
+    translate(token_pitch * [  -2.0,  -1.5 ]) Token_L();
+    translate(token_pitch * [  -2.0,  -0.5 ]) Token_L();
+    translate(token_pitch * [  -2.0,   0.5 ]) Token_L();
+    translate(token_pitch * [  -2.0,   1.5 ]) Token_L();
+    translate(token_pitch * [  -2.0,   2.5 ]) Token_L();
+    translate(token_pitch * [  -1.0,  -2.5 ]) Token_L();
+    translate(token_pitch * [  -1.0,  -1.5 ]) Token_L();
+    translate(token_pitch * [  -1.0,  -0.5 ]) Token_L();
   };
-}
-module Orange(){ ////toplevel
-// total=20, rowsz=5, nrows=4
   union(){
-    $ndots = 1;
-    translate(token_pitch * [  -2.5,  -2.0 ]) Token_L();
-    translate(token_pitch * [  -2.2,  -1.0 ]) Token_L();
-    translate(token_pitch * [  -2.0,   0.0 ]) Token_L();
-    translate(token_pitch * [  -1.8,   1.0 ]) Token_L();
-    translate(token_pitch * [  -1.5,  -2.0 ]) Token_L();
-    translate(token_pitch * [  -1.2,  -1.0 ]) Token_L();
-    translate(token_pitch * [  -1.0,   0.0 ]) Token_L();
-    translate(token_pitch * [  -0.8,   1.0 ]) Token_L();
-    translate(token_pitch * [  -0.5,  -2.0 ]) Token_L();
-    translate(token_pitch * [  -0.2,  -1.0 ]) Token_L();
-    translate(token_pitch * [   0.0,   0.0 ]) Token_L();
-    translate(token_pitch * [   0.2,   1.0 ]) Token_L();
-    translate(token_pitch * [   0.5,  -2.0 ]) Token_L();
-    translate(token_pitch * [   0.8,  -1.0 ]) Token_L();
-    translate(token_pitch * [   1.0,   0.0 ]) Token_L();
-    translate(token_pitch * [   1.2,   1.0 ]) Token_L();
-    translate(token_pitch * [   1.5,  -2.0 ]) Token_L();
-    translate(token_pitch * [   1.8,  -1.0 ]) Token_L();
-    translate(token_pitch * [   2.0,   0.0 ]) Token_L();
-    translate(token_pitch * [   2.2,   1.0 ]) Token_L();
+    Frame($phase, token_pitch * [ 7 + 0.5, 6 ]);
+    $nspots = 2;
+    translate(token_pitch * [  -1.0,   0.5 ]) Token_L();
+    translate(token_pitch * [  -1.0,   1.5 ]) Token_L();
+    translate(token_pitch * [  -1.0,   2.5 ]) Token_L();
+    translate(token_pitch * [   0.0,  -2.5 ]) Token_L();
+    translate(token_pitch * [   0.0,  -1.5 ]) Token_L();
+    translate(token_pitch * [   0.0,  -0.5 ]) Token_L();
+    translate(token_pitch * [   0.0,   0.5 ]) Token_L();
+    translate(token_pitch * [   0.0,   1.5 ]) Token_L();
+    translate(token_pitch * [   0.0,   2.5 ]) Token_L();
+    translate(token_pitch * [   1.0,  -2.5 ]) Token_L();
   };
   union(){
-    $ndots = 2;
+    Frame($phase, token_pitch * [ 7 + 0.5, 6 ]);
+    $nspots = 3;
   };
   union(){
-    $ndots = 3;
+    Frame($phase, token_pitch * [ 7 + 0.5, 6 ]);
+    $nspots = 4;
+    translate(token_pitch * [   1.0,  -1.5 ]) Token_L();
+    translate(token_pitch * [   1.0,  -0.5 ]) Token_L();
+    translate(token_pitch * [   1.0,   0.5 ]) Token_L();
+    translate(token_pitch * [   1.0,   1.5 ]) Token_L();
+    translate(token_pitch * [   1.0,   2.5 ]) Token_L();
+    translate(token_pitch * [   2.0,  -2.5 ]) Token_L();
+    translate(token_pitch * [   2.0,  -1.5 ]) Token_L();
+    translate(token_pitch * [   2.0,  -0.5 ]) Token_L();
+    translate(token_pitch * [   2.0,   0.5 ]) Token_L();
+    translate(token_pitch * [   2.0,   1.5 ]) Token_L();
+    translate(token_pitch * [   2.0,   2.5 ]) Token_L();
+    translate(token_pitch * [   3.0,  -2.5 ]) Token_L();
+    translate(token_pitch * [   3.0,  -1.5 ]) Token_L();
   };
+}
+module Orange(){ ////toplevel
+// total=20, rowsz=5, nrows=4
   union(){
-    $ndots = 4;
+    Frame($phase, token_pitch * [ 5 + 0.5, 4 ]);
+    $nspots = 1;
+    translate(token_pitch * [  -2.0,  -1.5 ]) Token_L();
+    translate(token_pitch * [  -2.0,  -0.5 ]) Token_L();
+    translate(token_pitch * [  -2.0,   0.5 ]) Token_L();
+    translate(token_pitch * [  -2.0,   1.5 ]) Token_L();
+    translate(token_pitch * [  -1.0,  -1.5 ]) Token_L();
+    translate(token_pitch * [  -1.0,  -0.5 ]) Token_L();
+    translate(token_pitch * [  -1.0,   0.5 ]) Token_L();
+    translate(token_pitch * [  -1.0,   1.5 ]) Token_L();
+    translate(token_pitch * [   0.0,  -1.5 ]) Token_L();
+    translate(token_pitch * [   0.0,  -0.5 ]) Token_L();
+    translate(token_pitch * [   0.0,   0.5 ]) Token_L();
+    translate(token_pitch * [   0.0,   1.5 ]) Token_L();
+    translate(token_pitch * [   1.0,  -1.5 ]) Token_L();
+    translate(token_pitch * [   1.0,  -0.5 ]) Token_L();
+    translate(token_pitch * [   1.0,   0.5 ]) Token_L();
+    translate(token_pitch * [   1.0,   1.5 ]) Token_L();
+    translate(token_pitch * [   2.0,  -1.5 ]) Token_L();
+    translate(token_pitch * [   2.0,  -0.5 ]) Token_L();
+    translate(token_pitch * [   2.0,   0.5 ]) Token_L();
+    translate(token_pitch * [   2.0,   1.5 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 5 + 0.5, 4 ]);
+    $nspots = 2;
+  };
+  union(){
+    Frame($phase, token_pitch * [ 5 + 0.5, 4 ]);
+    $nspots = 3;
+  };
+  union(){
+    Frame($phase, token_pitch * [ 5 + 0.5, 4 ]);
+    $nspots = 4;
   };
 }
 module Purple(){ ////toplevel
 // total=15, rowsz=4, nrows=4
   union(){
-    $ndots = 1;
-    translate(token_pitch * [  -2.0,  -2.0 ]) Token_L();
-    translate(token_pitch * [  -1.8,  -1.0 ]) Token_L();
-    translate(token_pitch * [  -1.5,   0.0 ]) Token_L();
-    translate(token_pitch * [  -1.2,   1.0 ]) Token_L();
-    translate(token_pitch * [  -1.0,  -2.0 ]) Token_L();
-    translate(token_pitch * [  -0.8,  -1.0 ]) Token_L();
-    translate(token_pitch * [  -0.5,   0.0 ]) Token_L();
-    translate(token_pitch * [  -0.2,   1.0 ]) Token_L();
-    translate(token_pitch * [   0.0,  -2.0 ]) Token_L();
-    translate(token_pitch * [   0.2,  -1.0 ]) Token_L();
-    translate(token_pitch * [   0.5,   0.0 ]) Token_L();
-    translate(token_pitch * [   0.8,   1.0 ]) Token_L();
-    translate(token_pitch * [   1.0,  -2.0 ]) Token_L();
-    translate(token_pitch * [   1.2,  -1.0 ]) Token_L();
-    translate(token_pitch * [   1.5,   0.0 ]) Token_L();
+    Frame($phase, token_pitch * [ 4 + 0.5, 4 ]);
+    $nspots = 1;
+    translate(token_pitch * [  -1.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,   0.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,   1.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,   0.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,   1.5 ]) Token_L();
+    translate(token_pitch * [   0.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [   0.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [   0.5,   0.5 ]) Token_L();
+    translate(token_pitch * [   0.5,   1.5 ]) Token_L();
+    translate(token_pitch * [   1.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [   1.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [   1.5,   0.5 ]) Token_L();
   };
   union(){
-    $ndots = 2;
+    Frame($phase, token_pitch * [ 4 + 0.5, 4 ]);
+    $nspots = 2;
   };
   union(){
-    $ndots = 3;
+    Frame($phase, token_pitch * [ 4 + 0.5, 4 ]);
+    $nspots = 3;
   };
   union(){
-    $ndots = 4;
+    Frame($phase, token_pitch * [ 4 + 0.5, 4 ]);
+    $nspots = 4;
   };
 }
 module Red(){ ////toplevel
 // total=30, rowsz=6, nrows=5
   union(){
-    $ndots = 1;
-    translate(token_pitch * [  -3.0,  -2.5 ]) Token_L();
-    translate(token_pitch * [  -2.8,  -1.5 ]) Token_L();
-    translate(token_pitch * [  -2.6,  -0.5 ]) Token_L();
-    translate(token_pitch * [  -2.4,   0.5 ]) Token_L();
-    translate(token_pitch * [  -2.2,   1.5 ]) Token_L();
-    translate(token_pitch * [  -2.0,  -2.5 ]) Token_L();
-    translate(token_pitch * [  -1.8,  -1.5 ]) Token_L();
-    translate(token_pitch * [  -1.6,  -0.5 ]) Token_L();
-    translate(token_pitch * [  -1.4,   0.5 ]) Token_L();
-    translate(token_pitch * [  -1.2,   1.5 ]) Token_L();
-    translate(token_pitch * [  -1.0,  -2.5 ]) Token_L();
-    translate(token_pitch * [  -0.8,  -1.5 ]) Token_L();
+    Frame($phase, token_pitch * [ 6 + 0.5, 5 ]);
+    $nspots = 1;
+    translate(token_pitch * [  -2.5,  -2.0 ]) Token_L();
+    translate(token_pitch * [  -2.5,  -1.0 ]) Token_L();
+    translate(token_pitch * [  -2.5,   0.0 ]) Token_L();
+    translate(token_pitch * [  -2.5,   1.0 ]) Token_L();
+    translate(token_pitch * [  -2.5,   2.0 ]) Token_L();
+    translate(token_pitch * [  -1.5,  -2.0 ]) Token_L();
+    translate(token_pitch * [  -1.5,  -1.0 ]) Token_L();
+    translate(token_pitch * [  -1.5,   0.0 ]) Token_L();
+    translate(token_pitch * [  -1.5,   1.0 ]) Token_L();
+    translate(token_pitch * [  -1.5,   2.0 ]) Token_L();
+    translate(token_pitch * [  -0.5,  -2.0 ]) Token_L();
+    translate(token_pitch * [  -0.5,  -1.0 ]) Token_L();
   };
   union(){
-    $ndots = 2;
-    translate(token_pitch * [  -0.6,  -0.5 ]) Token_L();
-    translate(token_pitch * [  -0.4,   0.5 ]) Token_L();
-    translate(token_pitch * [  -0.2,   1.5 ]) Token_L();
-    translate(token_pitch * [   0.0,  -2.5 ]) Token_L();
-    translate(token_pitch * [   0.2,  -1.5 ]) Token_L();
-    translate(token_pitch * [   0.4,  -0.5 ]) Token_L();
-    translate(token_pitch * [   0.6,   0.5 ]) Token_L();
-    translate(token_pitch * [   0.8,   1.5 ]) Token_L();
+    Frame($phase, token_pitch * [ 6 + 0.5, 5 ]);
+    $nspots = 2;
+    translate(token_pitch * [  -0.5,   0.0 ]) Token_L();
+    translate(token_pitch * [  -0.5,   1.0 ]) Token_L();
+    translate(token_pitch * [  -0.5,   2.0 ]) Token_L();
+    translate(token_pitch * [   0.5,  -2.0 ]) Token_L();
+    translate(token_pitch * [   0.5,  -1.0 ]) Token_L();
+    translate(token_pitch * [   0.5,   0.0 ]) Token_L();
+    translate(token_pitch * [   0.5,   1.0 ]) Token_L();
+    translate(token_pitch * [   0.5,   2.0 ]) Token_L();
   };
   union(){
-    $ndots = 3;
+    Frame($phase, token_pitch * [ 6 + 0.5, 5 ]);
+    $nspots = 3;
   };
   union(){
-    $ndots = 4;
-    translate(token_pitch * [   1.0,  -2.5 ]) Token_L();
-    translate(token_pitch * [   1.2,  -1.5 ]) Token_L();
-    translate(token_pitch * [   1.4,  -0.5 ]) Token_L();
-    translate(token_pitch * [   1.6,   0.5 ]) Token_L();
-    translate(token_pitch * [   1.8,   1.5 ]) Token_L();
-    translate(token_pitch * [   2.0,  -2.5 ]) Token_L();
-    translate(token_pitch * [   2.2,  -1.5 ]) Token_L();
-    translate(token_pitch * [   2.4,  -0.5 ]) Token_L();
-    translate(token_pitch * [   2.6,   0.5 ]) Token_L();
-    translate(token_pitch * [   2.8,   1.5 ]) Token_L();
+    Frame($phase, token_pitch * [ 6 + 0.5, 5 ]);
+    $nspots = 4;
+    translate(token_pitch * [   1.5,  -2.0 ]) Token_L();
+    translate(token_pitch * [   1.5,  -1.0 ]) Token_L();
+    translate(token_pitch * [   1.5,   0.0 ]) Token_L();
+    translate(token_pitch * [   1.5,   1.0 ]) Token_L();
+    translate(token_pitch * [   1.5,   2.0 ]) Token_L();
+    translate(token_pitch * [   2.5,  -2.0 ]) Token_L();
+    translate(token_pitch * [   2.5,  -1.0 ]) Token_L();
+    translate(token_pitch * [   2.5,   0.0 ]) Token_L();
+    translate(token_pitch * [   2.5,   1.0 ]) Token_L();
+    translate(token_pitch * [   2.5,   2.0 ]) Token_L();
   };
 }
 module White(){ ////toplevel
 // total=32, rowsz=6, nrows=6
   union(){
-    $ndots = 1;
-    translate(token_pitch * [  -3.0,  -3.0 ]) Token_L();
-    translate(token_pitch * [  -2.8,  -2.0 ]) Token_L();
-    translate(token_pitch * [  -2.7,  -1.0 ]) Token_L();
-    translate(token_pitch * [  -2.5,   0.0 ]) Token_L();
-    translate(token_pitch * [  -2.3,   1.0 ]) Token_L();
-    translate(token_pitch * [  -2.2,   2.0 ]) Token_L();
-    translate(token_pitch * [  -2.0,  -3.0 ]) Token_L();
-    translate(token_pitch * [  -1.8,  -2.0 ]) Token_L();
-    translate(token_pitch * [  -1.7,  -1.0 ]) Token_L();
-    translate(token_pitch * [  -1.5,   0.0 ]) Token_L();
-    translate(token_pitch * [  -1.3,   1.0 ]) Token_L();
-    translate(token_pitch * [  -1.2,   2.0 ]) Token_L();
-    translate(token_pitch * [  -1.0,  -3.0 ]) Token_L();
-    translate(token_pitch * [  -0.8,  -2.0 ]) Token_L();
-    translate(token_pitch * [  -0.7,  -1.0 ]) Token_L();
-    translate(token_pitch * [  -0.5,   0.0 ]) Token_L();
-    translate(token_pitch * [  -0.3,   1.0 ]) Token_L();
-    translate(token_pitch * [  -0.2,   2.0 ]) Token_L();
-    translate(token_pitch * [   0.0,  -3.0 ]) Token_L();
-    translate(token_pitch * [   0.2,  -2.0 ]) Token_L();
-  };
-  union(){
-    $ndots = 2;
-    translate(token_pitch * [   0.3,  -1.0 ]) Token_L();
-    translate(token_pitch * [   0.5,   0.0 ]) Token_L();
-    translate(token_pitch * [   0.7,   1.0 ]) Token_L();
-    translate(token_pitch * [   0.8,   2.0 ]) Token_L();
-    translate(token_pitch * [   1.0,  -3.0 ]) Token_L();
-    translate(token_pitch * [   1.2,  -2.0 ]) Token_L();
-    translate(token_pitch * [   1.3,  -1.0 ]) Token_L();
-    translate(token_pitch * [   1.5,   0.0 ]) Token_L();
-  };
-  union(){
-    $ndots = 3;
-    translate(token_pitch * [   1.7,   1.0 ]) Token_L();
-    translate(token_pitch * [   1.8,   2.0 ]) Token_L();
-    translate(token_pitch * [   2.0,  -3.0 ]) Token_L();
-    translate(token_pitch * [   2.2,  -2.0 ]) Token_L();
-  };
-  union(){
-    $ndots = 4;
+    Frame($phase, token_pitch * [ 6 + 0.5, 6 ]);
+    $nspots = 1;
+    translate(token_pitch * [  -2.5,  -2.5 ]) Token_L();
+    translate(token_pitch * [  -2.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [  -2.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [  -2.5,   0.5 ]) Token_L();
+    translate(token_pitch * [  -2.5,   1.5 ]) Token_L();
+    translate(token_pitch * [  -2.5,   2.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,  -2.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,   0.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,   1.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,   2.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,  -2.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,   0.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,   1.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,   2.5 ]) Token_L();
+    translate(token_pitch * [   0.5,  -2.5 ]) Token_L();
+    translate(token_pitch * [   0.5,  -1.5 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 6 + 0.5, 6 ]);
+    $nspots = 2;
+    translate(token_pitch * [   0.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [   0.5,   0.5 ]) Token_L();
+    translate(token_pitch * [   0.5,   1.5 ]) Token_L();
+    translate(token_pitch * [   0.5,   2.5 ]) Token_L();
+    translate(token_pitch * [   1.5,  -2.5 ]) Token_L();
+    translate(token_pitch * [   1.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [   1.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [   1.5,   0.5 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 6 + 0.5, 6 ]);
+    $nspots = 3;
+    translate(token_pitch * [   1.5,   1.5 ]) Token_L();
+    translate(token_pitch * [   1.5,   2.5 ]) Token_L();
+    translate(token_pitch * [   2.5,  -2.5 ]) Token_L();
+    translate(token_pitch * [   2.5,  -1.5 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 6 + 0.5, 6 ]);
+    $nspots = 4;
   };
 }
 module Yellow(){ ////toplevel
 // total=29, rowsz=6, nrows=5
   union(){
-    $ndots = 1;
-    translate(token_pitch * [  -3.0,  -2.5 ]) Token_L();
-    translate(token_pitch * [  -2.8,  -1.5 ]) Token_L();
-    translate(token_pitch * [  -2.6,  -0.5 ]) Token_L();
-    translate(token_pitch * [  -2.4,   0.5 ]) Token_L();
-    translate(token_pitch * [  -2.2,   1.5 ]) Token_L();
-    translate(token_pitch * [  -2.0,  -2.5 ]) Token_L();
-    translate(token_pitch * [  -1.8,  -1.5 ]) Token_L();
-    translate(token_pitch * [  -1.6,  -0.5 ]) Token_L();
-    translate(token_pitch * [  -1.4,   0.5 ]) Token_L();
-    translate(token_pitch * [  -1.2,   1.5 ]) Token_L();
-    translate(token_pitch * [  -1.0,  -2.5 ]) Token_L();
-    translate(token_pitch * [  -0.8,  -1.5 ]) Token_L();
-    translate(token_pitch * [  -0.6,  -0.5 ]) Token_L();
+    Frame($phase, token_pitch * [ 6 + 0.5, 5 ]);
+    $nspots = 1;
+    translate(token_pitch * [  -2.5,  -2.0 ]) Token_L();
+    translate(token_pitch * [  -2.5,  -1.0 ]) Token_L();
+    translate(token_pitch * [  -2.5,   0.0 ]) Token_L();
+    translate(token_pitch * [  -2.5,   1.0 ]) Token_L();
+    translate(token_pitch * [  -2.5,   2.0 ]) Token_L();
+    translate(token_pitch * [  -1.5,  -2.0 ]) Token_L();
+    translate(token_pitch * [  -1.5,  -1.0 ]) Token_L();
+    translate(token_pitch * [  -1.5,   0.0 ]) Token_L();
+    translate(token_pitch * [  -1.5,   1.0 ]) Token_L();
+    translate(token_pitch * [  -1.5,   2.0 ]) Token_L();
+    translate(token_pitch * [  -0.5,  -2.0 ]) Token_L();
+    translate(token_pitch * [  -0.5,  -1.0 ]) Token_L();
+    translate(token_pitch * [  -0.5,   0.0 ]) Token_L();
   };
   union(){
-    $ndots = 2;
-    translate(token_pitch * [  -0.4,   0.5 ]) Token_L();
-    translate(token_pitch * [  -0.2,   1.5 ]) Token_L();
-    translate(token_pitch * [   0.0,  -2.5 ]) Token_L();
-    translate(token_pitch * [   0.2,  -1.5 ]) Token_L();
-    translate(token_pitch * [   0.4,  -0.5 ]) Token_L();
-    translate(token_pitch * [   0.6,   0.5 ]) Token_L();
+    Frame($phase, token_pitch * [ 6 + 0.5, 5 ]);
+    $nspots = 2;
+    translate(token_pitch * [  -0.5,   1.0 ]) Token_L();
+    translate(token_pitch * [  -0.5,   2.0 ]) Token_L();
+    translate(token_pitch * [   0.5,  -2.0 ]) Token_L();
+    translate(token_pitch * [   0.5,  -1.0 ]) Token_L();
+    translate(token_pitch * [   0.5,   0.0 ]) Token_L();
+    translate(token_pitch * [   0.5,   1.0 ]) Token_L();
   };
   union(){
-    $ndots = 3;
+    Frame($phase, token_pitch * [ 6 + 0.5, 5 ]);
+    $nspots = 3;
   };
   union(){
-    $ndots = 4;
-    translate(token_pitch * [   0.8,   1.5 ]) Token_L();
-    translate(token_pitch * [   1.0,  -2.5 ]) Token_L();
-    translate(token_pitch * [   1.2,  -1.5 ]) Token_L();
-    translate(token_pitch * [   1.4,  -0.5 ]) Token_L();
-    translate(token_pitch * [   1.6,   0.5 ]) Token_L();
-    translate(token_pitch * [   1.8,   1.5 ]) Token_L();
-    translate(token_pitch * [   2.0,  -2.5 ]) Token_L();
-    translate(token_pitch * [   2.2,  -1.5 ]) Token_L();
-    translate(token_pitch * [   2.4,  -0.5 ]) Token_L();
-    translate(token_pitch * [   2.6,   0.5 ]) Token_L();
+    Frame($phase, token_pitch * [ 6 + 0.5, 5 ]);
+    $nspots = 4;
+    translate(token_pitch * [   0.5,   2.0 ]) Token_L();
+    translate(token_pitch * [   1.5,  -2.0 ]) Token_L();
+    translate(token_pitch * [   1.5,  -1.0 ]) Token_L();
+    translate(token_pitch * [   1.5,   0.0 ]) Token_L();
+    translate(token_pitch * [   1.5,   1.0 ]) Token_L();
+    translate(token_pitch * [   1.5,   2.0 ]) Token_L();
+    translate(token_pitch * [   2.5,  -2.0 ]) Token_L();
+    translate(token_pitch * [   2.5,  -1.0 ]) Token_L();
+    translate(token_pitch * [   2.5,   0.0 ]) Token_L();
+    translate(token_pitch * [   2.5,   1.0 ]) Token_L();
   };
 }