• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

Script making list from layer names.

Explorer ,
Jul 17, 2016 Jul 17, 2016

Copy link to clipboard

Copied

I wonder if someone could help me to make simple script wich take layer's names and making list from them on A4 canvas.

Now i just doing screenshot of illustrator list and modifying it via photoshop to print, but it is too small, because each ai file has about 25 - 50 layers.

Looks like that:

layer-list.jpg

I tryed to modify John Wundes script, wich renders list of swatches, but it seems to hard for my skill.

/////////////////////////////////////////////////////////////////

// Render Swatch Legend v1.1 -- CS, CS2, CS3, CS4, CS5

//>=--------------------------------------

//

//  This script will generate a legend of rectangles for every swatch in the main swatches palette.

//  You can configure spacing and value display by configuring the variables at the top

//  of the script.

//   update: v1.1 now tests color brightness and renders a white label if the color is dark.

//>=--------------------------------------

// JS code (c) copyright: John Wundes ( john@wundes.com ) www.wundes.com

// copyright full text here:  http://www.wundes.com/js4ai/copyright.txt

//

//////////////////////////////////////////////////////////////////

    doc = activeDocument,

    swatches = doc.swatches,

    cols = 4,

    displayAs = "CMYKColor",  //or "RGBColor"

    rectRef=null,

    textRectRef=null,

    textRef=null,

    rgbColor=null,

    w=150;

    h=100,

    h_pad = 10,

    v_pad = 10,

    t_h_pad = 10,

    t_v_pad = 10,

    x=null,

    y=null,

    black = new GrayColor(),

    white = new GrayColor()

    ;

    black.gray = 100;

    white.gray = 0;

activeDocument.layers[0].locked= false;

var newGroup = doc.groupItems.add();

newGroup.name = "NewGroup";

newGroup.move( doc, ElementPlacement.PLACEATBEGINNING );

for(var c=0,len=swatches.length;c<len;c++)

{

        var swatchGroup = doc.groupItems.add();

        swatchGroup.name = swatches.name;

      

        x= (w+h_pad)*(c% cols);

        y=(h+v_pad)*(Math.floor((c+.01)/cols))*-1 ;

        rectRef = doc.pathItems.rectangle(y,x, w,h);

        rgbColor = swatches.color;

        rectRef.fillColor = rgbColor;

        textRectRef =  doc.pathItems.rectangle(y- t_v_pad,x+ t_h_pad, w-(2*t_h_pad),h-(2*t_v_pad));

        textRef = doc.textFrames.areaText(textRectRef);

        textRef.contents = swatches.name+ "\r" + getColorValues(swatches.color) ;

        textRef.textRange.fillColor = is_dark(swatches.color)? white : black;

        //

        rectRef.move( swatchGroup, ElementPlacement.PLACEATBEGINNING );    

        textRef.move( swatchGroup, ElementPlacement.PLACEATBEGINNING );

        swatchGroup.move( newGroup, ElementPlacement.PLACEATEND );

}

function getColorValues(color)

{

        if(color.typename)

        {

            switch(color.typename)

            {

                case "CMYKColor":

                    if(displayAs == "CMYKColor"){

                        return ([Math.floor(color.cyan),Math.floor(color.magenta),Math.floor(color.yellow),Math.floor(color.black)]);}

                    else

                    {

                        color.typename="RGBColor";

                        return  [Math.floor(color.red),Math.floor(color.green),Math.floor(color.blue)] ;

                      

                    }

                case "RGBColor":

                  

                   if(displayAs == "CMYKColor"){

                        return rgb2cmyk(Math.floor(color.red),Math.floor(color.green),Math.floor(color.blue));

                   }else

                    {

                        return  [Math.floor(color.red),Math.floor(color.green),Math.floor(color.blue)] ;

                    }

                case "GrayColor":

                    if(displayAs == "CMYKColor"){

                        return rgb2cmyk(Math.floor(color.gray),Math.floor(color.gray),Math.floor(color.gray));

                    }else{

                        return [Math.floor(color.gray),Math.floor(color.gray),Math.floor(color.gray)];

                    }

                case "SpotColor":

                    return getColorValues(color.spot.color);

            }   

        }

    return "Non Standard Color Type";

}

function rgb2cmyk (r,g,b) {

var computedC = 0;

var computedM = 0;

var computedY = 0;

var computedK = 0;

//remove spaces from input RGB values, convert to int

var r = parseInt( (''+r).replace(/\s/g,''),10 );

var g = parseInt( (''+g).replace(/\s/g,''),10 );

var b = parseInt( (''+b).replace(/\s/g,''),10 );

if ( r==null || g==null || b==null ||

     isNaN(r) || isNaN(g)|| isNaN(b) )

{

   alert ('Please enter numeric RGB values!');

   return;

}

if (r<0 || g<0 || b<0 || r>255 || g>255 || b>255) {

   alert ('RGB values must be in the range 0 to 255.');

   return;

}

// BLACK

if (r==0 && g==0 && b==0) {

  computedK = 1;

  return [0,0,0,1];

}

computedC = 1 - (r/255);

computedM = 1 - (g/255);

computedY = 1 - (b/255);

var minCMY = Math.min(computedC,

              Math.min(computedM,computedY));

computedC = (computedC - minCMY) / (1 - minCMY) ;

computedM = (computedM - minCMY) / (1 - minCMY) ;

computedY = (computedY - minCMY) / (1 - minCMY) ;

computedK = minCMY;

return [Math.floor(computedC*100),Math.floor(computedM*100),Math.floor(computedY*100),Math.floor(computedK*100)];

}

function is_dark(color){

       if(color.typename)

        {

            switch(color.typename)

            {

                case "CMYKColor":

                    return (color.black>50 || (color.cyan>50 &&  color.magenta>50)) ? true : false;

                case "RGBColor":

                    return (color.red<100  && color.green<100 ) ? true : false;

                case "GrayColor":

                    return color.gray > 50 ? true : false;

                case "SpotColor":

                    return is_dark(color.spot.color);

               

                return false;

            }

        }

}

TOPICS
Scripting

Views

748

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Community Expert , Jul 17, 2016 Jul 17, 2016

arop16461101​,

something like this?

var theLayers = app.activeDocument.layers;

var str = new Array ();

for (i = 0; i < theLayers.length; i++) {

    str.push (theLayers.name)

    }

var tF = theLayers[0].textFrames.add();

tF.contents = str.join ("\r");

alert("new text frame with layerlist added on layer " + theLayers[0].name);

Have fun

Votes

Translate

Translate
Adobe
Community Expert ,
Jul 17, 2016 Jul 17, 2016

Copy link to clipboard

Copied

arop16461101​,

something like this?

var theLayers = app.activeDocument.layers;

var str = new Array ();

for (i = 0; i < theLayers.length; i++) {

    str.push (theLayers.name)

    }

var tF = theLayers[0].textFrames.add();

tF.contents = str.join ("\r");

alert("new text frame with layerlist added on layer " + theLayers[0].name);

Have fun

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Jul 31, 2016 Jul 31, 2016

Copy link to clipboard

Copied

LATEST

Thanks! It works!

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines