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

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

А кто-нить может подсказать строчку, как выделить фрейм по его ID?
Никак "не попаду" в нужный синтаксис.
 
Ответ: Если есть вопросы по скриптам

Узнал, что вот так:
Код:
MyInd.Select myPage.PageItems.ItemByID(Item)
 
Ответ: Если есть вопросы по скриптам

А еще. Кто-нить может подсказать, как получить ссылку на содержимое фрейма, который я определил по выделенному в данный момент:
Код:
var myDoc = app.documents.item(0);
var MyFrame = app.selection
а внутри этого "выделенного" сидит табличка, которую и надо курочить, а как на нее выйти, не могу понять (отвалился ESTK - виснет при попытке открыть в нем скриптик).

подскажите, плз, если кому не тяжко.
 
Кто-нить подскажет, как создать тень?

Есть:
Код:
Set MyInd = SetMyInd
Set mObj = MyInd.Selection
осталось к mObj приделать тень. Кто-то подскажет? (хотя народ тут не особо "подсказочный" :E] ).
 
Ответ: Кто-нить подскажет, как создать тень?

Жаль, что вы не умеете (или не хотите) читать. Выход есть - вам надо найти человека с хорошей дикцией, который будет вам читать reference вслух. Тогда больше не придется здесь мусорить, задавая подобные вопросы...
 
Вопрос: скорость поиска/замены?

Я верстаю всеми любимую тв-программу. Не просто тв-программа одним стилем. Есть основной стиль тв-программы, названия фильмов отдельным стилем, сериалы тоже отдельным, описания фильмов и сериалов еще другим и описание передач тоже другой стиль. Я сделал скрипт, который вычисляет в тексте тв-программы названия фильмов или сериалов и по комманде записывает их в два текстовых файла под названием "TekstFilmi.txt" и "TekstSeriali.txt" соответсвенно. Эти файлы служат базой данных из названий. Так вот названий фильмов уже набралось примерно 1300 штук. При обработке всего лишь одного канала одного дня тв-программы, т.е. одного текстового фрейма уходит уже не меньше 10 сек. Вроде бы несложная операция, а уже вон как задумывается. Просто это стало критично, т.к. тв-программу ставят 3 человека и текстовых фреймов на каждом развороте по 40 штук. А разворотов больше 14. И каждый фрейм обрабатывается отдельно: вошел во фрейм, выделил все символы (Ctrl+A) и запускается скрипт. Пользуюсь "var soderzhimoe_freyma = app.selection[0].contents; //присвоение переменной soderzhimoe_freyma выделенного текста". Пока каждый вот так вот по 10 сек. посидит подождет друг друга... Я не знаю как сделать так, чтобы можно было выделить все фреймы и все они уже обрабатывались сами поочереди. Пробовал, не получается, всё что не вошло в какой-либо фрейм - не редактируется.
Код:
//считывание содержимого файла построчно и передача его переменной NazvanieFilma
TekstFilmi.seek(0, "0");  //перевод позиции курсора в начало файла
while (!TekstFilmi.eof)
{
	NazvanieFilma = TekstFilmi.readln();
	if (app.findTextPreferences.findWhat = NazvanieFilma)  //что ищем
	{
		app.changeTextPreferences.appliedCharacterStyle = 'Film'  //на что меняем
		app.selection[0].changeText();
	}
}
//считывание содержимого файла построчно и передача его переменной NazvanieSeriala
TekstSeriali.seek(0, "0");  //перевод позиции курсора в начало файла
while (!TekstSeriali.eof) 
{
	NazvanieSeriala = TekstSeriali.readln();
	if (app.findTextPreferences.findWhat = NazvanieSeriala) //что ищем
	{
		app.changeTextPreferences.appliedCharacterStyle = 'Serial' //на что меняем
		app.selection[0].changeText();
	}
}
Вопрос: это в принципе из-за алгоритма поиска самого индизайна так падает скорость присвоения стилей или можно сделать как-то подругому чтобы было быстрее? Скорость напрямую зависит от кол-ва названий в текстовом файле и не зависит от местоположения - на серваке ли файлы или прямо на моем компе. Комп: Core 2 Duo 4400, памяти 2 гига. При обработке загружается на все 100%. Индиз CS3.
 
Ответ: Кто-нить подскажет, как создать тень?

