В большинстве объектов Adobe свойства координат хранятся в типе UnitValue, который позволяет извлекать значения в удобных единицах измерения, дальше попытаюсь рассказать об использовании.
Для правильной работы прежде всего необходимо задать коэффициент базовой величины:
UnitValue.baseUnit = UnitValue (1/300, "in"); //-- Для правильной работы .as('...')
Значение 300, я так полагаю это DPI, поэтому будет наверное лучше указать в зависимости от DPI документа, но мне нужно именно 300, так как с таким разрешением я вывожу на принтер. Для экрана соответственно нужно 72. Дальше уже можно работать с конвертацией сантиметров в пиксели, например:
val12 = new UnitValue (12, "cm"); //-- создаем переменную типа UnitValue в сантиметрах
alert(val12.as('px')); //-- выводим преобразованную величину.
Ну, или узнать ширину слоя в пикселях:
var _docRef=app.activeDocument;
var layerW=new UnitValue(_docRef.activeLayer.bounds[2] -_docRef.activeLayer.bounds[0], 'px');
При попытке напрямую получить значение, которое хранится в UnitValue будет отдано значение с единицами измерения.
Например:
alert(layerW)
Поэтому будут глюки при вычислениях. Если нужно просто получить значение, не приводя ни к каким единицам, то следует поступать так:
alert(layerW.value);
Вот в общем то и всё
4 комментария