[ID CC-CC2022] Поиск фрейма по размерам

  • Автор темы Автор темы Slx1
  • Дата начала Дата начала
Фрейм, отлепленный от мастера, сохраняет связь с исходным, в том числе и обновление форматирования.
Вот такая магия.
Объектные стили, к сожалению, не обновляются. Сохраняются те, что были до отвязки - но становятся с плюсиком. То есть поиском их не найти.
По крайней мере, у меня в CS 5.5 так. Не знаю, как в более свежих версиях ИД.
 
2018 нет, но там, в 2018, появился размер в стиле объекта, может и в поиске появился…
 
А вот если на мастере у этих фреймов изменить заливку, то она должна поменяться и у отвязанных фреймов (правда, только у тех, которые после отвязки не были покрашены принудительно). И искать тогда можно по цвету фрейма.
Но вот те фреймы, которые изначально на мастере не были, конечно, при этом охвачены не будут.
 
Коллеги, покумекали тут))

Хотелки упрощаются(надеюсь):
Выделаем фрейм, ищем во всем докуметне с такиме же размерами — переносим все найденное на новый слой (назвав его элегантно размерами нашего фрейма :))

Можно такое в скрипте осуществить?
 
Коллеги, покумекали тут))

Можно такое в скрипте осуществить?

Код:
var sourceDoc = app.activeDocument;


var gb = app.activeDocument.selection[0].geometricBounds;

var selection = [];

var width = gb[3] - gb[1];
var height = gb[2] - gb[0];


 try {
// Создаем слой
    var myLayer = sourceDoc.layers.add({name: width + "-" + height});
  } catch (error) {
// Если уже есть - его и пользуем
    var myLayer = sourceDoc.layers.item(width + "-" + height)
  }

var pagesCount = sourceDoc.pages.length;

for(var i = 0; i < pagesCount; i++)
        {
        sourceDoc.pages[i].pageItems.everyItem().select();
        var selection = app.activeDocument.selection;  
   
            for(var j = 0; j < selection.length; j++)
            {
                var Obj = selection[j].geometricBounds;
                var W = Obj[3] - Obj[1]
                var H = Obj[2] - Obj[0]
                if (W == width && H == height) {
                    selection[j].move(myLayer);
                }
            }
           
        }
   
        exit();
 
  • Спасибо
Реакции: LeonidB и Slx1
если нужна заплатка для проверки выделен ли изначально объект - в самом начале допишите что-то типа

Код:
with (app) {
  if (selection.length == 0) {
    alert ("Ничего не выделено");
    exit();
    }
  }
 
  • Спасибо
Реакции: LeonidB и Slx1
Супер, огромное спасибо!!
 
Работает только для тех фреймов, которые были отвязаны от шаблона. Фреймы на шаблонных страницах (и на обычных, но не отвязанные от шаблона) остаются в старом слое.
а разве не это было "хотелкой" ТС? '8]
в любом случае "я не волшебник, а только учусь", а если что - дык и поровнять наверное скрипт по ходу можно. ;]=
 
  • Спасибо
Реакции: Slx1
а разве не это было "хотелкой" ТС? '8]
в любом случае "я не волшебник, а только учусь", а если что - дык и поровнять наверное скрипт по ходу можно. ;]=

Ну в принципе, мне так и было нужно!))
Еще раз спасибо!
 
а разве не это было "хотелкой" ТС? '8]
Не, я про "вообще" :) Уж если все объекты заданного размера переносить на отдельный слой, то и на шаблонах тоже бы хорошо. Потому что на некоторых полосах они могут быть отвязаны, на некоторых - нет.
 
Так я ж на то и намекаю... ;]]

нужно добавить перед -
Код:
sourceDoc.pages[i].pageItems.everyItem().select();

строку
Код:
app.menuActions.item("Override All Master Page Items").invoke();

Но оно будет отрывать все элементы от мастера. На сколько это актуально я не знаю.
В принципе, можно спрашивать скриптом про это, но в ТЗ такого небыло! ;]=
 
  • Спасибо
Реакции: LeonidB
Не, я про "вообще" :) Уж если все объекты заданного размера переносить на отдельный слой, то и на шаблонах тоже бы хорошо. Потому что на некоторых полосах они могут быть отвязаны, на некоторых - нет.
Тут есть свои подводные камни. Далеко не факт, что элементы с мастера имеет смысл перетягивать на новый слой, который может оказаться поверх более важного.
Ну например колонцифры с мастера, которые изначально были перекрыты например картинкой, что было задумано и правильно, могу оказаться НА картинке, что уже нихт гуд.
 
  • Спасибо
Реакции: LeonidB
Тут есть свои подводные камни. Далеко не факт, что элементы с мастера имеет смысл перетягивать на новый слой, который может оказаться поверх более важного.
Так ведь можно этот новый слой поместить рядом со старым, далеко его не утаскивать :)
 
  • Спасибо
Реакции: LeonidB