[AI CC-CC2022] Проблема с выравниванием

suslic_arisha

Участник
Топикстартер
Сообщения
18
Реакции
0
Всем привет. Объекты выравниваются по краю обводки. Не могу найти в настройках как это изменить и нигде в интернете тоже. Помогите!
Снимок экрана 2018-11-29 в 1.38.20.png
 
Это, часом, не галка "use bounds" где-то в настройках?
 
Chaos of Sun - галочу уберите с Use Prevew Bounds.
 
1543516178373.png


мощно

1543516217610.png
 
а через код как это сделать — убрать галочку?
а то я написал свой модуль выравнивания, а он берёт текущие настройки, и время от времени такая же фигня вылазит.
 
Опоздавшая молодежь
а через код как это сделать — убрать галочку?
а то я написал свой модуль выравнивания, а он берёт текущие настройки, и время от времени такая же фигня вылазит.
Все зависит от того, что у вас за "код выравнивания".
 
Все зависит от того, что у вас за "код выравнивания".
Скрипт. Пример работы: берет координаты первого выделенного объекта, допустим левый верхний угол. Берет второй объект и меняет его координату верхнего левого угла. Типа того.
 
А каким боком эта настройка здесь? Вы по боксам выравнивание, там есть отдельно боксы с учетом обводка и без.
 
А каким боком эта настройка здесь? Вы по боксам выравнивание, там есть отдельно боксы с учетом обводка и без.
Ну у меня некорректно работает. Может я немного не так делаю
Код:
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;
берется размер весь с обводкой
 
Последнее редактирование:
Прямоугольник то откуда берете?
 
А у каждого итема бывают свои geometricbounds и visualbounds. Курите доку и будет вам счастье
 
  • Спасибо
Реакции: Hoar и eugeny
Решил проблему через geometricbounds
Код:
 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);
 
  • Спасибо
Реакции: eugeny