Скриптинг. Эллипсное выделение

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

setnull

Участник
Топикстартер
Сообщения
19
Реакции
0
Всем привет!!!
Кто знает, как добиться того, чтоб
Selection.Select(
Array(
Array(0, 0),
Array(100, 0),
Array(100, 100),
Array(0, 100) ))

Выделяло не квадрат, а круг?
 
Ответ: Скриптинг. Эллипсное выделение

Надо описать все точки "круга" в данном массиве. В любом случае "круг" будет построен прямыми отрезками - точность апроксимации будет зависеть от количества элементов массива.
 
Ответ: Скриптинг. Эллипсное выделение

С помощью ScriptListener'а можно подсмотреть как ФШ строит эллипсы и немного подработав получить такой вот код:

Код:
// Save the current preferences
var startRulerUnits = app.preferences.rulerUnits;

// Set Adobe Photoshop CS2 to use pixels
app.preferences.rulerUnits = Units.PIXELS

// Set the appropriate values
var HD = 100; // horizontal diameter
var VD = 50; // vertical diameter
var X = 100;  // horizontal center of selection
var Y = 100;  // vertical center of selection

// The script's body
var desc8 = new ActionDescriptor();
var desc9 = new ActionDescriptor();
var ref3 = new ActionReference();
var unitsID = charIDToTypeID( "#Pxl" );

desc9.putUnitDouble( charIDToTypeID( "Top " ), unitsID, Y - (VD/2) );
desc9.putUnitDouble( charIDToTypeID( "Left" ), unitsID, X - (HD/2) );
desc9.putUnitDouble( charIDToTypeID( "Btom" ), unitsID, Y + (VD/2) );
desc9.putUnitDouble( charIDToTypeID( "Rght" ), unitsID, X + (HD/2) );

ref3.putProperty( charIDToTypeID( "Chnl" ), charIDToTypeID( "fsel" ) );
desc8.putReference( charIDToTypeID( "null" ), ref3 );
desc8.putObject( charIDToTypeID( "T   " ), charIDToTypeID( "Elps" ), desc9 );
desc8.putBoolean( charIDToTypeID( "AntA" ), true );

executeAction( charIDToTypeID( "setd" ), desc8, DialogModes.NO );

// Reset the application preferences
app.preferences.rulerUnits = startRulerUnits;

Задаете два диаметра и координаты X,Y - получаете эллиптическую выделенную область. Можно оформить в виде функции, в которую передавать эти данные в качестве аргументов. Например buildEllipse(100, 50, 100, 100);
 
Ответ: Скриптинг. Эллипсное выделение

ОНО!!!
Спасибо!!!

А можно пару слов по поводу "с помощью ScriptListener'а можно подсмотреть "...

P.S. А че, почти у всех скриптинг - отдельный форум, а у PS - здесь...
 
Ответ: Скриптинг. Эллипсное выделение

Инфу по ScriptListener нашел!!!...
 
Ответ: Скриптинг. Эллипсное выделение

Ой! не-не-не...
Тот источник твердит, что просто нужно переписать ScriptListener.8li в Plug-ins и ВСЕ...
Но!!! Либо этого не достаточно, либо я не там ищу логи (в папке Adobe?..).
Подсажите, пожалуйста, как это все корректно оформить (а затем пользоваться)
 
Ответ: Скриптинг. Эллипсное выделение

Все! Нашел в ПДФнике в <Scripting Guide> (на этот раз уже и проверил :))
Только там написано, че он в Винде на Ц:\ кидает, а у мя на стол пишет, как, по его строкам, должно быть в Маках...
Но все-равно получилась БОМБА!!!
Всем спасибо!!! и 2 Zest

Мы Закрываемся...

P.S.
А тему закрвает кто, я или модератор?
И еще:
а че это в моем сообщении такое?
"Последнее редактирование от Kot Pafnuty : Сегодня в 20:32. " или Кот - это модератор?
 
Ответ: Скриптинг. Эллипсное выделение

Не понимаю ритуала закрытия тем. Кончилось обсуждение - ну и кончилось.

Что касается ScriptListener'a то его надо переписать в папку PlugIns и перезапустить ФШ. Чтобы не мувать файл туда-сюда, можно просто переименовывать по общему адобскому правилу: файлы начинающиеся на ~ (тильда) программа игнорирует.

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

Если вам нужен форум по скриптам для ФШ, идите сюда http://www.ps-scripts.com/bb/
 
Ответ: Скриптинг. Эллипсное выделение

Не понимаю ритуала закрытия тем. Кончилось обсуждение - ну и кончилось.

Не по теме:
Zest, так ведь я и не закрываю. Предпочитаю, чтобы они умирали естественной смертью. '))'

Ну, разве что в редких отдельных случаях и по веским причинам. ;)

 
Ответ: Скриптинг. Эллипсное выделение


Не по теме:
Такого рода форумы это эволюция тикетной системы использющейся по сей день в различного рода тех-поддержке. Вы оформляете жалобу в виде тикета, тикет открывается, вопрос обсуждается, обсуждение хранится в виде отдельных сообщений расположенных строго хронологически, список тикетов - аналогично, проблема решена - тикет закрывается. Например у любого хостера есть такая система. Но там дело техническое, юридическое, а тут - жизнь. На любой закрытый вопрос найдется новый вопрошающий. Тикет открывается и все по новой... так лучше он пусть и будет открытый.
 
Статус
Закрыто для дальнейших ответов.