[AI CC-CC2022] (вероятно) небольшое редактирование скрипта

Ant-3

Участник
Топикстартер
Сообщения
81
Реакции
2
Доброго дня, уже давно пользуюсь данным скриптом, нашел на просторах форума адоби:


Код:
var n = prompt("", 8, "No. of items to randomly replace tiles:");
for (var i = app.selection.length - 1; i > n - 1; i--) {
    var pos = app.selection[i].position,
    w = app.selection[i].width,
    h = app.selection[i].height;
    app.selection[i].remove();
    var index = i%n;
    var duple = app.selection[index].duplicate(app.activeDocument, ElementPlacement.PLACEATEND);
    duple.position = pos;
    duple.width = w;
    duple.height = h;
}

С помощью данного скрипта можно осуществить замену нижних выделенных слоев на верхние выделенные слои (только нужно в выплывающем окне указывать какое количество слоев снизу нужно заменить на слои сверху, желательно чтобы их количество было одинаковым, иначе замена может проходить очень странно). Вопрос такой - а можно как-то сделать так, чтобы после работы скрипта все слои оставались на своих местах, просто они перемещаются на самый нижний слой (показал на видео)? В скрипте все устраивает, кроме этого. Как всегда - заранее благодарю форумчан.

 
То есть копия левого синего, должна остаться в иерархии слоев рядом с ним. И также копия правого синего должна остаться около него. Речь не про координаты? И удалять только верхние объекты, нижние оригинальные остаются, как сейчас скрипт делает?
 
То есть копия левого синего, должна остаться в иерархии слоев рядом с ним. И также копия правого синего должна остаться около него. Речь не про координаты? И удалять только верхние объекты, нижние оригинальные остаются, как сейчас скрипт делает?
фактически да, все тоже самое, что сейчас делает скрипт, только чтобы по итогу слои не оказывались в самом низу (в разделе слои в иллюстраторе), а оставались на том же месте, что и до начала работы скрипта
 
Когда из круглых скобок убираются аргументы/параметры команды дублирования, объекты дублируются по иерархии над исходным объектом.
JavaScript:
var sel = app.selection;
var n = prompt("", 8, "No. of items to randomly replace tiles:");
for (var i = sel.length - 1; i > n - 1; i--) {
    var pos = sel[i].position,
        w = sel[i].width,
        h = sel[i].height;
        sel[i].remove();
    var index = i % n;
    var duple = sel[index].duplicate();
    duple.position = pos;
    duple.width = w;
    duple.height = h;
}
 
  • Спасибо
Реакции: Chiga и Ant-3
благодарю, все работает как нужно, только через несколько использований у меня случился какой-то баг и скрипт начал работать вот так, даже после перезапуска иллюстратора. Может быть это у меня какая-то проблема, не знаю.
 
На видео не баг, все логично по новому коду скрипта. Путаница в формулировке задачи. Тебе надо не «на своих местах», а созданные копии по иерархии в панели слоев получать около нижнего объекта, который удаляется.

JavaScript:
var sel = app.selection;
var n = prompt("", 8, "No. of items to randomly replace tiles:");
for (var i = sel.length - 1; i > n - 1; i--) {
    var obj = sel[i];
    var pos = obj.position,
        w = obj.width,
        h = obj.height;
    var index = i % n;
    var duple = sel[index].duplicate();
    duple.move(obj, ElementPlacement.PLACEBEFORE);
    duple.position = pos;
    duple.width = w;
    duple.height = h;
    obj.remove();
}
 
Благодарю еще раз, теперь все работает как нужно) да, вероятно я действительно неточно объяснил, прошу извинить