Je suis bloqué par un script qui détecte quel calque est visible dans un (sous-) calque (alias Group) avec le nom "Color".Photoshop Script - Récupère le nom du calque visible dans le groupe/calque
Le script ci-dessous recherche toutes les couches visibles et les sélectionne. Je ne peux pas le faire fonctionner pour faire la même chose SEULEMENT dans le jeu de couches mentionné.
Toute aide serait grandement appréciée!
#target photoshop
app.bringToFront();
main();
function main(){
if(!documents.length) return;
var Vis = getVisLayers();
deselectLayers();
for(var a in Vis){
selectLayerById(Number(Vis[a]),true);
}
}
function getVisLayers(){
var ref = new ActionReference();
ref.putEnumerated(charIDToTypeID('Dcmn'), charIDToTypeID('Ordn'), charIDToTypeID('Trgt'));
var count = executeActionGet(ref).getInteger(charIDToTypeID('NmbL')) +1;
var Names=[];
try{
activeDocument.backgroundLayer;
var i = 0; }catch(e){ var i = 1; };
for(i;i<count;i++){
if(i == 0) continue;
ref = new ActionReference();
ref.putIndex(charIDToTypeID('Lyr '), i);
var desc = executeActionGet(ref);
var layerName = desc.getString(charIDToTypeID('Nm '));
var Id = desc.getInteger(stringIDToTypeID('layerID'));
if(layerName.match(/^<\/Layer group/)) continue;
var layerType = typeIDToStringID(desc.getEnumerationValue(stringIDToTypeID('layerSection')));
var isLayerSet =(layerType == 'layerSectionContent') ? false:true;
var vis = desc.getBoolean(charIDToTypeID("Vsbl"));
if(!isLayerSet && vis) Names.push(Id);
};
return Names;
};
function selectLayerById(ID, add) {
add = (add == undefined) ? add = false : add;
var ref = new ActionReference();
ref.putIdentifier(charIDToTypeID('Lyr '), ID);
var desc = new ActionDescriptor();
desc.putReference(charIDToTypeID('null'), ref);
if (add) {
desc.putEnumerated(stringIDToTypeID('selectionModifier'), stringIDToTypeID('selectionModifierType'), stringIDToTypeID('addToSelection'));
}
desc.putBoolean(charIDToTypeID('MkVs'), false);
executeAction(charIDToTypeID('slct'), desc, DialogModes.NO);
}
function deselectLayers() {
var desc01 = new ActionDescriptor();
var ref01 = new ActionReference();
ref01.putEnumerated(charIDToTypeID('Lyr '), charIDToTypeID('Ordn'), charIDToTypeID('Trgt'));
desc01.putReference(charIDToTypeID('null'), ref01);
executeAction(stringIDToTypeID('selectNoLayers'), desc01, DialogModes.NO);
};
Merci beaucoup pour votre réponse. Bien que j'ai parcouru un long chemin avec mon script complet dans le besoin, je suis toujours un débutant dans les scripts PS et je ne suis pas sûr si je vous ai bien compris. Je n'ai pas besoin de déterminer si le groupe "couleurs" est visible, mais quelle couche à l'intérieur de ce groupe est visible. Disons que mon groupe est appelé "COULEURS" et à l'intérieur de ce groupe j'ai "Jaune", "Noir", "Orange" et ainsi de suite. Maintenant, il n'y a qu'un seul de ces calques visibles à la fois, j'exporte le fichier jpg et je dois savoir lequel et enregistrer le nom de la couleur dans le nom de fichier. – GTO
Boucle sur toutes les couches pour inclure des groupes. Si c'est une couche d'art - alors c'est probablement votre après - puis déterminez si elle est visible. J'ai ajusté le code plus loin pour aider. –
Merci encore @Ghoul Fool - Je suis toujours coincé après des heures de lecture et d'essayer de le faire fonctionner. J'ai été capable de sortir (alerter) tous les calques et groupes visibles, mais toujours de ne pas sortir le nom du calque visible dans le groupe "Couleurs" qui sort lui-même comme "1Couleurs". Je suis désolé de demander à nouveau et j'aimerais résoudre ceci par moi-même .... mais je devine que je suis stupide. – GTO