Импорт графики в ID CS3

  • Автор темы Автор темы vadim_k
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

vadim_k

Участник
Топикстартер
Сообщения
28
Реакции
0
Уважаемые специалисты!
Передо мной стоит задача импортировать изображение в графический фрейм.
Делаю я это так:
myFrame = myDoc.rectangles.add();
myFrame.fit(FitOptions.centerContent);
myFrame.place(myImageFile);

Проблема заключается в том, что во второй строке я хотел бы иметь примерно такое выражение:
myFrame.FrameFittingOption.fittingAlignment = AnchorPoint.topCenterAnchor;
как это подсказывает Help ExtendScript Toolkit 2 (по условию задачи импортированное изображение должно быть подтянуто к верхней кромке фрейма).
Но увы, выдается сообщение об ошибке "Object does not support the property or method FrameFittingOption".
Неужели из скрипта нельзя выполнить установку таких свойств фрейма, которые выполняются в самом ID командой Object->Fitting->Frame Fitting Options->Alignment.
Пожалуйста, подскажите, как поправить эту ситуацию.
Заранее спасибо.
Вадим Калинин
 
Ответ: Импорт графики в ID CS3

boriskasmoscow сказал(а):

Спасибо за помощь. К сожалению, указанный пример также предлагает выполнить один из пяти вариантов FitOptions, которые не предусматривают использование AnchorPoint, имеющееся в описанном ExtendScript Toolkit 2 свойстве FrameFittingOption
 
Ответ: Импорт графики в ID CS3

Команды меню индизайна можно выполнить из скрипта, используя menu action.
Для JS не подскажу, а в AppleScript делается так:
set cmMenuAction to menu action "$ID/..."
invoke cmMenuAction
Вместо точек ставится команда меню или путь к команде. Самое сложное - правильно обозвать команду.
 
Ответ: Импорт графики в ID CS3

apg_777 сказал(а):
Команды меню индизайна можно выполнить из скрипта, используя menu action.
Для JS не подскажу, а в AppleScript делается так:
set cmMenuAction to menu action "$ID/..."
invoke cmMenuAction
Вместо точек ставится команда меню или путь к команде. Самое сложное - правильно обозвать команду.
Спасибо за подсказку. Попробую сейчас найти аналог для JS
 
Ответ: Импорт графики в ID CS3

vadim_k сказал(а):
... во второй строке я хотел бы иметь примерно такое выражение:
myFrame.FrameFittingOption.fittingAlignment = AnchorPoint.topCenterAnchor;

Но увы, выдается сообщение об ошибке "Object does not support the property or method FrameFittingOption".
FrameFittingOption пишите с маленькой буквы - myFrame.frameFittingOption.fittingAlignment = ..
 
Ответ: Импорт графики в ID CS3

boriskasmoscow сказал(а):
FrameFittingOption пишите с маленькой буквы - myFrame.frameFittingOption.fittingAlignment = ..

Попробовал и с маленькой буквы - эффект нулевой. Вероятно, это свойство доступно только для MAC.
Спасибо всем, кто откликнулся.
 
Ответ: Импорт графики в ID CS3

var my_fit_option = myFrame.frameFittingOptions;
my_fit_option.fittingAlignment = AnchorPoint.TOP_CENTER_ANCHOR;

так что ли попробуйте
 
Ответ: Импорт графики в ID CS3

boriskasmoscow сказал(а):
var my_fit_option = myFrame.frameFittingOptions;
my_fit_option.fittingAlignment = AnchorPoint.TOP_CENTER_ANCHOR;

так что ли попробуйте

Выход все же нашелся, по совету специалистов. Итак, есть графический фрейм myFrame со своим свойством geometricBounds: [newY1, newX1, newY2, newX2].
После выполнения фрагмента скрипта:
myFrame.place(curFile);
newObject = myFrame.allGraphics[0];

становится доступным свойство newObject.geometricBounds:
var imgY1 = newObject.geometricBounds[0];
var imgX1 = newObject.geometricBounds[1];
var imgY2 = newObject.geometricBounds[2];
var imgX2 = newObject.geometricBounds[3];

и посредством нехитрых арифметических действий можно определить требуемые значения границ изображения newObject во фрейме myFrame, то есть вручную выполнить требуемое выравнивание.
В моем случае:
var fitY1 = newY1;
var fitX1 = (((newX2 - newX1) - (imgX2 - imgX1)) / 2) + newX1;
var fitY2 = (imgY2 - imgY1) + newY1;
var fitX2 = (((newX2 - newX1) - (imgX2 - imgX1)) / 2 + (imgX2 - imgX1)) + newX1;
newObject.geometricBounds = [fitY1, fitX1, fitY2, fitX2];

Жаль, что более элегантный метод
my_fit_option.fittingAlignment = AnchorPoint.TOP_CENTER_ANCHOR
реализовать не удается, хотя
var my_fit_option = myFrame.frameFittingOptions выполняется без замечаний.
Большое спасибо всем, кто откликнулся и оказал помощь в разборе этой проблемы.
 
Статус
Закрыто для дальнейших ответов.