Skip to content

Instantly share code, notes, and snippets.

@am
Last active December 12, 2018 20:57
Show Gist options
  • Save am/1283a10f23826a54d65ab2d74000dd1c to your computer and use it in GitHub Desktop.
Save am/1283a10f23826a54d65ab2d74000dd1c to your computer and use it in GitHub Desktop.

Revisions

  1. am revised this gist Dec 12, 2018. 1 changed file with 15 additions and 14 deletions.
    29 changes: 15 additions & 14 deletions layersToArtboards.jsx
    Original file line number Diff line number Diff line change
    @@ -13,26 +13,28 @@

    var columns = 20;
    var padding = 50;
    var doc = null;

    if (app.documents.length > 0) {
    doc = app.activeDocument;
    createArtboardPerLayer();
    } else {
    Window.alert('You must open at least one document.');
    }

    function createArtboardPerLayer(doc) {
    function createArtboardPerLayer() {
    const doc = app.activeDocument;
    var totalLayers = doc.layers.length;
    // hold a reference to the original artboard position and dimentions
    var rect = doc.artboards[0].artboardRect;
    var artboardWidth = rect[2] - rect[0];
    var artboardHeight = rect[3] - rect[1];
    const rect = doc.artboards[0].artboardRect;
    const artboardWidth = rect[2] - rect[0];
    const artboardHeight = rect[3] - rect[1];

    var layer, translateX, translateY, position, artboard, group = null;

    for (var i = 0; i < totalLayers; i++) {
    // reset selection
    doc.selection = null;

    var layer = doc.layers[i];
    layer = doc.layers[i];
    // skip hidden layers
    if (layer.visible === false) continue;

    @@ -42,22 +44,21 @@ function createArtboardPerLayer(doc) {
    layer.hasSelectedArtwork = true;

    // calculate translations
    var translateX = (artboardWidth * (i % columns)) + padding;
    var translateY = -(artboardHeight * Math.floor(i / columns)) - padding + 500;
    var translated = [
    translateX = ((artboardWidth + padding) * (i % columns));
    translateY = -((artboardHeight - padding) * Math.floor(i / columns)) - artboardHeight;
    position = [
    rect[0] + translateX,
    rect[1] - translateY,
    rect[2] + translateX,
    rect[3] - translateY
    ]
    // create a new artboard at the correct position
    var artboard = doc.artboards.add(translated);
    artboard = doc.artboards.add(position);
    // change the name based on the layer name
    artboard.name = layer.name;

    // translate selected layer
    var group = layer.groupItems[0];
    group = layer.groupItems[0];
    group.translate(translateX, -translateY);
    }
    }
    createArtboardPerLayer(doc);
    }
  2. am revised this gist Dec 12, 2018. 1 changed file with 0 additions and 2 deletions.
    2 changes: 0 additions & 2 deletions layersToArtboards.jsx
    Original file line number Diff line number Diff line change
    @@ -27,8 +27,6 @@ function createArtboardPerLayer(doc) {
    var rect = doc.artboards[0].artboardRect;
    var artboardWidth = rect[2] - rect[0];
    var artboardHeight = rect[3] - rect[1];
    alert(doc.activeView.bounds);
    return;

    for (var i = 0; i < totalLayers; i++) {
    // reset selection
  3. am created this gist Dec 12, 2018.
    65 changes: 65 additions & 0 deletions layersToArtboards.jsx
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,65 @@
    // based on https://github.com/michaelchaize/appliness/blob/master/Illustrator-create-artboards/CreateArtboardsLayers.jsx

    // Illustrator util to copy layers content to artboards

    // Each layer must contain one single group
    // It will name the artboard to match the layer name
    // For each 20 layers it creates a new row
    // Ensure the original artboard is placed in the top left corner

    // TODO: translate the original artboard on the top left corner
    // TODO: calculate the numbers of columns based on artboard dimensions and available width
    // TODO: group layer contents before translate and ungroup after

    var columns = 20;
    var padding = 50;
    var doc = null;

    if (app.documents.length > 0) {
    doc = app.activeDocument;
    } else {
    Window.alert('You must open at least one document.');
    }

    function createArtboardPerLayer(doc) {
    var totalLayers = doc.layers.length;
    // hold a reference to the original artboard position and dimentions
    var rect = doc.artboards[0].artboardRect;
    var artboardWidth = rect[2] - rect[0];
    var artboardHeight = rect[3] - rect[1];
    alert(doc.activeView.bounds);
    return;

    for (var i = 0; i < totalLayers; i++) {
    // reset selection
    doc.selection = null;

    var layer = doc.layers[i];
    // skip hidden layers
    if (layer.visible === false) continue;

    // unlock the layer
    layer.locked = false;
    // select elements on the layer
    layer.hasSelectedArtwork = true;

    // calculate translations
    var translateX = (artboardWidth * (i % columns)) + padding;
    var translateY = -(artboardHeight * Math.floor(i / columns)) - padding + 500;
    var translated = [
    rect[0] + translateX,
    rect[1] - translateY,
    rect[2] + translateX,
    rect[3] - translateY
    ]
    // create a new artboard at the correct position
    var artboard = doc.artboards.add(translated);
    // change the name based on the layer name
    artboard.name = layer.name;

    // translate selected layer
    var group = layer.groupItems[0];
    group.translate(translateX, -translateY);
    }
    }
    createArtboardPerLayer(doc);