[AI CC-CC2022] Задать имя монтажной области

  • Автор темы Автор темы dredj
  • Дата начала Дата начала
с тем же успехом можно как раз хардкодить любые единицы
 
Ответ прост - я этот кусок сляпал на коленке с утюга по памяти, а он внезапно заработал ;)
Странно, как?
 
ну он брал единицы из пресета, а не от линеек. 'hz'
 
ну вот так в общем (убрал индусский if заодно, и из цикла его вынес).
Код:
if (documents.length) {

    with (app.activeDocument)
    {

  var c = 1;
  switch(rulerUnits)
{  
       case RulerUnits.Millimeters: c=25.4/72; break; 
        case RulerUnits.Centimeters: c=2.54/72; break; 
       case RulerUnits.Inches: c=1/72; break;                
       case RulerUnits.Picas: c=6/72; break;                                     
       case RulerUnits.Qs: c=25.4*4/72;
}

      for (var i=0;i<artboards.length;i++)
      {
        var art=artboards[i];
        var rect=art.artboardRect;
        var w=rect[2]-rect[0];
        var h=rect[1]-rect[3];

        art.name=Math.round(w*c)+"-"+Math.round(h*c);
      }
    }
}
 
Последнее редактирование:
  • Спасибо
Реакции: Slx1
ну вот так в общем (убрал индусский if заодно, и из цикла его вынес).
Код:
if (documents.length) {

    with (app.activeDocument)
    {

  var c = 1;
  switch(rulerUnits)
{ 
       case RulerUnits.Millimeters: c=25.4/72; break;
        case RulerUnits.Centimeters: c=2.54/72; break;
       case RulerUnits.Inches: c=1/72; break;               
       case RulerUnits.Picas: c=6/72; break;                                    
       case RulerUnits.Qs: c=25.4*4/72;
}

      for (var i=0;i<artboards.length;i++)
      {
        var art=artboards[i];
        var rect=art.artboardRect;
        var w=rect[2]-rect[0];
        var h=rect[1]-rect[3];

        art.name=Math.round(w*c)+"-"+Math.round(h*c);
      }
    }
}

Круто! Еще о округляет математически правильно!!!
 
И все же, интересный теоретический вопрос - а что, так можно читать из любого класса? И какие значения будут?
 
И все же, интересный теоретический вопрос - а что, так можно читать из любого класса? И какие значения будут?

дефолтные (где они есть)

классов же в JS нет в обычном понимании, это все равно функции. .toSource() вот что показывает

(function DocumentPreset() { [native code] } )
 
Последнее редактирование:
  • Спасибо
Реакции: _MBK_
Все равно странно, что вообще работало, сейчас проверил, на CS6 DocumentPreset.rulerUnits всегда выдает поинты. Вообще говоря, чтобы получить независимые от документа установки, можно использовать например, preferences.getIntegerPreference("strokeUnits") //единицы измерения обводки
0-дюймы, 1-миллиметры. 2-пункты, 3-пики, 4-сантиметры и 6-пикселы
 
Так в твоем варианте и были всегда pt. Что странного?
А зачем получать независимые от документа, когда нужны текущие единицы с линеек, которые легко берутся из rulerUnits?
 
Так в твоем варианте и были всегда pt. Что странного?
А зачем получать независимые от документа, когда нужны текущие единицы с линеек, которые легко берутся из rulerUnits?
Например, если не открыто ни одного документа
 
Например, если не открыто ни одного документа

и какому артборду ты имя будешь менять? не говоря о том, что в начале сам же поставил проверку if(documents.length)

Странно что у топикстартера работало изначально

работало с pt независимо от установок линеек 'otbline''otbline''otbline''otbline'
 
и какому артборду ты имя будешь менять? не говоря о том, что в начале сам же поставил проверку if(documents.length)
Я не про этот конкретный случай, а вообще.
Сказал же что работало и перестало только при переходе на 2018 или я неправильно понял? 🤷‍♂️
 
да фиг знает, может только щас заметили