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

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

При использовании 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.
 
Ответ: Если есть вопросы по скриптам

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

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

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

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

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

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

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

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

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

Нашел скрипт на адобовском форуме, для создания 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();
 
Ответ: Если есть вопросы по скриптам

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

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

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

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

Здравствуйте, у меня такой вопрос: Скачал скрипт Олега Бутрина 'Export selection', но он выдает ошибку, помоему не работает на ИД. ЦС5. Интересно может кто нибудь доработал её?
Заранее спасибо за ответы.
 
Доброго времени суток!!!!
Возможно Вы сможете мне помочь.
Есть прога на делфи формирующая страницы с блоками.
блоки это 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 под размер текста????
очень надо.
 
Ответ: Если есть вопросы по скриптам

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

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

MyTextFrame.fit(1718906723);

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

MyTextFrame.geometricBounds[2] - MyTextFrame.geometricBounds[0]
 
Ответ: Если есть вопросы по скриптам

to LeshikSan

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

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

А просто окантовку как сделать?
 
Ответ: Если есть вопросы по скриптам

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


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

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