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

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

suntory

Administrator
15 лет на форуме
Сообщения
23 473
Реакции
12 483
Ответ: Если есть вопросы по скриптам


Не по теме:
Еще книги на Адобовском сайте серии "InDesignCS***_ScriptingGuide_JS(VB)".
Скачал pdf файлы :
InDesignCS3_ScriptingGuide_VB.pdf
InDesignCS3_ScriptingGuide_JS.pdf
InDesignCS3_ScriptingGuide_AS.pdf
Сразу понял что это туфта
:).

 

andrejK

R.I.P.
Сообщения
10 300
Реакции
5 218
Ответ: Если есть вопросы по скриптам


Не по теме:
да! и я! этих книжек не читал! но осуждаю!
 

victort

10 лет на форуме
Сообщения
55
Реакции
0
Ответ: Если есть вопросы по скриптам

У меня индизайн CS3.

PHP:
for (i=0; i<=2; i++){
 app.findGrepPreferences.findWhat = myF[i];
 app.changeGrepPreferences.changeTo = myC[i];
 app.changeGrepPreferences.appliedCharacterStyle = "bold";
 mySel.changeGrep();
 }

высветилась ошибка вот в этой строке:
PHP:
 app.changeGrepPreferences.appliedCharacterStyle = "bold";

Помогите исправить ошибку.
 

Вложения

  • oshibka.jpg
    oshibka.jpg
    354.3 КБ · Просм.: 461

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
Ответ: Если есть вопросы по скриптам

appliedCharacterStyle — это обращение к символьному стилю, а не начертанию. У Вас в документе нет символьного стиля с таким именем.
 

victort

10 лет на форуме
Сообщения
55
Реакции
0
Ответ: Если есть вопросы по скриптам

Сам ошибся в написании строк исправил.
Выкладываю весь код. Значит второй прогон массива работает первый нет.
GREPы тестировал в программе они рабочие.
PHP:
main();
function main(){
var mySel = app.activeDocument.selection[0]; //Работаем с выделенной областью
app.findGrepPreferences = app.changeGrepPreferences = null;
app.findChangeGrepOptions.includeLockedLayersForFind = true;
app.findChangeGrepOptions.includeLockedStoriesForFind = true;
app.findChangeGrepOptions.includeHiddenLayers = true;
app.findChangeGrepOptions.includeMasterPages = false;
app.findChangeGrepOptions.includeFootnotes = true;
var myF = [];
var myC = [];
//Наполняем два массива: первый - поиск, второй - замена

myF[0] = '(\d{1,2})[.](\d{2})';
myC[0] = '$0';

myF[1] = '(["]|[«])( *.*\w*\d*)([»]|["])\s([Т][//][с])';
myC[1] = '«$2» $4';
myF[2] = '(["]|[«])( *.*\w*\d*)([»]|["])\s([Х][//][ф])';
myC[2] = '«$2» $4';
myF[3] = '([Т][//][с])';
myC[3] = '$0';
myF[4] = '([Х][//][ф])';
myC[4] = '$0';
 
for (i=0; i<=2; i++){  // i<myF.length;
 app.findGrepPreferences.findWhat = myF[i];
 app.changeGrepPreferences.changeTo = myC[i];
    app.changeGrepPreferences.fontStyle = 'Bold';    
 mySel.changeGrep();
 }
 
for (i=3; i<=4; i++){  // i<myF.length;
 app.findGrepPreferences.findWhat = myF[i];
 app.changeGrepPreferences.changeTo = myC[i];
    app.changeGrepPreferences.fontStyle = 'Book';    
 mySel.changeGrep();
 }
}
 

victort

10 лет на форуме
Сообщения
55
Реакции
0
Ответ: Если есть вопросы по скриптам

Протестировал первый прогон массива и получается что неработают МЕТАСИМВОЛЫ (\d,\w и т.д.) GREPов потомучто если поменять условие на простой поиск то находит и меняет.
 

andrejK

R.I.P.
Сообщения
10 300
Реакции
5 218
Ответ: Если есть вопросы по скриптам

две косые ставьте там, где у вас одна. (\\d, \\w)
 

victort

10 лет на форуме
Сообщения
55
Реакции
0
Ответ: Если есть вопросы по скриптам

Спасибо, скрипт работает.
 

victort

10 лет на форуме
Сообщения
55
Реакции
0
Ответ: Если есть вопросы по скриптам

Всем привет. Подскажите пожалуста, как заменить слово в текстовом фрейме на картинку?
Т.е. есть название "компании" написано в тексте много раз, было приняло решение это слово заменить на их логотип. Хочу эту фишку добавить в скрипт. Заранее большое спасибо.
 

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
Ответ: Если есть вопросы по скриптам

Можно и без скрипта. Помещаете логотип на поля, копируете в буфер, в грепе поиск нужного слова, заменить на содержимое буфера (~c по моему).

PS. Потом можно и к скрипту прикрутить: фрейму с лого назначить метку (в ЦС5 если не ошибаюсь, в слоях, до ЦС5 - script Label); в скрипте сделать такую штуку:
Код:
myDoc.pageItems.item("Метка фрейма").select();
app.copy();
и дальше упомянутый греп.
 

