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

  • Автор темы Автор темы ACTPOHOM
  • Дата начала Дата начала
Все это просто замечательно, но, к сожалению, в случае адобовского жабаскрипта это недостижимая роскошь: валидность некоторых операций можно проверить только сгенерировав ошибку.
не доводим до ошибки проверкой валидных свойств.
 
Ну сейчас лениво вспоминать, но, например, вполне возможна ситуация, когда ранее вполне валидный обьект внезапно прекратил свое существование и обоащение к нему в лучшем случае вызывает ошибку а в худшем - крэш. Справедливости ради, надо сказать, что лидер по подобным капканам все таки фотошоп, его идеология action - сплошное минное поле с завязанными глазами
 
И снова я, и снова с нубским вопросом.
Почему не работает вызов функции ?
Код:
var myDocument = app.documents.add();
var myTextFrame = myDocument.textFrames.add();


var arraySpots = app.activeDocument.spots;



newSPOTcolor("Cut", 0, 100, 100, 0);    // это работает
newSPOTcolor("Crease", 100, 100, 0, 0);  // это работает
newSPOTcolor("Regmark", 0  , 0, 0, 100);   // это работает


var obj1 = myDocument.pathItems.polygon (100, 100, 72.0, 6);
obj1.filled = true;

obj1.fillColor = newSPOTcolor("newColor", 100, 0, 0, 0);  // НО  это почему не рабюотает ?





//создание SPOT цвета
function newSPOTcolor(name, c,m,y,k) {

     var newSpot = app.activeDocument.spots.add();
          newSpot.name = name;
          newSpot.colorType = ColorModel.SPOT;
          newSpot.color = new CMYKColor;
          newSpot.color.cyan = c;
          newSpot.color.magenta = m;
          newSpot.color.yellow = y;
          newSpot.color.black = k;
     return newSpot;

}
 

Вложения

  • Screen Shot 2019-05-27 at 12.26.11.png
    Screen Shot 2019-05-27 at 12.26.11.png
    29.7 КБ · Просм.: 501
Ты точно читаешь невнимательно. Глянь пример сообщением выше. Где у тебя созддание SpotColor?
 
Ты точно читаешь невнимательно. Глянь пример сообщением выше. Где у тебя созддание SpotColor?
я просто не вкурил, разницу между классами Spot и SpotColor до сих пор.


вызов заработал, даже красит спотом, но не привязывается к объекту в библиотеке свотчей


Код:
var obj1 = myDocument.pathItems.polygon (100, 100, 72.0, 6);
obj1.filled = true;
var newSpotColor = newSPOTcolor("newColor1", 100, 100, 0, 0);
obj1.fillColor = newSpotColor;

//создание SPOT цвета
function newSPOTcolor(name, c,m,y,k) {

    var newSpot = app.activeDocument.spots.add();
    newSpot.name = name;
    newSpot.colorType = ColorModel.SPOT;
    newSpot.color = new CMYKColor;
    newSpot.color.cyan = c;
    newSpot.color.magenta = m;
    newSpot.color.yellow = y;
    newSpot.color.black = k;

    var newSpotColor = new SpotColor(); //создаем экземпляр класса SpotColor с именем newSpotColor
    newSpotColor.spot = newSpot;  // присваиваем ему характеристики newSpot
    newSpotColor.tint = 80;

    return newSpotColor;

}
 
К свотчам и не должно привязываться. Мы ж вроде договорились что забываем про свотчи?
 
Понял, радуюсь пока нормальному созданию спотов, это уже хорошо;
 
@_MBK_ Спасиоь большое за терпение и разъяснение.

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

Код:
function createPolygon (x, y, r, side, filled, stroked, fColor, sColor) {

    var obj = myDocument.pathItems.polygon (x, y, r, side);
    obj.filled = filled;
    obj.stroked = stroked;
    obj.fillColor = fColor;
    obj.strokeColor = sColor;

}


//создание SPOT цвета
function newSPOTcolor(name, c,m,y,k, tint) {

    var newSpot = app.activeDocument.spots.add();
    newSpot.name = name;
    newSpot.colorType = ColorModel.SPOT;
    newSpot.color = new CMYKColor;
    newSpot.color.cyan = c;
    newSpot.color.magenta = m;
    newSpot.color.yellow = y;
    newSpot.color.black = k;

    var newSpotColor = new SpotColor(); //создаем экземпляр класса SpotColor с именем newSpotColor
    newSpotColor.spot = newSpot;  // присваиваем ему характеристики newSpot
    newSpotColor.tint = tint;

    return newSpotColor;

}
 
Последнее редактирование:
есть вопрос.

у меня скрипт меняет недопустимые символы на подчеркивания
.replace(/&/g, '_')
есть возможность так же выступить с заменой символа ' (тилда) ?
 
есть вопрос.

у меня скрипт меняет недопустимые символы на подчеркивания
.replace(/&/g, '_')
есть возможность так же выступить с заменой символа ' (тилда) ?
Да. А что мешает?
 
Код:
'.replace(/'/g, '_')

// дело в том, что '  воспринимается как открытая кавычка, как ее прикрыть, что бы она поспринималась символом ?
 
коварные клиенты шлют названия файлов как им вздумается, и некоторое програмное обеспечение впадает в ступор увидев такие файлы
 
Так экранировать надо. Как ты формулируешь грепзапрос на замену кавычек?
 
Это смартнейма в виде JavaScript в которую передается имя файла, и возвращает значение уже с заменой.


Код:
var transliterate = function(text) {

    text = text
           .replace(/&/g, '_')
        .replace(/__/g, '_')
        .replace(/;/g, '_')
        .replace(/!/g, '_')
        .replace(/%/g, '_')
        .replace(/&#8216/g, '_')
        .replace(/&#8217/g, '_')
        .replace(/&#8242/g, '_')
        .replace(/@/g, '_');

    return text;
};transliterate('<<file/>>');
 
я попробовал вместо кавычек ставить их код, &#8242 но именно с этой кавычкой не срабатывает все равно
 
А если вот так
/\'/g
 
  • Спасибо
Реакции: ACTPOHOM
походу проблема не в коде. а именно в передаче этой строки в код.
я попробовал его так же вписать с экранированием прямо в скрипте, и он отличо заменился.
 

Вложения

  • Screen Shot 2019-06-06 at 11.56.00.png
    Screen Shot 2019-06-06 at 11.56.00.png
    67.6 КБ · Просм.: 480