[AI CC-CC2022] Странное выделение

  • Автор темы Автор темы hhandy
  • Дата начала Дата начала

hhandy

Участник
Топикстартер
Сообщения
38
Реакции
0
Доброго дня!
Выделяю все на заданном слое активного артборда. Там группа из N элементов (pathItem). При первом обращении все норм, возвращается 1 элемент groupItem. При повторном - N элементов pathItem. В чем проблема?

Код:
function layerAndArtboardSelect (lay, ind) {
app.activeDocument.selection = null;
app.activeDocument.artboards.setActiveArtboardIndex(ind)
app.activeDocument.selectObjectsOnActiveArtboard();
var sel = app.activeDocument.selection;
var sel1 = [];
for (var i = sel.length - 1; i >= 0; i--) {
    if ( sel[i].layer.name == lay ) {
        sel1[sel1.length] = sel[i];
    };
};
alert (sel1);
return sel1;
};

function main () {

var doc = app.activeDocument;
var targetLayerName = 'Layer 0';
var index = doc.artboards.getActiveArtboardIndex();

var select = layerAndArtboardSelect (targetLayerName, index);
      select = layerAndArtboardSelect (targetLayerName, index);
app.activeDocument.selection = null;
}

main ();
 
А почему нельзя заменить эту ужасную функцию двумя строками
1) Выделить все на активном артборде
2) Вернуть selection
Ну и на всякий случай между ними redraw() вставить
 
  • Спасибо
Реакции: hhandy
Надо выделить все на активном артборде и заданном слое (targetLayerName)
 
Ну и на всякий случай между ними redraw() вставить
Помогло, касати!
Спасибо, вставил в функцию, заработало как надо.
Можно пару слов про то, что за зверь Redraw и когда желательно использовать?
 
Это костыль, который сделали индусы, им надо пинать код, когда он начинает глючить. Других действий у него нет. То есть, если у вас код по всем понятиям правильный, но работает криво и непредсказуемо - просто вставляйте как можно больше redraw() между строками - есть нехилые шансы что начнет работать стабильно
 
  • Спасибо
Реакции: hhandy