sakhar сказал(а):
Жаль, что вы не умеете (или не хотите) читать. Выход есть - вам надо найти человека с хорошей дикцией, который будет вам читать reference вслух. Тогда больше не придется здесь мусорить, задавая подобные вопросы...

Открыл файлы
InDesignCS3_ScriptingGuide_VB.pdf
indesign_cs3_scripting_tutorial.pdf
InDesign CS3 Sample Scripts Read Me.pdf
По поиску "shadow" ничего не найдено. В прилагаемых примерах со скриптами, тоже нет ничего.

В референс написано так:
Property EnableDropShadow As Boolean
Member of InDesign.ObjectStyleContentEffectsCategorySettings
If true, the object style will apply drop shadows.


Явно речь идет о стиле объекта, а никак не о создании тени. А у меня выделен прямоугольник.
Соответственно
myPramougolnik.EnableDropShadow - пишет ошибку (что естественно)
Пришлось создавать стиль, и потом уже присваивать стиль объекту. Что не оч. правильно по логике проблемы.

Поэтому "мусорный" вопрос и возник :))
 
Как узнать координаты выделенного?

Есть таблица, которая переходит на др. страницу.
Я хочу узнать координаты верха таблицы.
Обычно это равно baseline - Table.Heght.
Код:
Set mT = MyInd.Selection.Item(1)
mY1 = mT.Baseline - mT.Tables.Item(1).Height
Но если таблица переходит на сл. страницу, то table.height будет уже больше, поэтому верхняя координата окажется неверной.
Можно ли как-то иначе узнать координаты выделенной таблицы?

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

Вложения

  • selection.jpg
    selection.jpg
    19 КБ · Просм.: 883
Ответ: Если есть вопросы по скриптам

Получилось так:
Код:
mH = mTable.Cells.Item(1).Height
mB1 = mTable.Cells.Item(1).Lines.FirstItem.Baseline
mB2 = mTable.Cells.Item(1).Lines.LastItem.Baseline
mY1 = mB1 + ((mB2 - mB1) / 2) - mH / 2
т.е. взяли среднюю (из всех строк) базовую линию в первой ячейке и отняли от нее половину высоты этой ячейки.
 
Ответ: Вопрос: скорость поиска/замены?

dios1 сказал(а):
Я верстаю всеми любимую тв-программу.
У вас чтение строк из файла и передача его переменной NazvanieFilma происходит в одном цикле. Попробуйте разделить это на два цикла: в первом из файла все строки из файла загоняются в массив, а потом во втором цикле - остальное. Хотя, надо сказать, ваш процесс я так и не понял.
 
Ответ: Если есть вопросы по скриптам

boriskasmoscow
Попробуйте разделить это на два цикла: в первом из файла все строки из файла загоняются в массив, а потом во втором цикле - остальное.
Была тоже такая мысля – сделать через массивы, пробовал – бесполезно! Скорость поиска/замены от этого не меняется. Отсюда следует вывод – что не текстовые фалы(базы) тормозят, а сам процесс поиска/замены.
ваш процесс я так и не понял
вот кусок кода, который я приводил выше, но уже с более подробными комментариями, по которым, я думаю, всё будет ясно, что я хочу сделать:
Код:
while (!TekstSeriali.eof) // пока не встретится конец файла
{
NazvanieFilma = TekstFilmi.readln(); /*чтение файла TekstFilmi.txt (базы названий фильмов) построчно и присвоение переменной NazvanieFilma названий фильмов поочереди*/
if (app.findTextPreferences.findWhat = NazvanieFilma)  /*если во фрейме (выделенном тексте) поиском находится название фильма из файла TekstFilmi.txt (базы названий фильмов)*/
{
app.changeTextPreferences.appliedCharacterStyle = 'Film'  /*то найденному названию фильма во фрейме (выделенном тексте) присваивается стиль 'Film'*/
app.selection[0].changeText(); // процесс замены
}
}
Дело в том, что процесс этого присвоения стиля найденным названиям происходит долговато даже при обработке одного небольшого фрейма. Я уж не говорю про целый разворот и тем более про несколько разворотов
 
Ответ: Вопрос: скорость поиска/замены?

dios1 сказал(а):
Я не знаю как сделать так, чтобы можно было выделить все фреймы и все они уже обрабатывались сами поочереди.
Объедините фреймы в одну Story и посмотрите как в скрипте FindCyangeByList организована работа в этом случае. Там кстати тоже данные читаются из файла.
 
Ответ: Вопрос: скорость поиска/замены?

