- Сообщения
- 18
- Реакции
- 0
Всем привет. Объекты выравниваются по краю обводки. Не могу найти в настройках как это изменить и нигде в интернете тоже. Помогите!
Оно?Это, часом, не галка "use bounds" где-то в настройках?
Опоздавшая молодежь
Все зависит от того, что у вас за "код выравнивания".а через код как это сделать — убрать галочку?
а то я написал свой модуль выравнивания, а он берёт текущие настройки, и время от времени такая же фигня вылазит.
Скрипт. Пример работы: берет координаты первого выделенного объекта, допустим левый верхний угол. Берет второй объект и меняет его координату верхнего левого угла. Типа того.Все зависит от того, что у вас за "код выравнивания".
Ну у меня некорректно работает. Может я немного не так делаюА каким боком эта настройка здесь? Вы по боксам выравнивание, там есть отдельно боксы с учетом обводка и без.
function falign(newRect,newRect2, type,type2){
var deltaH=newRect2.height - newRect.height;
var deltaW=newRect2.width - newRect.width;
// ниже определяю куда выравнивать
var horiz=''; var vertikal='';
if(type=='TOP' || type=='BOTTOM') vertikal=type;
if(type=='LEFT' || type=='RIGHT') horiz=type;
if(type2=='TOP' || type2=='BOTTOM') vertikal=type2;
if(type2=='LEFT' || type2=='RIGHT') horiz=type2;
if(type=='CENTER' && type2=='CENTER') { horiz=vertikal=type; }
if(type=='CENTER' && type2!='CENTER') { if(!horiz) {horiz=type;} else if(!vertikal) vertikal=type; }
if(type2=='CENTER' && type!='CENTER') { if(!horiz) {horiz=type2;} else if(!vertikal) vertikal=type2; }
// далее выравниваю
switch(horiz){
case 'CENTER': newRect.left=newRect2.left+deltaW/2; break;
case 'LEFT': newRect.left=newRect2.left; break;
case 'RIGHT': newRect.left=right-newRect.width; break;
default: break;
}
switch(vertikal){
case 'CENTER': newRect.top=newRect2.top-deltaH/2; break;
case 'TOP': newRect.top=newRect2.top; break;
case 'BOTTOM': newRect.top=bottom + newRect.height; break;
default: break;
}
}
var deltaH=newRect2.height - newRect.height;
var deltaW=newRect2.width - newRect.width;
передаю два итемаПрямоугольник то откуда берете?
var docRef = app.activeDocument;
var myPage=docRef.layers[0];
falign(myPage.pathItems[0],myPage.pathItems[1], 'TOP','LEFT');
var stayObj = newRect2.geometricBounds; //left, top --- right, bottom
var moveObj = newRect.geometricBounds;
switch(horiz){
case 'CENTER': var cntr=stayObj[0]+(stayObj[2]-stayObj[0])/2; var cntrMov=moveObj[0]+(moveObj[2]-moveObj[0])/2; var delt =cntr-cntrMov; break;
case 'LEFT': delt =stayObj[0]-moveObj[0]; break;
case 'RIGHT': delt =stayObj[2]-moveObj[2]; break;
default:delt=0; break;
}
switch(vertikal){
case 'CENTER': var cntr=stayObj[1]+(stayObj[3]-stayObj[1])/2; var cntrMov=moveObj[1]+(moveObj[3]-moveObj[1])/2; var delt2 =cntr-cntrMov; break;
case 'TOP': delt2=stayObj[1]-moveObj[1]; break;
case 'BOTTOM': delt2 =stayObj[3]-moveObj[3]; break;
default:delt2=0; break;
}
newRect.translate(delt,delt2);
Хотелось бы в целях обмена опытом просить, а зачем вообще такая заморочка через код выравнивать?Решил проблему через geometricbounds
Например, автоматизация из AE
Не по теме:
Хотелось бы в целях обмена опытом просить, а зачем вообще такая заморочка через код выравнивать?