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

eugeny

15 лет на форуме
Сообщения
859
Реакции
210
Когда обьект рисуется по коррдинатам - зачем его выравнивать, когда можно сразу нарисовать в нужном месте?

Ну для флексы создаются две технические направляющие (лыжи/рельсы). Определенные элементы на них должны быть выровнены друг относительного друга. Можно, конечное, координаты запоминать.

Потом на примере этой функции можно создать функцию "разместить после группы элементов, отступив на шаг". Я бланк согласования так создаю. Ну не знаю я заранее какой длины будет название клиента, или название пантона. Пример, аккуратно расположить столбики с названиями цветов, не задумываясь о длине пантонов:
Screenshot_53.jpg
 

ACTPOHOM

Топикстартер
12 лет на форуме
Сообщения
2 981
Реакции
1 133
Вчера пытался разобраться со свотчами.
долепил к созданию цвета кусок со свотчами.
но обхект окрашивается все равно просто cmyk а не свотчем.
Код:
var COLOR_RED = usercolor("COLOR_RED", 0, 100,100,0);

parametrShape(obj1, true, COLOR_RED, true, COLOR_RED, true, true)
var obj2 = myDocument.pathItems.polygon (150, 288, 72.0, 6);


function usercolor(name, cyan, magenta, yellow, black) {
   var colorname = new CMYKColor;
   colorname.cyan = cyan;
   colorname.magenta = magenta;
   colorname.yellow = yellow;
   colorname.black = black;

    var Swatch = app.activeDocument.swatches.add()
    Swatch.name =  name;
    Swatch.color = new CMYKColor;
    Swatch.color = colorname;

    return colorname;

}
 

Вложения

  • Screen Shot 2019-05-24 at 09.44.02.png
    Screen Shot 2019-05-24 at 09.44.02.png
    33.9 КБ · Просм.: 337

ACTPOHOM

Топикстартер
12 лет на форуме
Сообщения
2 981
Реакции
1 133
Процедура возвращает color а не swatch
но почему объекты не красятся возвращенным Swatch ?
Код:
var myDocument = app.documents.add();
var myTextFrame = myDocument.textFrames.add();


var COLOR_RED = usercolor("COLOR_RED", 0, 100,100,0);
var COLOR_GRAY = usercolor("COLOR_GRAY", 0, 0, 0, 50);
var newcolor4 = usercolor("newcolor4", 100, 100, 0, 0);

//рисуем объекты

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

var obj2 = myDocument.pathItems.polygon (150, 288, 72.0, 6);
parametrShape(obj2, true, COLOR_GRAY, true, COLOR_GRAY, true, true, )






function parametrShape(obj, strok, strcolor, filled, fillcolor, strOver, fillOver)
{
    obj.stroked = strok;
    obj.strokeColor = strcolor;
    obj.filled = filled;
    obj.strokeOverprint = strOver;
    obj.fillOverprint = fillOver ;
    obj.fillColor = fillcolor;

}

// конструктор цвета
function usercolor(name, cyan, magenta, yellow, black) {
     var Swatch = app.activeDocument.swatches.add()
    Swatch.name = name;
    Swatch.color = new CMYKColor;
    Swatch.color.cyan = cyan;
    Swatch.color.magenta = magenta;
    Swatch.color.yellow = yellow;
    Swatch.color.black = black;

    return Swatch.color;

}
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
но почему объекты не красятся возвращенным Swatch ?
Сходу не пойму, но обращаю твое внимание на еще один основополагающий принцип программирования: никогда не называй переменные именами известных классов, методов и свойств. Вот обрати внимание у тебя локальная переменная называется Swatch, а ведь это имя стандартного класса!
 

ACTPOHOM

Топикстартер
12 лет на форуме
Сообщения
2 981
Реакции
1 133
Да, согласен, имя поправил.

var UserSwatch = app.activeDocument.swatches.add()
UserSwatch.name = name;
UserSwatch.color = new CMYKColor;
UserSwatch.color.cyan = cyan;
UserSwatch.color.magenta = magenta;
UserSwatch.color.yellow = yellow;
UserSwatch.color.black = black;