Здравствуйте. Начал изучать скрипты. Подскажите, есть ли русский перевод пособия JavaScript tools Guide, который поставляется с Иллюстратором.
 
Ответ: Если есть вопросы по скриптам

Вопрос.
Нашел в одной из веток этого форума, что в качестве редактора для JSX, в частности, можно использовать PrimalScript, причем даже было указано, что можно к нему прикрутить модель скриптов InDesign.
Вопрос собственно в том как научить PrimalScript подсказывать InDesign методы и свойства. Просто tlb для VBA я нашел, а вот поиски аналогичной штуки именно для JSX от InDesign не увенчались успехом. Может плохо искал может не то искал. Подскажите пожалуйста.
 
Ответ: Если есть вопросы по скриптам

Помогите, пожалуйста, может кто-нибудь уже сталкивался с подобной проблемой:
В исходной публикации есть текст в автономных текстовых блоках на английском языке и мне надо эти блоки перенести в новый документ, залить русский текст и отформатировать его (присвоить стиль).

Мне не нужен код программы, а только алгоритм. Маякните, если кто может помочь)
 
Ответ: Кто-нить подскажет, как создать тень?

hulk1776 сказал(а):
Есть:
Код:
Set MyInd = SetMyInd
Set mObj = MyInd.Selection.Item(1)
осталось к mObj приделать тень. Кто-то подскажет? (хотя народ тут не особо "подсказочный" :E] ).
Если без присвоения стиля, то так:
Код:
mObj.TransparencySettings.DropShadowSettings.Mode = 1852796517 'тень выкл.
mObj.TransparencySettings.DropShadowSettings.Mode = 2020623440 'тень вкл.
Это если кому надо...
 
Ответ: Если есть вопросы по скриптам

Очень хочется автоматизировать в программе 4 последовательные операции: меrge cells in row, apply cell style, character style, paragraph style.

Нашел скрипт вида:
try {app.selection[0].appliedCharacterStyle = app.activeDocument.characterStyles.item("mystyle")}catch (e) {exit()};
добавил к нему:
try {app.selection[0].appliedParagraphStyle = app.activeDocument.paragraphStyles.item("mystyle")}catch (e) {exit()};
Получилось одним щелчком character style + paragraph style. Уже неплохо. Подумал и добавил
try {app.selection[0].appliedCellStyle = app.activeDocument.cellStyles.item("mystyle")}catch (e) {exit()};
Не получилось, потому что скрипт срабатывает только если выделен текст в ячейке и не срабатывает если выделена собственно ячейка.

Сриптинг для меня тёмный лес. Посидел пару часов за компьютером, нашел несколько книг, несколько статей, но в отсутствие базовых знаний преобразовать это в работающий результат не получается. Например try {myCell.merge(myCell, myLastCell);}catch (e) {exit()}; не работает и я даже примерно догадываюсь почему, но... синтаксис работающих двух строчек вобще не понятен, не могу его совместить с другими командами.

Подскажите, что должно быть написано для объединения выделенных ячеек и применения к полученной строке трех явно указанных стилей?
 
Ответ: Если есть вопросы по скриптам

a111 сказал(а):
автоматизировать в программе 4 последовательные операции: меrge cells in row, apply cell style, character style, paragraph style.
выделяем любую ЯЧЕЙКУ (или ячейки) в нужной строке и, например, вот так:
PHP:
var doc = app.activeDocument;

// объединили выделенные ячейки в строку
var myCell = doc.selection[0].merge (doc.selection[0].rows[0]);

// назначили стиль ячейки
myCell.appliedCellStyle = doc.cellStyles.item ("myCellStyle");

// применили символьный стиль
myCell.texts.everyItem ().appliedCharacterStyle = doc.characterStyles.item ("myCharStyle");

// применили стиль параграфа
myCell.texts.everyItem ().appliedParagraphStyle = doc.paragraphStyles.item ("myParStyle");
 
Ответ: Если есть вопросы по скриптам

Огромное спасибо. Почему то пришлось двойные кавычки заменить на одинарные, и просто щелчком в текст - не работает, но - работает когда выделены ячейки.
 
Ответ: Если есть вопросы по скриптам

Вопрос. Можно ли каким-либо образом узнать текущее время и дату?
ну то есть типа данных Date судя по всему существует, а вот есть какой-нибудь аналог
getdate() из SQL?
 
Статус
Закрыто для дальнейших ответов.