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

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

Eugenyus

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

ParentTextFrames — это не коллекция, а массив.
Например:
Код:
Character.paragraphs *(Read Only) 
...A [B]collection [/B]of paragraphs.
Код:
Character.parentTextFrames *(Read Only) 
An [B]array[/B] of the text frames that contain the text. Can return: [B]Array[/B] of TextFrames or TextPaths.
Поэтому обращаемся к ним не через item, а просто задаём порядковый номер в массиве:
Код:
alert (MyParagraph1.characters.item(0).[B]parentTextFrames[0][/B].parentPage.name);
 

Ambassadore

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

Уррра, все заработало!
Спасибо!
 

d1garch

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

Доброго времени суток!

Есть скрипт TextStylesReporter для InDesign. Он вытаскивает характеристики стилей в новый документ. Но все характеристики идут подряд, т.е. в конце описания стиля делается перевод каретки на новую строку. Как мне сделать так, что бы характеристики каждого нового стиля начинались с новой страницы?

Вот кусок кода, в котором, как я понимаю, делается этот перевод строки:

Код:
while (theStyleTypes.length > 0) {
    report = report + docTitle(myDoc);
    theStyleType = theStyleTypes.shift(); //Note: global
    var myStyles = myDoc[theStyleType[0]];
    var myLim = myStyles.length; 
    myDirectives = new Array();
    reportSections = new Array();
    var myDoneList = new Array();
    if  (sortOrder == "Based On") {
        myStyles = shuffleStyles(myStyles);
    }
    for (var i = 0;myLim > i; i++) {
        myDirectives = myDirectives.concat(theDirectives);
        reportSections = reportSections.concat(theSections);    
        myStyle = myStyles[i];
        myStyleProps = myStyle.properties;
        report = report + "\r<H1>" + theStyleType[1]  + myStyleProps.name + "\r";

        while (true) {
            var nextDirective = myDirectives.shift();
            if (nextDirective == null) {break};
            if (validateDirective(nextDirective)){
                // Logic: we hit the sections in the order they occur in reportSections, so, the following should work
                if (nextDirective.indexOf("*") == 0) {
                    if ((reportSections[0] == false) || ((nextDirective.indexOf("**") == -1) && (theStyleType[0] == "characterStyles"))) {
                        reportSections.shift();
                        myDirectives.shift();
                        while (myDirectives.length != 0) {
                            if (myDirectives[0].indexOf("*") == 0) {break}
                            myDirectives.shift();
                        }
                        continue
                    } else {
                        reportSections.shift();
                    }
                }
                // Need to split this because tabs and nested styles mess with report
                theProcessed = processDirective(nextDirective, theStyleType[0]);
                report = report + theProcessed;
            }
        }
    }
}
 

Eugenyus

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

Как мне сделать так, что бы характеристики каждого нового стиля начинались с новой страницы?
Выделить весь полученный текст, Ctrl-Alt-K, Start Paragraph On Next Page.
По моему мнению, это проще и быстрей, чем лезть в чужой код, да ещё не полностью показанный, даже при том, что я почти уверен, как это сделать программно именно в этом куске.
 

d1garch

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

to Eugenyus

Большое спасибо за совет, но у меня задача стоит сделать что бы это было на автомате.
 

Eugenyus

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

Строки 159-164 заменить на:
Код:
	myStory.search(myFindString,false,false,undefined, undefined,{appliedParagraphStyle:myStyles[i]})
	app.changePreferences = null;
	[B]if (myStyles[i].name == "H1") {myStory.search(myFindString,false,false,"^P",)}else{myStory.search(myFindString,false,false,"",)}[/B]
}
[B]myStory.search("Styles^p^P",false,false,"Styles^p",)[/B]
// One more thing: if Character styles title is last paragraph, delete it:
 

d1garch

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

Крайне странно, но InDesign ругается на то, что мол много закрывающих скобок и отсылает на 165 строку кода. 30 раз все пересмотрел - скобки в порядке

