[ID CC-CC2021] Задание цвета линии с помощью JS

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 137
Реакции
10 835
Но хотелось бы понять - неужели нельзя решить эту задачу не через создание нового swatch, а просто нарисовать линию сразу нужного цвета или нарисовать линию любого цвета из swatch, а потом изменить ей цвет на нужный?
Не совсем пойму, в чем проблема то
JavaScript:
var myDocument=app.activeDocument;
var rect = myDocument.pages.item(0).rectangles.add({geometricBounds:[0,0,100,100]});
rect.fillColor.colorValue=[250,0,0];
Более того, обнаружил, что, оказывается это проблема проблем 'fp'
here's two types of colors in InDesign: named colors, and unnamed colors. Named colors show in the swatches panel, and unnamed colors don't.
There's no way to apply a unnamed color directly via scripting.
Harbs. Adobe Forums
That means you always have to create a swatch.
 

koros

Участник
Топикстартер
Сообщения
71
Реакции
4
_MBK_, Ваш скрипт не работает. Но я уже понял, что цвет можно менять только через свотч((
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 137
Реакции
10 835

koros

Участник
Топикстартер
Сообщения
71
Реакции
4
10.png
Indesign CC 14.0.1 x32
Ваш код, не изменяя, вставил в свой скрипт.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 137
Реакции
10 835
Посмотрите в отладчике, сразу после строки
Код:
var rect = myDocument.pages.item(0).rectangles.add({geometricBounds:[0,0,100,100]});
свойство rect.fillColor имеет какой класс - Сolor или Swatch ?
Если Swatch то значит без вариантов.
Суть индусского бага - нельзя просто так взять и создать объект класса Color, он автоматически становится объектом класса Swatch, у которого нет свойства colorValue вообще, однако, (во всяком случае в CS6) по умолчанию объект, созданный без задания цвета, создается с данным свойством класса Color последнего используемого цвета без создания свотча.
Как я понимаю, то же самое происходит при ручном редактировании заливки - она становится класса Color которому можно непосредственно присваивать fillColor
Но, возможно, в более поздних версиях индусы эту фичу пофиксили
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 137
Реакции
10 835
В самом индизайне, естественно, никакого отладчика нет, у вас должен быть ESTK установлен.
Или вы в блокноте скрипты редактируете?
Если так то просто алерт поставьте alert(rect.fillColor);
 

Oleg Butrin

20 лет на форуме
Сообщения
1 989
Реакции
1 213
Использовать цвет без создания swatch можно, хотя и через задний ход.
Для этого достаточно создать вручную любой pageItem и присвоить ему любой цвет, а не swatch. Затем скриптом можно создавать сколько угодно объектов, указывая в качестве fillColor или strokeColor цвет исходного.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 137
Реакции
10 835

koros

Участник
Топикстартер
Сообщения
71
Реакции
4
_MTK_
Выдает Swatch.
Значит придется делать новый свотч, а затем удалять его.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 137
Реакции
10 835

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 137
Реакции
10 835

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 137
Реакции
10 835
Как оказалось, дело вовсе не в версии.
Объект создается по умолчанию с текущим выбранным цветом. Если на момент создания объекта в палитре Swatches выделен какой то свотч, то объект создается с такой заливкой и класс свойства fillColor - Swatch
Но если в палитре Swatch ничего не выделено (например если взять пипетку и ткнуть в спектр в окне цветов) - то fillСolor будет класса Color и редактируемым, мой код будет работать.
Осталось самая малость - программно убрать выделение в окне Swatches
 

koros

Участник
Топикстартер
Сообщения
71
Реакции
4
Осталось самая малость - программно убрать выделение в окне Swatches
Я так понимаю, что это сделать через скрипт не получится?

Подскажите, пожалуйста, как через JavaScript удалить Образец и заменить на безымянный образец?
Если я использую
JavaScript:
myRegistrationColor.remove();
то образец mySwatchColor удаляется, но заменяется на Черный.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 137
Реакции
10 835
Я так понимаю, что это сделать через скрипт не получится?
Возможно
Подскажите, пожалуйста, как через JavaScript удалить Образец и заменить на безымянный образец?
Если я использую
Тото и оно, что безымянных свотчей не бывает. При программном удалении одного свотча заменяется на другой - это тупиковый путь.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 137
Реакции
10 835
Вот это через JavaScript реализовать нельзя?
Нет
Возможно программно убрать выделение в окне Swatches? А как?
Возможно, что и невозможно. Во всяком случае, пока что вразумительного ответа на данный вопрос я не нашел, надо копать.
 
  • Спасибо
Реакции: koros

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
В целом проблема надуманная. Если свотчи мешаются в панели, их можно в группу засунуть и закрыть ее