[AI CC-CC2021] Удалить слои и подслои с определенным именем во всем документе

phot

Участник
Топикстартер
Сообщения
4
Реакции
0
Добрый день, подскажите как удалить слой с именем, в моем случае "meb" (а точнее с именем "meb_и_что_угодно_посленего", т.е. у меня там куча копий еще с именем "meb копия 2" )

такой код
PHP:
app.activeDocument.layers.getByName("meb").remove();

удаляет только самые верхние слои, а мне надо что бы и в подслоях и в подподслоях, везде короче они могут быть)
Буду благодарен хотя бы за посыл в ман где перебор мне нужный есть. Спасибо)
 

qsedftghk

фея
15 лет на форуме
Сообщения
2 032
Реакции
1 198
Может так как-то? Естественно, если в слое "meb_и_что_угодно_посленего" что-то есть, оно грохается вместе с ним.
ЗЫ. Особо не тестил, всё-таки 3 часа ночи, да и вообще лень ;)

Код:
for(var i=app.activeDocument.layers.length - 1; i >= 0; i--)
{
  searchi(app.activeDocument.layers[i]);
}
redraw();

function searchi(p)
{
   var layerName = new String( p.name );
   if ( layerName.indexOf("meb") != -1 ) { p.remove();}
     else
     {
       for(var j=p.layers.length - 1; j >= 0; j--)
        {
         searchi(p.layers[j]);
        }
     }
}
 
  • Спасибо
Реакции: phot

phot

Участник
Топикстартер
Сообщения
4
Реакции
0
Да конечно, все содержимое удаляется тоже.
Спасибо, но не срабатывает, ошибка. отладить знаний не хватает пока что)
 

Вложения

  • Adobe Illustrator 2018-07-19 07.05.44.png
    Adobe Illustrator 2018-07-19 07.05.44.png
    9.4 КБ · Просм.: 289

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 188
Реакции
10 844
Кэп подсказывает, что для того чтоб вытащить перед удалением спрятанный слой на свет б-жий, надо перед p.remove() добавить p.hidden=false;
 
  • Спасибо
Реакции: phot

phot

Участник
Топикстартер
Сообщения
4
Реакции
0
Я делал все видимым все равно ругало.
Проверил в другом документе все круто работает. спасибо. наверно проблема где-то в документе рабочем, либо спрятаны либо залочены

Спасибо, добавил в код так.
Код:
 if ( layerName.indexOf("meb") != -1 ) { p.hidden=false; p.remove();}
но все равно то же самое

есть какоенить супер удаление, которое удаляет не глядя на видимость?)
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 188
Реакции
10 844
Можно еще добавить p.locked=false;
 
  • Спасибо
Реакции: phot

phot

Участник
Топикстартер
Сообщения
4
Реакции
0
Ребят спасибо большое, еще раз все расхайдил и получилось. в скрипте анхайд почему-то не помогает, наверно из-за иерархии, ну т.е. если мама схайдена то дети не будут расхайдены.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 188
Реакции
10 844
Ну если вам не важно сохранять скрытость слоев то можно просто все открыть начиная с родительских. Для этого строка p.hidden=false; должна стоять первой командой функции searchi
 
  • Спасибо
Реакции: phot