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

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

Elsynor

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

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

Genusatplay

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

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

Eugenyus

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

Тогда вместо буфера лучше метод move() использовать — он пошустрее отрабатывать будет.
 

Genusatplay

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

а вот тут я не совсем понял, если использовать мув, то чекбокс передвинется, но не будет привязан к таблице?
 

Eugenyus

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

Да, здесь я поспешил, так не сработает. Вот если чекбокс был бы вставлен инлайном в какой-нибудь текстовый фрейм, тогда можно было бы его "подхватить" как текст и продублировать (duplicate) или перенести (move) в ячейку. А так, наверное, только copy-paste.
 

Genusatplay

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

появилась небольшая проблемка.. при создании чекбокса с именем "CheckBox"+i, когда создается первый экземпляр чекбокса задается имя "CheckBox0" после переноса "app.cut()" "app.paste()" чекбокс превращается в "CheckBox1" , и соответственно следующие создаются с номером 1 и после копирования ренеймятся в 2
проблема конечно решается указанием имени чекбокса после перемещения а не до него.(увы ошибся.. почему-то пишет что после кат/паст при использовании newCheckBox.name = "checkBox"+i, i=0 пишет что "The requested action could not be completed becouse the object no longer exists." свзязь с переменной теряется.. =/ )
вопрос собственно в том, можно ли эту "фичу с переименованием" отключить както? чтоб допустим в начале скрипта выключил, в конце включил обратно.
 

Eugenyus

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

Я бы весь цикл глянул, в котором это "i" меняется. Попробовал с обычным прямоугольником провернуть (у меня CS5), после cut-paste имя не меняется.
 

Genusatplay

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

да с циклом все нормально, я сейчас ручками создал текстовое поле, конвертнул его в чекбокс, переименовал его в "qwe 0" после кат/паст, это уже "qwe 1"
 

Genusatplay

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

я думал только 0 меняется на 1 а оказалось, если объект с именем "qwe0", катпастить 5 раз то будет "qwe5", тк связь с переменной теряется после катпаста, пришлось лезть через ячейку в которую я вставил элемент и ренеймить его там.
 

Genusatplay

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

Подскажите пожалуйста, можно как нибудь отключить прорисовку страниц, на время выполнения скрипта?
 

Genusatplay

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

Код:
var thisDoc = app.activeDocument;var selectListArr = [];
var itemsForPrint = [];
var numSet = thisDoc.conditionSets.length;
for ( var i = 0 ; i < numSet; i++)
{
    selectListArr[i] = thisDoc.conditionSets[i].name;
} 


var w = new Window("dialog");
var selectList = w.add("listbox",undefined, selectListArr, {multiselect: true});
var print = w.add("button",undefined,"Print selected items");


print.onClick = function()
{
    if ( selectList.selection != null )
    {
        for (var i = 0; i < selectList.selection.length; i++)
        {
            itemsForPrint.push(selectList.selection[i].text);
        }
        PrintConditionSets();
    }
}
w.show();


function PrintConditionSets()
{
    w.close();    
    if ( itemsForPrint.length != 0 )
    {
        for (var i = 0; i < itemsForPrint.length; i++)
        {
            thisDoc.conditionalTextPreferences.activeConditionSet = thisDoc.conditionSets.itemByName(itemsForPrint[i]);
            thisDoc.print();
        }        
    }
}
на строке
Код:
thisDoc.conditionalTextPreferences.activeConditionSet = thisDoc.conditionSets.itemByName(itemsForPrint[i]);
выдает ошибку
Код:
Cannot handle the request because a modal dialog or alert is active.
непонятно.. окно то закрываю..
 

Eugenyus

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

В окнах типа "dialog" такое может быть, есть, и скорее всего, будет всегда. )) Вариантов выхода, тем не менее, достаточно.
Первый вариант — сменить тип окна на "palette", но в данном случае не самое лучшее решение, если у Вас помимо печати будет ещё на выбор экспорт.
Отсюда второй вариант — кнопки "Печать", "Экспорт" и т.п. сделать радиокнопками (w.add("radiobutton",undefined,"Print")). А кнопок оставить две — "OK" и "Cancel". И никаких onClick-ов.
 

19thNervousBreakdown

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

Подскажите пожалуйста, каким образом в indesign cs3, при помощи скрипта, можно вывести (нарисовать) точку, круг, прямоугольник, сектор?
 

ungrep

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

Привет всем!

Есть массив links:
Код:
var myLinks = app.activeDocument.links

Как можно получить страницы на которые ссылаются данные линки?
Например как в палитре "Links".
Есть ли что-то вроде?
Код:
var myLinks = app.activeDocument.links[0].pages

InDesign CS3.
 

boriskasmoscow

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

Надо копать в сторону свойства parent. В скрипте для ID CS3 linkReport_to_CSV.jsx автор Loic_aigon определяет страницы так:
Код:
if(lk.parent.parent.parent.constructor.name=="Page")
   {
    pg_nb = lk.parent.parent.parent.name;
   }
   else
   {
    pg_nb = lk.parent.parent.parent.parent.name;
   }
lk - это линк
pg_nb - страница (page number)
Под else, вероятно, тот случай, когда графика в группе
 

boriskasmoscow

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

(нарисовать) точку, круг, прямоугольник, сектор?
А как вы это пытались сделать? Приведите ваш код, а мы подскажем, что неправильно.
 

apg_777

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

2 ungrep
Пару лет назад задавал подобный вопрос http://forum.rudtp.ru/showthread.php?t=46007&highlight=
Для CS3 и CS4, к сожалению, проходил только один вариант - сравнение geometric bounds картинок с координатами полос.
Этот перебор у меня работает до сих пор. На AppleScript.

Вариант с parent не проходит - количество parent.parent.parent... зависит от глубины вложения в группе и не гарантирует правильного результата.
 

19thNervousBreakdown

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

А как вы это пытались сделать? Приведите ваш код, а мы подскажем, что неправильно.
Да, пыталась. Уже получилось. Сначала пыталась нарисовать окружность такой вот штукой:
Код:
rad= 10;
for (i=0; i<=360; i+=0.5)
{
    x =x+rad*Math.cos(i);
    y =y+rad*Math.sin(i);
    path.push([x,y]);
            if (path.length > 10)
        {
            if (p == null)
            {
                p = doc.graphicLines.add().paths[0];
                p.parent.strokeWeight = 5;
                //p.parent.strokeColor = app.activeDocument.swatches[color];
            } else
                p = p.parent.paths.add();
            p.entirePath = path;
            path = [ [x,y] ];
        }
    }
В общем, в цикле накосячила была. Теперь рисует, но через одно место, конечно.
На самом деле, ответ был намного проще -
Код:
doc.pages.item(0).rectangles.add({geometricBounds:[10,10 ,50 ,50 ]});
doc.pages.item(0).ovals.add({geometricBounds:[50, 50, 200, 200]});
не дочиталась пару строчек в объектной модели вовремя, каюсь)
 

boriskasmoscow

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

Вариант с parent не проходит - количество parent.parent.parent... зависит от глубины вложения в группе и не гарантирует правильного результата.
Я бы попробовал организовать рекурсию.
 
Статус
Закрыто для дальнейших ответов.