[ID CC-CC2021] Как поменять цвет объекта

UserD

Топикстартер
15 лет на форуме
Сообщения
48
Реакции
1
Добрый день.
Пытаюсь поменять цвет объекта через
Код:
.fillColor.colorValue = []
В результате меняется цвет у всех объектов с идентичным цветом. :(
Как же поменять цвет, не прибегая к
Код:
.colors.add()
А если уж никак, то можно ли скрыть этот новый цвет из палитры Swatches?
 
Последнее редактирование:

eugeny

15 лет на форуме
Сообщения
859
Реакции
210
Если цвет есть в списке свотчей, то можно получить массив всех цветов:
Код:
  var swats=docRef.swatches;
Я на основе этого создаю свой массив:
Код:
  colorswat[colorswat.length]=[swats[i].name,swats[i]];
И с ним оперирую.
Если цвета нет в свотчах, то для process-цвета вот пример:
Код:
 var newColor=docRef.colors.add({name:'Имя', model:ColorModel.process,colorValue:[100,30,20,0]});

Вы в своем случае
Код:
 fillColor.colorValue = []
переопределяете отображение конкретного свотча, т.е. изменяете ему цвет отображения на экране.
Как скрыть не знаю, но при попытке удалить — он удалится с объектов, где используется.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Добрый день.
Пытаюсь поменять цвет объекта через
Код:
.fillColor.colorValue = []
В результате меняется цвет у всех объектов с идентичным цветом. :(
Не совсем понимаю, какая религия мешает сделать так, как советуют каноничные примеры:
var colorRef = new RGBcolor;
obj.fillColor=colorRef;
 

UserD

Топикстартер
15 лет на форуме
Сообщения
48
Реакции
1
Спасибо всем за соучастие! :)
Небольшое уточнение к ТЗ: нужно создать n-объектов с близким по значению цветом. Каждый раз добавлять через
Код:
.colors.add()
новый Swatch как-то не кошерно: уж больно много получится их :(
Но, реализовано же как-то изменение цвета из палитры Colors без добавления оного в Swatches...
Аналогичная задача в Illustrator-е решается правильно
Код:
.fillColor.magenta = 75
':(8'Возможно это ("глобальность" цвета, удаление цвета объекта при удалении из Swatches) особенность InDes-а, а может это глюк конкретной CC2015-версии.
Может есть возможность проверить на других версиях?
 

eugeny

15 лет на форуме
Сообщения
859
Реакции
210
Но, реализовано же как-то изменение цвета из палитры Colors без добавления оного в Swatches...
Аналогичная задача в Illustrator-е решается правильно
В этом вся и загвоздка, я когда адаптировал скрипт из Иллюстратора в Индизайн сам немного охренел от этих "косметических" отличий при работе с объектом Цвет. '8()'
Задачи у программ разные, поэтому и реализация разная. Я писал в Иллюстраторе отдельную функцию выравнивания двух объектов относительно друг друга -- убил прилично времени, а в Индизайне оказалось все гораздо проще -- написал за 10 мин.
 

UserD

Топикстартер
15 лет на форуме
Сообщения
48
Реакции
1
В догонку пара уточнений:
1. Каждый раз при изменении цвета меняется (увеличивается) .fillColor.id. Видимо, этим и опроеделяется "глобальность" цвета...
2. А разница между цветом из палиты Swatches, и тем, который в ней не отображается, видимо, в .fillColor.parentColorGroup (=="null" для скрытых).
Только вот присвоить .fillColor.parentColorGroup = null не получаться (parentColorGroup - readonly) 'hmmm'
 

eugeny

15 лет на форуме
Сообщения
859
Реакции
210
@UserD,
Нюанс в том, что при создании/добавлении docRef.colors.add -- цвет добавляется в Swatches.
В Иллюстраторе этого не происходит, надо дополнительно добавлять в docRef.swatches.add.
 

UserD

Топикстартер
15 лет на форуме
Сообщения
48
Реакции
1
Упдате II
На просторах паутины нашлось следующее:
There'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.
Вопрос закрыт :(