Скрипт для выравнивания текстового слоя по центру другого эталонного слоя

Содержимое текстового слоя добавляется из импорта 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.


person Codplay    schedule 16.01.2020    source источник
comment
Что вы пробовали? Что не сработало? Что вы застряли с? На данный момент это выглядит как описание работы, а не как вопрос   -  person Sergey Kritskiy    schedule 16.01.2020


Ответы (1)


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

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    
person Codplay    schedule 18.01.2020