Если есть вопросы по скриптам

  • Автор темы Автор темы Oleg Butrin
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
Ответ: Люди добрые подскажите

Skvoznyak - Спасибо огромно за подсказку
 
Ответ: Если есть вопросы по скриптам

А так не работает?
Код:
myPoligon.duplicate(app.activeDocument.pages[0]);
да.. работает. как оказалось у фунцкии duplicate несколько вариантов применения.
или задать координаты, или задать страницу и координаты. или просто страницу..
myPoligon.duplicate(app.activeDocument.pages[0],[1,1]);
 
Ответ: Если есть вопросы по скриптам

у фунцкии duplicate несколько вариантов применения.
Более того — для разных объектов эти варианты разные. В объектной модели они все даны.
 
Ответ: Если есть вопросы по скриптам

Здравствуйте. подскажите пожалуста можно ли создать сценарий который будет запускать на исполнение другие сценарии. Просто столкнулся с такой ситуацией когда надо запустить только часть сценария. Поэтому решил для себя может проще создать несколько сценариев которые будут выполнять конкретные действия и вызывать их кликом по одному "главному сценарию"
Ну скажем у меня будет 10 сценариев. надо вызвать 8, 6, 4 и 2 в одном случае а вдругом случае 9, 10, 5, 6, 3.
Чтобы мне не кликать по ним всем в таком порядке а сделать еще один сценарий для одной комбинации сценариев, а другой сценарий для другой комбинации.
 
Ответ: Если есть вопросы по скриптам

вопрос: а вот интересно можно ли подлючать бибилиотеки к indesign. к примеру для работы с почтой итд?
 
Ответ: Если есть вопросы по скриптам

Извиняюсь, но оч нужно получить ответ на пару нубских вопросов :) :

Первый: Как вставить пустой параграф заданного стиля подобным методом:

Код:
myImg = myFrame.insertionPoints[-1].contents = "\r";

Где нужно прикрутить стиль который уже имеется в документе?

И второй вопрос: как узнать сколько строк в параграфе? или его высоту в каких-нибудь единицах измерения
 
Ответ: Если есть вопросы по скриптам

Код:
myFrame.insertionPoints[-1].appliedParagraphStyle = "имя_стиля";
myFrame.insertionPoints[-1].contents = "\r";
Код:
var numOfLines = myParagraph.lines.length;
 
Ответ: Если есть вопросы по скриптам

Спасибо за оперативный ответ! Но есть проблема - при этом также меняется стиль предшествуещего параграфа, который был найден Grep-ом и используется как точка вставки.

Может я не правильно подхожу к своей задаче: мне нужно вставить пустой абзац под найденным Grep-ом стилем абзаца (заголовок), для вставки в него инлайн-картинки. Стиль ему тут нужен для того чтобы у картинки не было отбивок, как у заголовка.
 
Ответ: Если есть вопросы по скриптам

при этом также меняется стиль предшествуещего параграфа
А, точно, что-то не подумал...
Т.е. myFrame - это в данном случае текст стилем Заголовок. Сходу напрашивается решение через два грепа: первым грепом добавить символ конца абзаца к найденному тексту (т.е. получить пустую строку того же стиля, что и заголовок); вторым найти эти пустые строки:
Код:
(?<=\r)\r
и поменять стиль.
 
Ответ: Если есть вопросы по скриптам

Спасибо! Но переставил ваши строки, и поправил немного запрос в Grep и заработала подобная конструкция:
Код:
app.findGrepPreferences.appliedParagraphStyle = "podzag";
app.findGrepPreferences.findWhat = "(?<=^)(".+\r)";
var found_zags = myDocument.findGrep();
var myFrame = found_zags[0];
myFrame.insertionPoints[-1].contents = "\r";
myFrame.insertionPoints[-1].appliedParagraphStyle = "img";
var myRec = myFrame.insertionPoints[-1].rectangles.add();
 
Ответ: Если есть вопросы по скриптам

Новый нубский вопрос:

Как сделать чтобы индизайн не создавал undo на каждое действие скрипта?

Делаю скрипт, который обрабатывает большое количество информации. Хотелось бы его ускорить. В свой скрипт встроил частично скрипт по созданию алфавитного указателя из символьного стиля. При переносе кода увидел, что если опустить эту его часть:

Код:
    if (app.documents.length > 0 && parseInt (app.version) > 4)
    {
    if (parseInt (app.version) > 5)
        app.doScript ("mark_character_styles ()", undefined, undefined, UndoModes.fastEntireScript);
    else
        mark_character_styles ();
    }

... то скрипт работает в 10 раз медленней оригинала, и по его завершении индизайн может повиснуть и работает крайне медленно. В примере, undo отменено для функции. Как сделать чтобы индизайн не создавал undo на каждое действие моего скрипта, в котором куча функционала и диалогов и т.п.?
 
Ответ: Если есть вопросы по скриптам

ну так запакуй весь код своего скрипта в одну функцию и вызови ее:
Код:
app.doScript (main, undefined, undefined, UndoModes.fastEntireScript);
function main(){
<...>
}
 
Ответ: Если есть вопросы по скриптам

Эх жаль что app.activeScriptUndoMode только для чтения. Ваше решение работает, только если в скрипте нет функций запускающихся по клику на кнопку - внутри них по дефолту история пишется.
 
Ответ: Если есть вопросы по скриптам

В процессе отладки скрипта проще взять для себя за правило перед запуском скрипта сохраняться; тогда после завершения достаточно сделать File/Revert - и отменять 50 действий не надо. Или пользоваться скриптом UndoJump - своего рода аналогом панели History в Photoshop.
 
Ответ: Если есть вопросы по скриптам

Я сохраняюсь, тут фишка в другом, если отключить протоколирование истории - гораздо быстрее работает скрипт, в частности если генерировать алфавитник на 1000 записей!
 
Ответ: Если есть вопросы по скриптам


Не по теме:
если отключить протоколирование истории - гораздо быстрее работает скрипт
Точно, недоглядел о чем речь, извините)).


Предлагаю посмотреть еще эту тему. Там, кроме отключения истории, было еще пару интересных советов по ускорению, возможно, они Вам помогут.
 
Ответ: Если есть вопросы по скриптам

Подскажите пожалуйста выход из проблемной ситуации, суть ее в следующем:
1. Я знаю некий номер абзаца paraNumber, в котором стоит инлайн-картинка и символ абзаца
2. Я хочу добавить после абзаца paraNumber пустой абзац, чтобы в него вставить еще одну инлайн-картинку
3. При использовании данного кода, абзац ниже добавляется, но стирается картинка
Код:
myStory.paragraphs.item(paraNumber).contents = myStory.paragraphs.item(paraNumber).contents+"\r";
4. Нужно добавить абзац именно ПОСЛЕ того номера который мне известен, причем это может быть в цикле друг за другом: ставится инлайн-картинка, добавляется строка в нее следующая и так n-раз

Существует ли способ добавить абзац другим образом? Или как сделать чтобы картинка не удалялась?
 
Ответ: Если есть вопросы по скриптам

А если цеплять не весь абзац, а только последний его символ?
Код:
myStory.paragraphs.item(paraNumber)[B].characters[-1][/B].contents += "\r";
 
Ответ: Если есть вопросы по скриптам

Ура! Заработало... спасибо!
 
Статус
Закрыто для дальнейших ответов.