ArrangeLayers-macro
Arranges all unlinked layers and linked layers having units percent-of-linked-layer into a specified number of rows and columns. Sets units of all layers to percent-of-page.
Assumes that the CheckMargins macro is executed just prior to its execution. Will not add layers to pad out up to (number of rows)*(number of columns) layers.
Def ArrangeLayers { x = 100 - Left - Right - (%2-1)*xGap; x/=%2; // calculate width in % of page y = 100 - Top - Bottom - (%1-1)*yGap; y/=%1;// calculate height in % of page if (x < 5 || y < 5) { ty -b "Resulting layers are too small, operation aborted!"; break 1; }; k = 0; for (i = 1; i <= %1; i+=1) { // loop for %1 rows of layers for (j = 1; j <= %2; j+=1) { // loop for %2 columns of layers for (k+=1;k <=page.nlayers;k+=1) { // loop through all layers in page #!k=; layer -s k; if (layer.link == 0 || layer.unit != 7) break; // select unlinked layers }; // or linked layers having units // % of linked layer layer -u 1; if (%2==1) { // if only 1 column layer x y [Left+(j-1)*(x+xGap)] [Top+(%1-i)*(y+yGap)]; } else { // if more than 1 column layer x y [Left+(j-1)*(x+xGap)] [Top+(i-1)*(y+yGap)]; }; // end else }; // end columns for loop }; // end rows loop }; // end def
This script arranges 12 unlinked layers in the active graph window into 4 rows and 3 columns. Note, again that CheckMargins must be run just before running ArrangeLayers.
CheckMargins; ArrangeLayers 4 3;