Скрипт для выравнивания текста слоя в центр другого опорного слоя - PullRequest
1 голос
/ 16 января 2020

Содержимое к текстовому слою добавляется из CSV-импорта. Некоторые из них короткие, а некоторые длинные, содержат 2 слова и занимают 2 строки в слое. Что мне нужно, это после добавления контента, слой должен быть выровнен по горизонтали и вертикали с другим слоем. Я хочу выполнить это выравнивание с помощью сценария.

var doc = app.activeDocument;
var grps = doc.layerSets;
var pnamegrp = grps.getByName('Group 1');
var childlyr = pnamegrp.layers.getByName('child');
childlyr.textItem.contents = pname; //come from a csv file 

var parentlyr=  pnamegrp.layers.getByName('ReferenceRectangle');
Align_HorizCenter_VerticalCenter_withreference( childlyr , parent);


function Align_HorizCenter_VerticalCenter_withreference( child, parent){
  //need help to write this
}

Я использую Photoshop cc 2015 и JavaScript jsx file scripting.

1 Ответ

0 голосов
/ 18 января 2020

Просто если кто-то ищет решение. Перевести это метод для перемещения слоя. Количество пикселей, которые нужно переместить, можно определить по разнице в ширине между целевым и опорным слоями.

var startRulerUnits = app.preferences.rulerUnits;
app.preferences.rulerUnits = Units.INCHES;

var doc = app.activeDocument; 
var grps = doc.layerSets;
var pnamegrp = grps.getByName('Group 1');
var pnamelyr= pnamegrp.layers.getByName('pname'); //target
var pnameREF = pnamegrp.layers.getByName('Rectangle 1'); //reference var    LB = pnameREF.bounds;
var RWidth = (LB[2].value) - (LB[0].value);
var RHeight = (LB[3].value) - (LB[1].value);
pnamelyr.textItem.contents = pnamearr[i];
LB = pnamelyr.bounds;
TWidth = (LB[2].value) - (LB[0].value);
THeight = (LB[3].value) - (LB[1].value);



var OffsetX =  (RWidth - TWidth)/2;
var OffsetY =  (RHeight -  THeight)/2;


pnameTGT.translate(OffsetX,OffsetY); //move layer by offset pixels from the current position    
...