[ID CS4-CS6] Скрипт отделения объектов страницы-шаблона

densen

Топикстартер
15 лет на форуме
Сообщения
753
Реакции
642
Есть скрипт override_selection 0.3, который я чуть упростил под свои задачи, но мне не хватает знаний довести его до нужного мне идеала.
Имею бюджет 400 рублей.

Вот этот код выполняет отделение выделенных (selected) объектов страницы-шаблона на всех страницах, к которым применен этот шаблон.
JavaScript:
with (app.activeDocument) {
    for (var i = 0; i < pages.length; i++) {
    if (pages[i].appliedMaster === app.layoutWindows[0].activeSpread) {
        var my_masterPageItem = pages[i].masterPageItems;
        for (var ii = my_masterPageItem.length; ii >= 0; ii--) {
            for (var iii = 0; iii < selection.length; iii++) {
                if (my_masterPageItem[ii] === selection[iii]) {
                    my_masterPageItem[ii].override(pages[i]);
    }}}}}}

Мне нужно, чтобы отделение двух объектов мастер-страницы на всех страницах, к которым применен данных шаблон, происходило без необходимости их выделять. Полагаю, что "опознать" их как нужные объекты можно по Script Label или по Object ID - тут не мне решать, как будет удобнее и проще.
Осложняется это тем, что объектам присвоены гиперссылки, и после отсоединения от шаблона порядок следования гиперссылок в панели Hyperlinks должен быть последовательным и соответствовать порядку следования страниц (как на скриншоте). Вышеприведенный скрипт делает именно так. Очень важно не нарушить эту особенность.

Hyperlinks.png


Скрипт и файл idml в архиве.
Прошу не отказать в помощи! 'alil'
 

Вложения

  • Override_selection_script_pack.zip
    41 КБ · Просм.: 124
Последнее редактирование:

Drawer

Участник
Сообщения
1 803
Реакции
796
если
Очень важно не нарушить эту особенность.
и
Вышеприведенный скрипт делает именно так.
то
можно по Script Label
выделить и в цикле отвязать...
Это нужно?
JavaScript:
with (app.activeDocument) {
/*     for (var i = 0; i < pages.length; i++) {
       
    } */
for (var idx = 0; idx < document.allPageItems.length; idx++)
  {
    var pageItem = document.allPageItems[idx];
    if (pageItem.label == "sel")
    {
      pageItem.select();
    }
 
    for (var i = 0; i < pages.length; i++) {
    if (pages[i].appliedMaster === app.layoutWindows[0].activeSpread) {
        var my_masterPageItem = pages[i].masterPageItems;
        for (var ii = my_masterPageItem.length; ii >= 0; ii--) {
            for (var iii = 0; iii < selection.length; iii++) {
                if (my_masterPageItem[ii] === selection[iii]) {
                    my_masterPageItem[ii].override(pages[i]);
    }}}}}}}
Можно и без выделения... быстрее будет. В массив и перебрать массив без выделения объектов, отвязать их...
 

Вложения

  • CS6_file_ScriptLabel.zip
    407.5 КБ · Просм.: 125
Последнее редактирование:
  • Спасибо
Реакции: densen

densen

Топикстартер
15 лет на форуме
Сообщения
753
Реакции
642
Можно и без выделения... быстрее будет. В массив и перебрать массив без выделения объектов, отвязать их...
Через Script label решил, значит... Отвязывается без выделения, но порядок нарушается. В списке ссылок сначала идут все ссылки, расположенные на левых страницах, а потом на правых, а нужно, чтобы по порядку следования страниц. И перебор, конечно, долгий по всему документу. :(
 

Drawer

Участник
Сообщения
1 803
Реакции
796
В списке ссылок сначала идут все ссылки, расположенные на левых страницах, а потом на правых
а так?
JavaScript:
with (app.activeDocument) {
/*     for (var i = 0; i < pages.length; i++) {
       
    } */
app.select(NothingEnum.NOTHING);
for (var idx = 0; idx < document.allPageItems.length; idx++)
  {
    var pageItem = document.allPageItems[idx];
    if (pageItem.label == "sel")
    {
      pageItem.select(SelectionOptions.ADD_TO);
    }
  }
    for (var i = 0; i < pages.length; i++) {
    if (pages[i].appliedMaster === app.layoutWindows[0].activeSpread) {
        var my_masterPageItem = pages[i].masterPageItems;
        for (var ii = my_masterPageItem.length; ii >= 0; ii--) {
            for (var iii = 0; iii < selection.length; iii++) {
                if (my_masterPageItem[ii] === selection[iii]) {
                    my_masterPageItem[ii].override(pages[i]);
    }}}}}}
 
  • Спасибо
Реакции: densen

Drawer

Участник
Сообщения
1 803
Реакции
796

Gadalka

R.I.P.
Сообщения
2 530
Реакции
868
нет кнопки поддержать форум?