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

  • Автор темы Автор темы koros
  • Дата начала Дата начала
myColor будет null и будет сгенерирована ошибка при первом же duplicale
Можно ли как-нибудь избежать этого?

И еще вопрос - получается при каждом запуске скрипта будет создаваться новый безымянный свотч, который не удаляется?
 
Последнее редактирование:
Можно ли как-нибудь избежать этого?
Вообще говоря, я слегка поигрался - безымянные цвета есть даже в только что созданных пустых документах. В конце концов, если заменить строку var myColor =null; на var myColor =myDocument.colors[0]; то в самом худшем случае просто образуется очень много дополнительных свотчей, от чего, собственно мы и начинали
 
Вообще говоря, я слегка поигрался - безымянные цвета есть даже в только что созданных пустых документах.
Таки я спрашивал, возможна ли ситуация, когда пользователь специально удалил безымянные цвета?

в самом худшем случае просто образуется очень много дополнительных свотчей, от чего, собственно мы и начинали
Вот я и начинаю думать, может все-таки создавать видимый свотч с именем, которое будет ассоциироваться с метками. А дальше, если пользователь захочет, то просто удалит этот свотч. Добавочный слой-то с метками создается...
 
Таки я спрашивал, возможна ли ситуация, когда пользователь специально удалил безымянные цвета?
Как??? Я с трудом себе представляю алгоритм подобного процесса, вдобавок, как тут недавно говорили, выстрелить себе в ногу всегда можно.
Вот я и начинаю думать, может все-таки создавать видимый свотч с именем, которое будет ассоциироваться с метками. А дальше, если пользователь захочет, то просто удалит этот свотч. Добавочный слой-то с метками создается...
Если вам свотч нужен всего один исключительно на метки, тогда я вообще не пойму, для чего вы этот топик запилили и четвертый экран морочите нам голову 'P:E'
 
Комментарий модератора: Оффтоп о неторопливости скриптинга перенесён сюда.
 
Если вам свотч нужен всего один исключительно на метки, тогда я вообще не пойму, для чего вы этот топик запилили и четвертый экран морочите нам голову 'P:E'
Первоначально я хотел изменять цвет линий без использования Образцов, но благодаря этому топику стало ясно, что Indesign не дает этой возможности. Когда я понял, что для моей задачи не обойтись без Образцов, то захотел, чтобы после скрипта не оставалось лишних Образцов и только благодаря вашей помощи стало понятным, что существует в общем-то два варианта - создавать каждый раз при запуске скрипта безымянный swatch или создать именной swatch и оставить его после работы скрипта. Без вашей помощи я бы не смог разобраться во всем этом. Еще раз большое спасибо.
 
Не совсем так , точнее, вовсе наоборот - безымянный свотч создать нельзя, а мой вариант не создает никаких свотчей вообще а именно позволяет
изменять цвет линий без использования Образцов
соответственно иллюстрируя, что такая возможность в индизайне таки есть
 
  • Спасибо
Реакции: koros
процентовку меняйте под себя
JavaScript:
var myRegisttrationColor = myDocument.colors.add({name : "мой_серый_цвет", colorValue : [0,0,0,50] , model : ColorModel.PROCESS ,space : ColorSpace.CMYK });
Понимаю что поздновато ))
Но как бы перед добавлением цвета, проверить есть такой же или нет? (не по имени, а по CMYK)
Если нет, то добавить , а если нет то присвоить какой нить переменной уже существующий ))
Вот такое у меня, и нужно принять решение добавлять его или уже есть такой? )
JavaScript:
var cyan = parseInt(curFormat[9]);
var magenta = parseInt(curFormat[10]);
var yellow = parseInt(curFormat[11]);
var black = parseInt(curFormat[12]);
 
Понимаю что поздновато ))
Но как бы перед добавлением цвета, проверить есть такой же или нет? (не по имени, а по CMYK)
Если нет, то добавить , а если нет то присвоить какой нить переменной уже существующий ))
Вот такое у меня, и нужно принять решение добавлять его или уже есть такой? )
JavaScript:
var cyan = parseInt(curFormat[9]);
var magenta = parseInt(curFormat[10]);
var yellow = parseInt(curFormat[11]);
var black = parseInt(curFormat[12]);
Вот такая конструкция получилась
JavaScript:
function colorExists(cyan, magenta, yellow, black)
{
                var doc = app.activeDocument; // Получаем активный документ
                var colors = doc.colors; // Получаем все цвета в документе

                // Проходим по всем цветам и проверяем их значения
                for (var i = 0; i < colors.length; i++)
                {
                    var color = colors[i];
                    if (color.model === ColorModel.PROCESS && // Проверяем, что это процессный цвет
                        color.colorValue[0] === cyan &&
                        color.colorValue[1] === magenta &&
                        color.colorValue[2] === yellow &&
                        color.colorValue[3] === black)
                    {
                        return color; // Возвращаем объект цвета, если найден
                    }
                }
                return null; // Цвет не найден
}
// Проверка существования цвета
var existingColor = colorExists(cyan, magenta, yellow, black);
if (existingColor)
{
                var nameOfColor = existingColor.name; // Получаем название цвета
                // Присваиваем значения переменным
                cyan = existingColor.colorValue[0];
                magenta = existingColor.colorValue[1];
                yellow = existingColor.colorValue[2];
                black = existingColor.colorValue[3];
}
                else
                {
                    //alert("Цвет не найден в документе.");
                    var nameOfColor = "Color txt" + [j] + [i]
                    var newcmykColor = app.activeDocument.colors.add({ name: nameOfColor, colorValue: [cyan, magenta, yellow, black], model: ColorModel.PROCESS, space: ColorSpace.CMYK });
                }
fillColor = nameOfColor;
 
Ну по идее, неплохо было бы какой то допуск делать или хотя бы округлять до целого?
 
  • Спасибо
Реакции: ryzl
Ну по идее, неплохо было бы какой то допуск делать или хотя бы округлять до целого?
У меня в процессе назначения новых цветов есть такое

fcolor.cyan = Math.round(fcolor.cyan); // округляем значения до ближайшего целого
 
  • Спасибо
Реакции: _MBK_
чтоб засрать панель свотчей идентичными цветами
Это от засиральщика зависит. Если это несколько достаточно гладких переходов по цвету, то и свотчей может появиться больше чем при округлении до процентов.