Взятие цвета экшеном или скриптом?

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

chesen

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

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
Ответ: Взятие цвета экшеном или скриптом?

как-то так
Код:
var colorSamplerRef = app.activeDocument.colorSamplers.add([x,y]); 
app.backgroundColor=colorSamplerRef.color;
colorSamplerRef.remove();

x,y меняем на нужные координаты
 

chesen

Топикстартер
15 лет на форуме
Сообщения
553
Реакции
49
Ответ: Взятие цвета экшеном или скриптом?

Огромное спасибо! Попробую в бою.
Наверное, надо будет пару строк дописать для установок координат-мм., пиксели или проценты.
А то у меня из-за скриптов единицы меняются.
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
Ответ: Взятие цвета экшеном или скриптом?

да можно проще

Код:
var colorSamplerRef = app.activeDocument.colorSamplers.add([UnitValue("100px"),UnitValue("200mm")]);
 

chesen

Топикстартер
15 лет на форуме
Сообщения
553
Реакции
49
Ответ: Взятие цвета экшеном или скриптом?

У меня CS2, при всех вариантах пишет "undefined is not an object"
Попытка усложнить не помогла...
Код:
var startRulerUnits = app.preferences.rulerUnits
var startDisplayDialogs = app.displayDialogs
var docRef = app.activeDocument;
var activeChannels = docRef.activeChannels;

app.preferences.rulerUnits = Units.PIXELS
app.displayDialogs = DialogModes.NO

var colorSamplerRef = app.activeDocument.colorSamplers.add([x,y]);
var x = 200;
var y = 200; 
app.backgroundColor=colorSamplerRef.color;
colorSamplerRef.remove();
 

chesen

Топикстартер
15 лет на форуме
Сообщения
553
Реакции
49
Ответ: Взятие цвета экшеном или скриптом?

Ругается на строку var colorSamplerRef = app.activeDocument.colorSamplers.add([x,y]);
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 229
Реакции
10 851
Ответ: Взятие цвета экшеном или скриптом?

Ну так правильно, вы ж сперва обращаетесь к переменным x и y а потом объявляете их! '))'
Надо
Код:
var x = 200;
var y = 200; 
var colorSamplerRef = app.activeDocument.colorSamplers.add([x,y]);
 

chesen

Топикстартер
15 лет на форуме
Сообщения
553
Реакции
49
Ответ: Взятие цвета экшеном или скриптом?

Возможно. Но даже в первом варианте
var colorSamplerRef = app.activeDocument.colorSamplers.add([x,y]);
app.backgroundColor=colorSamplerRef.color;
colorSamplerRef.remove();
та-же беда...
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 229
Реакции
10 851
Ответ: Взятие цвета экшеном или скриптом?

В первом варианте вообще x и y не определены. Попробуйте переставить как у меня - работает нормально.
 

chesen

Топикстартер
15 лет на форуме
Сообщения
553
Реакции
49
Ответ: Взятие цвета экшеном или скриптом?

Ничего не помогает. Напиште пж полный код. У меня ЦС2 версия шопа.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 229
Реакции
10 851
Ответ: Взятие цвета экшеном или скриптом?

У меня CS3. Попробуйте хотя бы так:
Код:
var startRulerUnits = app.preferences.rulerUnits
var startDisplayDialogs = app.displayDialogs
var docRef = app.activeDocument;
var activeChannels = docRef.activeChannels;

app.preferences.rulerUnits = Units.PIXELS
app.displayDialogs = DialogModes.NO

var colorSamplerRef = app.activeDocument.colorSamplers.add([200,200]);

app.backgroundColor=colorSamplerRef.color;
colorSamplerRef.remove();
 

chesen

Топикстартер
15 лет на форуме
Сообщения
553
Реакции
49
Ответ: Взятие цвета экшеном или скриптом?

Опять undefined is not an object
Кажется это связано с версией программы.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 229
Реакции
10 851
Ответ: Взятие цвета экшеном или скриптом?

Нужно разобраться.
Поменяйте
Код:
var colorSamplerRef = app.activeDocument.colorSamplers.add([200,200]);
на
Код:
var colorSamplerRef = app.activeDocument.colorSamplers;
Данная строка снова ошибку генерирует?
 

chesen

Топикстартер
15 лет на форуме
Сообщения
553
Реакции
49
Ответ: Взятие цвета экшеном или скриптом?

Теперь огрызается на app.backgroundColor=colorSamplerRef.color;
ПРи запуске с Toolkit виснет на первой же строке.
запускаю с меню.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 229
Реакции
10 851
Ответ: Взятие цвета экшеном или скриптом?

Уже радует. Значит в вашей модели colorSamplers присутствует хотя бы.
Возвращайте обратно, поставьте перед
Код:
var colorSamplerRef = app.activeDocument.colorSamplers.add([x,y]);
строку
Код:
alert(app.activeDocument.colorSamplers);
При запуске должно выскочить окошко предупреждения.
И последнее, совершенно дикое предположение. Надеюсь, перед тем как запустить скрипт вы открыли файл, у которого размер больше 200x200?
 

chesen

Топикстартер
15 лет на форуме
Сообщения
553
Реакции
49
Ответ: Взятие цвета экшеном или скриптом?

При запуске должно выскочить окошко предупреждения.
И последнее, совершенно дикое предположение. Надеюсь, перед тем как запустить скрипт вы открыли файл, у которого размер больше 200x200?
:)
выскакивает окно undefined
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 229
Реакции
10 851
Ответ: Взятие цвета экшеном или скриптом?

Пожалуй, тогда, действительно дело в старой модели. Должно выскочить [ColorSamplers] :(
 

chesen

Топикстартер
15 лет на форуме
Сообщения
553
Реакции
49
Ответ: Взятие цвета экшеном или скриптом?

В любом случае спасибо.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 229
Реакции
10 851
Ответ: Взятие цвета экшеном или скриптом?

Гм, и вправду, странно - нашел руководство по CS2, там такого свойства нету. :(
Сейчас подумаю, может как-то заменить можно.
 

chesen

Топикстартер
15 лет на форуме
Сообщения
553
Реакции
49
Ответ: Взятие цвета экшеном или скриптом?

Где-то попадался мне скрипт на эту тему. Что-то вроде лассо использовалось для уточнения цвета.
 
Статус
Закрыто для дальнейших ответов.