Skip to main content
Known Participant
September 23, 2022
Answered

Script - Counting groups in a specific layer

  • September 23, 2022
  • 4 replies
  • 737 views

Hello everyone,

I have to count some groups in a specific layer. I would like to run a script which search in the layer called "VEI" to find all the groups with "PEH" et "PEV" included in order to count them by adding numbers.

 

Thank you
PM

 

This topic is closed to new replies. Start a new post to keep the conversation going.
Correct answer renél80416020

Bonjour Polotrobo,

Le texte en position 0 est modifié,selon la disposition en ligne de gauche à droite et du haut vers le bas...

 

// JavaScript Document for Illustrator
// INIT --------------------
var layerName = "VEY";
var Grp1Name = "PEH";
var Grp2Name = "PEV";
// -------------------------
function main () {
  var docRef = activeDocument;
  var lay = docRef.layers[layerName];
  var grps = [];
    for (var i = 0; i < lay.groupItems.length; i++) {
         grps.push(lay.groupItems[i]);
    }
     grps.reverse();
  var k = 1, grp, text, h, H;
     for (i = 0; i < grps.length; i++) {
        grp = grps[i];
             if ((grp.name == Grp1Name || grp.name == Grp2Name)&& grp.textFrames.length > 0) {
                text  = grp.textFrames[0];
                h = text.height;
                text.contents = text.contents+"\n"+k;
                H = text.height;
                text.translate(0,H-h);
                k++;
             }
     }
  }
if (app.documents.length) main();

 

René

4 replies

renél80416020
renél80416020Correct answer
Inspiring
September 25, 2022

Bonjour Polotrobo,

Le texte en position 0 est modifié,selon la disposition en ligne de gauche à droite et du haut vers le bas...

 

// JavaScript Document for Illustrator
// INIT --------------------
var layerName = "VEY";
var Grp1Name = "PEH";
var Grp2Name = "PEV";
// -------------------------
function main () {
  var docRef = activeDocument;
  var lay = docRef.layers[layerName];
  var grps = [];
    for (var i = 0; i < lay.groupItems.length; i++) {
         grps.push(lay.groupItems[i]);
    }
     grps.reverse();
  var k = 1, grp, text, h, H;
     for (i = 0; i < grps.length; i++) {
        grp = grps[i];
             if ((grp.name == Grp1Name || grp.name == Grp2Name)&& grp.textFrames.length > 0) {
                text  = grp.textFrames[0];
                h = text.height;
                text.contents = text.contents+"\n"+k;
                H = text.height;
                text.translate(0,H-h);
                k++;
             }
     }
  }
if (app.documents.length) main();

 

René

polotroboAuthor
Known Participant
September 26, 2022

Merci à vous pour vos réponses.

@rcraighead This script is useful bur unfortunately it only count the groups and does not add number to them..

@renél80416020  Merci pour cette solution mais lorsque je lance le script voilà ce que j'obtiens...

 J'effectue certainement mal votre script.

Encore merci,

PM

 

polotroboAuthor
Known Participant
September 26, 2022

EDIT: Merci beaucoup @renél80416020 il y avait juste une coquille le nom du layer n'est pas VEY mais VEI, une fois changé tout fonctionne parfaitement, encore merci c'est parfait !! 

rcraighead
Legend
September 23, 2022

This is hard-coded to search only for the group names you've given. It could be changed to be more dynamic:

 

function countGroups() {
    var aDoc = app.activeDocument;
    var myLayer = prompt('Set Layer', 'VEI');
    var ii = 0;

    for (i = 0; i < aDoc.layers[myLayer].groupItems.length; i++) {
        var myGroup = aDoc.layers[myLayer].groupItems[i];
        if (myGroup.name == 'PEH' || myGroup.name == 'PEV') {
            ii = ii + 1;
        }
    }
    alert(ii);
}
countGroups();

 

EDIT:
This version allows you to set the "Group" names within the script:

function countGroups() {
    var aDoc = app.activeDocument;
    var myLayer = prompt('Set Layer', 'VEI'),
    myGroup1 = prompt('Set Group1', 'PEH'),
    myGroup2 = prompt('Set Group1', 'PEV');
    var ii = 0;

    for (i = 0; i < aDoc.layers[myLayer].groupItems.length; i++) {
        var myGroup = aDoc.layers[myLayer].groupItems[i];
        if (myGroup.name == myGroup1 || myGroup.name == myGroup2) {
            ii = ii + 1;
        }
    }
    alert(ii);
}
countGroups();