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

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

apg_777

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

При использовании AppleScript в пределах скрипта можно спокойно общаться с несколькими приложениями, по ходу переключаясь на нужные:

tell application "Adobe Photoshop CS4"
-- Здесь работаю с фотошопом
tell application "Adobe InDesign CS4" -- переключился на InDesign
if (count documents) is not equal to 0 then
set docName to full name of active document
else
set docName to ""
end if
end tell -- закончил работу с InDesign
-- продолжаю работать с фотошопом, могу использовать переменную docName
end tell

А как эту структуру воспроизвести с использованием JavaScript?
Конкретно в этом случае получить docName.
 

similideus

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

У Adobe есть специальный класс 'BridgeTalk' для обмена разной информацией между приложениями. В 'JavaScript Tools Guide' описано как эта штука работает. Можно пересылать параметры между объектными моделями или передавать управление разным скриптам.
 

apg_777

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

BridgeTalk есть, но у него ограничения по поддерживаемым программам. В данном случае пройдет.
Больше вариантов временно сменить приложение нет?
Или, к примеру, связать фотошоп и почтовый клиент? Утрирую, конечно, но для AppleScript никаких проблем нет, а тут запускающая скрипт программа - фотошоп, который поддерживает AppleScript только "извне", вот и приходится задавать элементарные вопросы.
 

similideus

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

Чтобы связать настолько разные приложения придётся пускать скрипт на уровне системы. Например, используя WSH (Window Script Host), вероятнее всего это будет скрипт на VB.

Еще можно попробовать добраться до приложений через COM. Не знаю как современные CS'ы, но старые версии фотошопа умели скриптоваться и таким странным способом. Мне в сети попадались примеры управления фотошопом с помощью Python'а.

До многих ли приложений достучитесь таким образом не известно, но написанные Microsoft'ом должны быть доступны.
 

gauss_gauss

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

Пытаюсь разобраться с поиском/заменой. Ищу допустим слово Grey. Команда findWhat находит его.

Код:
app.findTextPreferences.findWhat  = "<grey>"
app.findGrepPreferences.findWhat  = "<grey>"

как выделить то, что нашел скрипт?
 

Eugenyus

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

Код:
app.findGrepPreferences.findWhat  = "<grey>";
var myF = myText.findGrep();
myF[0].select();
где myText - область поиска.
 

gauss_gauss

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

Нашел скрипт на адобовском форуме, для создания progress bar'а. А как его прикрутить к скрипту?

Код:
var ProgressBar = function(/*str*/title)
{
     var w = new Window('palette', ' '+title, {x:0, y:0, width:340, height:60}),
          pb = w.add('progressbar', {x:20, y:12, width:300, height:12}, 0, 100),
          st = w.add('statictext', {x:10, y:36, width:320, height:20}, '');
     st.justify = 'center';
     w.center();
     this.reset = function(msg,maxValue)
          {
          st.text = msg;
          pb.value = 0;
          pb.maxvalue = maxValue||0;
          pb.visible = !!maxValue;
          w.show();
          };
     this.hit = function() {++pb.value;};
     this.hide = function() {w.hide();};
     this.close = function() {w.close();};
};


//------------------------------------------------
//      SAMPLE CODE
//------------------------------------------------

function main()
{
     var pBar = new ProgressBar("Script Title");
     var i;
     
     // Routine #1
     pBar.reset("Processing Routine #1...", 100);
     for( i=0 ; i < 100; ++i, pBar.hit() )
          {
          $.sleep(10);
          }
     
     // Routine #2
     var i;
     pBar.reset("Processing Routine #2...", 10);
     for( i=0 ; i < 10; ++i, pBar.hit() )
          {
          $.sleep(300);
          }
     
     pBar.close();
}
main();
 

Eugenyus

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

Интересный пример, не встречал, надо будет попробовать. Сам пользуюсь другим, из руководства InDesignCS3_ScriptingGuide_JS.pdf Наверняка есть и для остальных версий, поищите на адобовском сайте. Там, на мой взгляд, приведен вариант попроще.

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

gauss_gauss

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

Этот принцип мне понятен)) не понятно как это будет взаимодействовать с последовательностью действий скрипта
 

Eugenyus

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

Например, в цикле. Расчет длины полосы берется от шага цикла и передается в функцию. Там же, в цикле, можно передавать какой-нибудь текстовый коммент, например, "Обрабатывается объект номер "+String(i), и типа такого дальше.
 

aybekdes

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

Здравствуйте, у меня такой вопрос: Скачал скрипт Олега Бутрина 'Export selection', но он выдает ошибку, помоему не работает на ИД. ЦС5. Интересно может кто нибудь доработал её?
Заранее спасибо за ответы.
 

Demonstar

Участник
Сообщения
6
Реакции
0
Доброго времени суток!!!!
Возможно Вы сможете мне помочь.
Есть прога на делфи формирующая страницы с блоками.
блоки это textFrame
вывожу вот так:
MyTextFrame:=MyPage.TextFrames.add; //Создаем текстовый фрейм
MyTextFrame.InsertionPoints.lastItem.contents :=text; //Вписываем в него нашу фразу
Bounds[2]:=intToStr(sx)+' mm';
Bounds[1]:=intToStr(sy)+' mm';
Bounds[4]:=intToStr(fx)+' mm';
Bounds[3]:=intToStr(fy)+' mm';
MyTextFrame.geometricBounds:=Bounds; // Увеличиваем размер фрейма, а то он маленьки слишком}

как после вывода мне уменьшить TextFrame под размер текста????
очень надо.
 

LeshikSan

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

на js это так: MyTextFrame.fit( FitOptions.FRAME_TO_CONTENT )
 

Demonstar

Участник
Сообщения
6
Реакции
0
to LeshikSan

Спасибо!
Только в Delphi это пишется

MyTextFrame.fit(1718906723);

И вопрос ав продолжение:
Не подскажете как определить текущую высоту TextFrame?
 

LeshikSan

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

MyTextFrame.geometricBounds[2] - MyTextFrame.geometricBounds[0]
 

Demonstar

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

to LeshikSan

Спасибо еще раз.
И последнее что меня мучает :(
Как сделать окантовку TextFrame толщиной 1

И возможно ли сделать окантовку только снизу (Как в Excell Граница ячейки)????
Простите за такие вопросы, я просто уже не знаю где искать. А программу хотят побыстрей
 

George

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

Demonstar

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

А просто окантовку как сделать?
 

LeshikSan

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

MyTextFrame.strokeWeight
Здесь объектная модель ID в читабельном виде.


И возможно ли сделать окантовку только снизу (Как в Excell Граница ячейки)?
можно вставить в фрейм таблицу из одной ячейки по размеру этого фрейма, ячейке задать линию снизу и в нее вставить весь контент.
если фрейм у тебя с подложкой (или есть возможность сделать белую подложку) - можно это реализовать через тень. Тогда чтоб не париться - создай стиль объекта и назначай его программно нужным фреймам.
 

klass_glass

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

ТОварищи дорогие, у меня скрип не работает на маке MultiPrint 1.0, с чем связан не понятно. Помогите пожалуйста. На писи скрип работает как родной...
 
Статус
Закрыто для дальнейших ответов.