929151

Участник
Сообщения
4
Реакции
0
Ответ: Если есть вопросы по скриптам

Подскажите, как добавить к rectangles прозрачность (opacity) 50%
Код:
doc1.rectangles.add({geometricBounds:[0, 0, pageHeight, pageWidth*2 ], fillColor: 'None', strokeColor: 'None'});
 

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
Ответ: Если есть вопросы по скриптам

Код:
[B]var myRec = [/B]doc1.rectangles.add({geometricBounds:[0, 0, pageHeight, pageWidth*2 ], fillColor: 'None', strokeColor: 'None'});
myRec.transparencySettings.blendingSettings.opacity = 50;
 

Maxbor

15 лет на форуме
Сообщения
215
Реакции
82
Ответ: Если есть вопросы по скриптам

Подскажите, пожалуйста, как скриптом установить размер эскизов в палитре страниц, например, переключить их в размер "Jumbo".
Имеющееся у меня описание объектной модели почему-то в разделе "Adobe InDesign CS5 (7.0) Object Model JS: PagesPanel" ничего не содержит (пусто).
 

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
Ответ: Если есть вопросы по скриптам

Вот так получилось:
Код:
app.panels.item("Pages").iconSize = IconSizes.JUMBO_ICON;
app.panels.item("Pages").masterIconSize = IconSizes.JUMBO_ICON;
 

victort

10 лет на форуме
Сообщения
55
Реакции
0
Ответ: Если есть вопросы по скриптам

Всем привет. Стал добавлять в скрипт условия и наткнулся на такой косяк. При первом прогоне выдается ошибка при повторном прогоне все хорошо. Подскажите где ошибка?
Причем ошибка выдается если добавлять myFV[2]. без него скрипт не ругается при чем myFV[2] до этого содержал GREP форму идентичную myFV[1] и тоже ругался. Я отдельно форму вначале прописал для Т/с и Х/ф скрестил перестал ругаться но выдает ошибку при добавлении новых элементов в массив.


PHP:
myFV[0] = '(\\d{1,2})[.](\\d{2})';
myCV[0] = '$0';
myFV[1] = '(["]|[«])( *.*\\w*\\d*)(["]|[»]).*([Т]|[Х])[//]([с]|[ф])';
myCV[1] = '«$2» $4/$5';
myFV[2] = '[Г][Т][Р][К]\\s*[«][К][У][Р][Г][А][Н][»]';
myCV[2] = '$0';
 
for (i=0; i<myFV.length; i++){  
 app.findGrepPreferences.findWhat = myFV[i];
 app.changeGrepPreferences.changeTo = myCV[i];
 app.changeGrepPreferences.fontStyle = 'Bold';
    mySel.changeGrep();
 }
 

Вложения

  • oshibka3.jpg
    oshibka3.jpg
    78.8 КБ · Просм.: 644

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
Ответ: Если есть вопросы по скриптам

victort, для начала перенаберите ту же строку, только без квадратных скобок — к чему их здесь столько? Закавыченное слово — кавычки «» лучше заменить на \\". Если не поможет, попробуйте найти эту строку вручную, без скрипта. Потом будем смотреть дальше.
 

victort

10 лет на форуме
Сообщения
55
Реакции
0
Ответ: Если есть вопросы по скриптам

Eugenyus

через GREP выделить только вот так получилось
(ГТРК)\\s*[«](КУРГАН)[»]​

Провел тестирование трех видов.
1) выделил искомый текст запустил скрипт ошибок нет.
2) выделил несколько искомых объектов разного вид - ошибок нет
3) выделил весь текст во фрейме запустил скрипт - ОШИБКА. Та самая ошибка что на картинке выше.​
 

victort

10 лет на форуме
Сообщения
55
Реакции
0
Ответ: Если есть вопросы по скриптам

Стал тестировать постранично текст. дошел вот до такой строчки:
1.00 «Комеди Клаб»​
И только на ней отобразилась ошибка. Возможно ли так что просто буфер переполнен?

Удалил часть текста непомогло. На картинке отображенно что происходит с выделением текста при обработке.
Текст я выделял полностью но при обработке часть выделения текста исчезает.
 

Вложения

  • oshibka4.jpg
    oshibka4.jpg
    96 КБ · Просм.: 759

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
Ответ: Если есть вопросы по скриптам

Понятно. По selection[0] в переменную (в данном случае selection - текст) заносится определенное выделенной областью количество символов, каждый из которых имеет некий свой индекс в этой области. На каком-то этапе замены количество символов меняется (на скрине - увеличивается), но область выделения остается той же (по количеству символов). Более того, каждый символ получает новый индекс, а скрипт обращается к символам по этим индексам. Отсюда внешний вид выделения после обработки скриптом и выдаваемая ошибка. Я тоже часто с этим сталкиваюсь, приходится изобретать другие варианты задания скрипту области обработки.

Вариант решения — вместо selection[0] задавать, например, весь материал: selection[0].parentStory; или текстовый фрейм: selection[0].parentTextFrames[0]; тогда такой путаницы не будет. Но вот будет ли это корректно для Вашего случая?
 
Статус
Закрыто для дальнейших ответов.