Я сделал эту функцию , чтобы получить данные каждого слоя с эффектом Bevel and Emboss в пределах документ . Теперь я ищу способ сделать то же самое , но исключая определенную группу ( layerSet ).
function getLayersData()
{
var lyrs = [];
var layers = 1;
while (true)
{
ref = new ActionReference();
ref.putIndex(charIDToTypeID('Lyr '), layers);
try
{
var d1 = executeActionGet(ref);
var d2 = executeActionGet(ref);
var d3 = executeActionGet(ref);
var d4 = executeActionGet(ref);
}
catch (err)
{
break;
};
var c2t = function (s){return app.charIDToTypeID(s);};
var s2t = function (s){return app.stringIDToTypeID(s);};
var lyr = {};
lyr.type = d1.getInteger(s2t("layerKind"));
lyr.name = d1.getString(c2t("Nm "));
lyr.id = d1.getInteger(s2t("layerID"));
if (checkbox1.value == true)
{
ref.putEnumerated( c2t("Lyr "), c2t("Ordn"), c2t("Trgt") );
if (d1.hasKey(s2t('layerEffects')))
{
d1 = d1.getObjectValue(s2t('layerEffects'));
if (d1.hasKey(s2t('bevelEmboss')))
{
d1 = d1.getObjectValue(s2t('bevelEmboss'));
// etc
d2 = d1.getObjectValue(s2t('highlightColor'));
// etc
d3 = d1.getObjectValue(s2t('shadowColor'));
// etc
d4 = d1.getObjectValue(c2t('TrnS'));
// etc
lyrs.push(lyr);
};
};
}
else
{
lyrs.push(lyr);
};
layers++;
};
return lyrs;
};
Например, допустим, у нас естьпять групп с именами Group1, 2, 3, 4 и 5.
В каждой группе у нас есть четыре вектора с одинаковыми именами. "Форма 1", все они.
Я хочу перечислить все эти векторы "Формы 1", кроме тех, которые находятся в группе 5 !!!
Я нашел способ перечислить всеимена групп в другую функцию. Так что мне просто нужна эта функция, которую я показываю, чтобы проверить родительское имя для каждого слоя и если слой является дочерним для этой группы, которую нужно исключить !!!