[AI CC-CC2022] Вопрос по скриптописанию

  • Автор темы Автор темы ACTPOHOM
  • Дата начала Дата начала
Но, как обычно, помогла моя секретная калитка в пустоте '))'
JavaScript:
usercolor("COLOR_RED", 0, 100,100,0);
var COLOR_RED =doc.swatches.getByName("COLOR_RED").color;
redraw();
usercolor("COLOR_GRAY", 0, 0, 0, 50);
var COLOR_GRAY = doc.swatches.getByName("COLOR_GRAY").color;
redraw();
 
Последнее редактирование:
Нет, не помогло. Один раз получилось странным образом, с нуля повторить не могу. Харе Кришна! 'hz'
 
Пока что вижу два варианта: 1) делать уникальные свотчи (без повторяющихся цветов) 2) назначать свотч через вызов экшна
 
я подозреваю, что проблема в возврате из функции создания цвета.
так как даже

var obj3 = myDocument.pathItems.polygon (250, 288, 72.0, 6);
obj3.fillColor = COLOR_RED;

не работает.

Если я верну просто объект return UserSwatch;
то функция создания объектов выпадает с ошибкой.

а возвращая return UserSwatch.color; я возвращаю только цвет свотча.

Вот тут как раз мне не хватает теории, но читать теорию без практики совсем бессмысленно
 
Последнее редактирование:
Как я предлагал через споты процессные — все работает. Вначале учитывает: если есть спот, то заново его не создает, а выбирает.

JavaScript:
var namespot="COLOR_RED";
var ProcSpotColor='';
var arraySpots=app.activeDocument.spots;
for(var i=0;i<arraySpots.length;i++){
    if (arraySpots[i].name==namespot)  ProcSpotColor=arraySpots[i];
    }

if(!ProcSpotColor) {ProcSpotColor=usercolorSpot(namespot, 0, 100,100,0);}

var obj1 = myDocument.pathItems.polygon (50, 188, 72.0, 5);
parametrShapeSpot(obj1, true, ProcSpotColor, true, ProcSpotColor, true, true)

function parametrShapeSpot(obj, strok, strcolor, filled, fillcolor, strOver, fillOver)
{
    obj.stroked = strok;
    
  var Spotcol =new SpotColor();
  Spotcol.spot=fillcolor;
   obj.fillColor=Spotcol;
   
    Spotcol =new SpotColor();
  Spotcol.spot=strcolor;
   obj.strokeColor = Spotcol;
 
    obj.filled = filled;
    obj.strokeOverprint = strOver;
    obj.fillOverprint = fillOver ;
    

}
function usercolorSpot(name, cyan, magenta, yellow, black){
     var newSpot = app.activeDocument.spots.add();
     newSpot.name = name;
     newSpot.colorType = ColorModel.PROCESS;
     
    newSpot.color = new CMYKColor;
    newSpot.color.cyan = cyan;
    newSpot.color.magenta = magenta;
    newSpot.color.yellow = yellow;
    newSpot.color.black = black;
         return newSpot;
    }
 
Мне надо понять, почему со свотчами не работает, а потом займусь спот свотчами.
самое интересное, если цвет создать без функции, то все нормально красится с привязкой.
 
Мне надо понять, почему со свотчами не работает, а потом займусь спот свотчами.
самое интересное, если цвет создать без функции, то все нормально красится с привязкой.
А так не получится.
Я создаю свотч MyRed (M:100 Y:100). Создаю объект крашу его в данный свотч, убираю выделениие с объекта, выбираю по умолчанию любой другой свотч, выделяю объект. Опа! выбран самый верхний свотч CMYK Red.
Пока у свотча не будет статус global, это не будет работать.
 
  • Спасибо
Реакции: _MBK_
Если писать напрямую два свотьча без функции, они прекрасно создаются и красят объекты.
вот пример
Код:
var col = new CMYKColor();
col.cyan = 2;
col.magenta = 3;
col.yellow = 15;
col.black = 0;

// Create the new swatch using the above color

var MYswatch1 = myDocument.swatches.add();
MYswatch1.color = col;
MYswatch1.name = "ONE";

var col2 = new CMYKColor();
col2.cyan = 100;
col2.magenta = 3;
col2.yellow = 0;
col2.black = 0;

var MYswatch2 = myDocument.swatches.add();
MYswatch2.color = col2;
MYswatch2.name = "TWO";


var obj3 = myDocument.pathItems.polygon (0, 0, 72.0, 6);
obj3.filled = true;
obj3.fillColor = MYswatch1.color;

var obj4 = myDocument.pathItems.polygon (110, 0, 72.0, 4);
obj4.filled = true;
obj4.fillColor = MYswatch2.color;
 

Вложения

  • Screen Shot 2019-05-24 at 14.20.24.png
    Screen Shot 2019-05-24 at 14.20.24.png
    79 КБ · Просм.: 451
col.cyan = 2; col.magenta = 3; col.yellow = 15; col.black = 0; // Create the new swatch using the above color var MYswatch1 = myDocument.swatches.add(); MYswatch1.color = col; MYswatch1.name = "ONE"; var col2 = new CMYKColor(); col2.cyan = 100; col2.magenta = 3; col2.yellow = 0; col2.black = 0;

Так этих свотчей в таблице гарантированно нет. А красный и серый есть.
 
  • Спасибо
Реакции: eugeny и ACTPOHOM
Так вот оно что..
 
Ты сегодня на редкость невнимателен
Как я понимаю, засада в том, что если создавать свотч с уже имеющимся в свотчах цветом, то назначается тот свотч, который первее в списке.
проблема в том, что у вас в палитре свотчей наверняка два цвета с одинаковыми параметрами. Причем один с названием
COLOR_RED
 
А так не получится.
Я создаю свотч MyRed (M:100 Y:100). Создаю объект крашу его в данный свотч, убираю выделениие с объекта, выбираю по умолчанию любой другой свотч, выделяю объект. Опа! выбран самый верхний свотч CMYK Red.
Пока у свотча не будет статус global, это не будет работать.
Как сделать его глобалом ?
 
я уже и сам не знаю.
судя по всему свотчи нуны разве что когда у нас споты. типа меток кроя, регистрации и т.п.
 
Я тоже не пойму нахрена ты со свотчами заморочился вообще. Свотчи нужны для быстрой перекраски, индусы придумали этот кривой костыль от собственной лени.
 
:) сейчас уже котелок не варит.
В понедельник засяду изучать, буду и вас мучить )