[AI CC-CC2021] [CS6] Рандомизация цвета.

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

КоньЕстДетей

Топикстартер
10 лет на форуме
Сообщения
1 804
Реакции
927
Добрый день, граждане!

Мне давеча понадобилось решить, казалось бы, простую задачу, но ручками это делается очень долго, поэтому вопрошаю к вам, авось найдется рыцарь и спасет коня.

Суть проблемы такая: имеется N объектов, раскрашенных одним цветом (в примере черным, но не суть).
Задача: сделать так, чтоб каждый объект имел ЛЮБОЙ УНИКАЛЬНЫЙ* цвет.
Сферический пример:


Пояснение:
*в последующем это раскрашивается по определенной палитре цветов, поэтому цвета на данном этапе могут быть любыми, главное, чтоб не повторялись.
Собственно ищу какой-либо способ автоматизации этого действа (скрипт, макрос, аддон, волшебство) ибо вручную можно задолбаться.

Спасибо заранее спасителю :3
 

Вложения

  • zz.jpg
    zz.jpg
    84.6 КБ · Просм.: 1 172
Последнее редактирование модератором:

dumbm1

10 лет на форуме
Сообщения
421
Реакции
196
Для RGB (уникальность каждого цвета достигается за счёт использования уникальности ключей js объекта):
Код:
//@target illustrator
randUniqRGB();
function randUniqRGB (){
  var obj = {
    length: function() {
      var i = 0;
      for (var key in this) {
        if (typeof this[key] == 'string') {
          i++;
        }
      }
      return i;
    }
  }
  var sel = selection;
  for (var j = 0; j < selection.length; j++) {
    var r       = rndInt(0, 255);
    var g       = rndInt(0, 255);
    var b       = rndInt(0, 255);
    var resRGB  = '' + r + ',' + g + ',' + b;
    obj[resRGB] = resRGB;
  }
  while (sel.lenght > obj.length()) {
    r           = rndInt(0, 255);
    g           = rndInt(0, 255);
    b           = rndInt(0, 255);
    resRGB      = '' + r + ',' + g + ',' + b;
    obj[resRGB] = resRGB;
  }
  var n = 0;
  for (key in obj) {
    if (typeof obj[key] == 'string') {
      var item       = sel[n];
      var col        = new RGBColor();
      col.red        = +key.split(',')[0];
      col.green      = +key.split(',')[1];
      col.blue       = +key.split(',')[2];
      item.fillColor = col;
      n++;
    }
  }
  /**
   * random INTEGER number from min to max
   * @param {Number} min
   * @param {Number} max
   * */
  function rndInt(min, max) {
    var rand = min - 0.5 + Math.random() * (max - min + 1)
    rand     = Math.round(rand);
    return rand;
  }
}
 
Последнее редактирование:
Статус
Закрыто для дальнейших ответов.