Код:
for (i = 1; myStyles.length > i; i++) 
{
	myStory.search(myFindString,false,false,undefined, undefined,{appliedParagraphStyle:myStyles[i]})
	app.changePreferences = null;
	if (myStyles[i].name == "H1"){myStory.search(myFindString,false,false,"^P",)}else{myStory.search(myFindString,false,false,"",)}
    
myStory.search("Styles^p^P",false,false,"Styles^p",)
}
 

Eugenyus

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

В приведенном куске у Вас две последние строки перепутаны местами. Сравните, как у меня постом выше.

И версию Индизайна озвучить пора бы уже.
 

d1garch

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

ID CS 5 и ID CS 5.5

Пробовал и так, и так. И выдает одну и туже ошибку :(
 

Eugenyus

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

А куда ещё три строки из цикла делись? В общем, вот мой вариант, рабочий, проверял в ЦС5 — работает нормально. Скопируйте вместо своего и убедитесь, что в папке с ним по-прежнему лежит файл TextStylesReporterCS2.inds. Должно сработать.
 

Вложения

  • TextStylesReporterCS2.rar
    9.5 КБ · Просм.: 313

d1garch

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

Ураааааа! Заработало!

Спасибо огромное мил человек! :) Всех благ тебе, любви и счастья! :)
 

xamburger

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

Добрый день. Скрипты только учусь писать, поэтому бьюсь пока над примитивными вещами. Есть строчка такого вида
myPStyle[0] = "mystyle"; (mystyle - назначенный стиль параграфа)
Все хорошо работает, пока mystyle лежит в корне, как только я помещаю его внутрь группы стилей (mygroup, например), работать перестает.
Подскажите, пожалуйста, как его правильно назначить?
 

Eugenyus

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

Код:
myPStyle[0] = app.activeDocument.paragraphStyleGroups.item("mygroup").paragraphStyles.item("mystyle");
 

xamburger

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

Спасибо! :) Заработало
 

Genusatplay

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

Подскажите, пожалуйста, что я делаю не так?
Код:
var cBox = app.activeDocument.stories[0].tables[0].cells[0].insertionPoints[0].checkBoxes.add();
cBox.geometricBounds = [0,0,3,3];
Indesign CS6 вылетает с ошибкой
если вместо "checkBoxes" написать к примеру "rectangles" то прямоугольник создается нормально
 

Elsynor

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

checkBoxes — такого массива в ID 5.5 нет. А вот CheckBox принадлежит набору объектов от User Interface, т.е. не имеет никакого отношения к вёрстке. В свою очередь прямоугольник прекрасно вставляется как InLine объект…
У меня нет CS 6 потому не знаю, может там появились чекбоксы в вёрстке…
О, нашёл, объектную модель от 8-й версии, может поможет…
 

George

I wish I was a monster you think I am
15 лет на форуме
Сообщения
17 332
Реакции
7 873

Genusatplay

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

Код:
var myCheckBox = myPage.checkBoxes.add();
myCheckBox.name = "checkBox"+i;
myCheckBox.geometricBounds = [0,0,10,10];
myCheckBox.checkedByDefault = false;
вот такой код на CS6 работает, и чекбоксы я так понял в CS6 появились тк это "новая фишка для экспорта в пдф" и то не до конца допиленная, тк настройки "textField" не все в пдф уходят.
суть в том что нужно в таблицу их запихивать(а не как у меня сейчас просто складирует в углу страницы), и вроде как правильно написал в посте выше как должно это выглядеть, но Indesign просто крашится и ничего не говорит.
из новых comboBoxes добавляет нормально в таблицу.
 

Elsynor

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

Что такое checkBoxes я и по названию догадался бы, но до сих пор в вёрстке не встречал, а проверить не могу ввиду отсутствия наличия CS6…
Так что извините за бессодержательные ответы, но может линка поможет…
 

Eugenyus

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

А если теперь эту птицу через буфер в таблицу вставить?
Код:
myCheckBox.select();
app.cut();
app.activeDocument.stories[0].tables[0].cells[0].insertionPoints[0].select();
app.paste();
 
Статус
Закрыто для дальнейших ответов.