return UserSwatch.color;
 

_MBK_

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

ACTPOHOM

Топикстартер
12 лет на форуме
Сообщения
2 981
Реакции
1 133
не помогло.
Объекты нужного цвета, как ни странно, но не привязаны к swatch
я что-то упускаю. надо штудировать референсы. но с английским тяжко идет
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
А вот тут начинается шаманство.
Попробуй вот так:

JavaScript:
usercolor("COLOR_RED", 0, 100,100,0);
var COLOR_RED =doc.swatches.getByName("COLOR_RED").color;
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Хотя нифига - сейчас запустил твой код - у меня работает нормально
118838
 

ACTPOHOM

Топикстартер
12 лет на форуме
Сообщения
2 981
Реакции
1 133
Почему же у меня нет...
 

Вложения

  • Screen Shot 2019-05-24 at 10.56.50.png
    Screen Shot 2019-05-24 at 10.56.50.png
    122.2 КБ · Просм.: 447

eugeny

15 лет на форуме
Сообщения
859
Реакции
210
может подразумевается, что это должно выглядеть вот так:
Screenshot_54.jpg

Но тогда нужно немного изменить код.
 

ACTPOHOM

Топикстартер
12 лет на форуме
Сообщения
2 981
Реакции
1 133
Ну мне интересно, почему цвет создан как свотч, и обхект красится этим цветом, но объект не привязан к свотчу,
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Хотя нифига - сейчас запустил твой код - у меня работает нормально
А нет поторопился. Работает почему то только с серым, красный не привязывает - шайтанство!
Попробуй тогда так
usercolor("COLOR_RED", 0, 100,100,0); var COLOR_RED =doc.swatches.getByName("COLOR_RED").color;
 

ACTPOHOM

Топикстартер
12 лет на форуме
Сообщения
2 981
Реакции
1 133
тоже самое, но у меня даже серый не привязывает.

вот целиком код, может что-то упустил ?

Код:
var myDocument = app.documents.add();
var myTextFrame = myDocument.textFrames.add();


usercolor("COLOR_RED", 0, 100,100,0);
var COLOR_RED =myDocument.swatches.getByName("COLOR_RED").color;


//var COLOR_RED = usercolor("COLOR_RED", 0, 100,100,0);
var COLOR_GRAY = usercolor("COLOR_GRAY", 0, 0, 0, 50);
var newcolor4 = usercolor("newcolor4", 100, 100, 0, 0);

//рисуем объекты

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

var obj2 = myDocument.pathItems.polygon (150, 288, 72.0, 6);
parametrShape(obj2, true, COLOR_GRAY, true, COLOR_GRAY, true, true, )






function parametrShape(obj, strok, strcolor, filled, fillcolor, strOver, fillOver)
{
    obj.stroked = strok;
    obj.strokeColor = strcolor;
    obj.filled = filled;
    obj.strokeOverprint = strOver;
    obj.fillOverprint = fillOver ;
    obj.fillColor = fillcolor;

}


// конструктор цвета
function usercolor(name, cyan, magenta, yellow, black) {
    var UserSwatch = app.activeDocument.swatches.add()
    UserSwatch.name = name;
    UserSwatch.color = new CMYKColor;
    UserSwatch.color.cyan = cyan;
    UserSwatch.color.magenta = magenta;
    UserSwatch.color.yellow = yellow;
    UserSwatch.color.black = black;

    return UserSwatch.color;

}
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Я проверил, у меня не работает тоже. Как я понимаю, засада в том, что если создавать свотч с уже имеющимся в свотчах цветом, то назначается тот свотч, который первее в списке. Добро пожаловать в Индию!
 

eugeny

15 лет на форуме
Сообщения
859
Реакции
210
проблема в том, что у вас в палитре свотчей наверняка два цвета с одинаковыми параметрами. Причем один с названием
COLOR_RED
 

eugeny

15 лет на форуме
Сообщения
859
Реакции
210
как я показывал на картинке может имеет смысл создавать process color?
Screenshot_54.jpg