[AI CC-CC2021] Выделение всех объектов в документе и вставка их в уже имеющийся документ с выравниванием по центру

Sam1993

Участник
Топикстартер
Сообщения
6
Реакции
0
Двумя вызовами app.executeMenuCommand - "selectAll" и "group"
Подумаешь бином Ньютона!
Использовать app.executeMenuCommand - это понятно, так делал - а дальше?
как перебросить этот объект в открытый документи отмасштабировать его там
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Последнее редактирование:
  • Спасибо
Реакции: NatalieRedFox_333

NatalieRedFox_333

Чего мне бояться? - подумала Красная Шапочка...)))
Сообщения
2 089
Реакции
145
а как вообще выравнять группу по центру....?
вот допустим ArtBoard 864x864 pt и все уже в группах?
 

NatalieRedFox_333

Чего мне бояться? - подумала Красная Шапочка...)))
Сообщения
2 089
Реакции
145
нашла...
Код:
var aDoc = app.activeDocument;

app.coordinateSystem = CoordinateSystem.ARTBOARDCOORDINATESYSTEM;

var abIdx = aDoc.artboards.getActiveArtboardIndex();

var actAbBds = aDoc.artboards[abIdx].artboardRect;

var obj2move = aDoc.selection[0];

obj2move.position = new Array ((actAbBds[2]-actAbBds[0])/2 - obj2move.width/2, (actAbBds[3]-actAbBds[1])/2  + obj2move.height/2);
 

NatalieRedFox_333

Чего мне бояться? - подумала Красная Шапочка...)))
Сообщения
2 089
Реакции
145
еще... -
Код:
var aDoc = app.activeDocument;

var Sel = aDoc.selection;

if (Sel.length >0 ) {

    var abIdx = aDoc.artboards.getActiveArtboardIndex();

    var actAbBds = aDoc.artboards[abIdx].artboardRect;

    var vBounds = Sel[0].visibleBounds;

    vBounds_Li = vBounds[0];

    vBounds_Ob = vBounds[1];

    vBounds_Re = vBounds[2];

    vBounds_Un = vBounds[3];

if (Sel.length >1 ) {   

    for (i=1; i<Sel.length ; i++) {

        vBdsI = Sel.visibleBounds;

        if( vBounds_Li > vBdsI[0] ) {vBounds_Li = vBdsI[0]};

        if( vBounds_Ob < vBdsI[1] ) {vBounds_Ob = vBdsI[1]};

        if( vBounds_Re < vBdsI[2] ) {vBounds_Re = vBdsI[2]};

        if( vBounds_Un > vBdsI[3] ) {vBounds_Un = vBdsI[3]};

        }

    aDoc.artboards[abIdx].artboardRect = [vBounds_Li +((vBounds_Re - vBounds_Li)/2-(actAbBds[2]-actAbBds[0])/2), vBounds_Ob -((vBounds_Ob - vBounds_Un)/2+(actAbBds[3]-actAbBds[1])/2), vBounds_Li +((vBounds_Re - vBounds_Li)/2-(actAbBds[2]-actAbBds[0])/2)+(actAbBds[2]-actAbBds[0]), vBounds_Ob -((vBounds_Ob - vBounds_Un)/2+(actAbBds[3]-actAbBds[1])/2)+(actAbBds[3]-actAbBds[1])];

    }

    } else {

        alert ("No selection");

        }
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
  • Спасибо
Реакции: NatalieRedFox_333

NatalieRedFox_333

Чего мне бояться? - подумала Красная Шапочка...)))
Сообщения
2 089
Реакции
145
да работает тоже ))))
правда не так как надо....надо чтоб каждый обьект был в центре, а он делает как бы группу и центрует ))) 'otbline'
Код:
if ( app.documents.length > 0 ) {
    
 var ad=app.activeDocument;
 var ar=ad.artboards[ad.artboards.getActiveArtboardIndex()].artboardRect;
 var cX=(ar[0]+ar[2])/2;
 var cY=(ar[1]+ar[3])/2;
 var cnt=new Array();
 
 var x1=0;
 var x2=0;
 var y1=0;
 var y2=0;
 var first=true;
 for (var j=0;j<ad.pageItems.length;j++)
   {
       pi=ad.pageItems[j];
       if ((pi.parent.typename=="Layer") && (pi.selected))
       {
           cnt.push(pi);
           if (first || (x1<pi.controlBounds[0])) x1=pi.controlBounds[0];
           if (first || (x2>pi.controlBounds[2])) x2=pi.controlBounds[2];
           if (first || (y1<pi.controlBounds[3])) y1=pi.controlBounds[3];
           if (first || (y2>pi.controlBounds[1])) y2=pi.controlBounds[1];
           if (first || (x1<pi.controlBounds[2])) x1=pi.controlBounds[2];
           if (first || (x2>pi.controlBounds[0])) x2=pi.controlBounds[0];
           if (first || (y1<pi.controlBounds[1])) y1=pi.controlBounds[1];
           if (first || (y2>pi.controlBounds[3])) y2=pi.controlBounds[3];
           first=false;
          
      }
  }
 cx=(x1+x2)/2;
 cy=(y1+y2)/2;

  if (cnt.length)
  for (var j=0;j<cnt.length;j++)
  {
     cnt[j].translate(cX-cx,cY-cy);
  }
 else alert("No selection!");
 

} else alert("No document!");
 

NatalieRedFox_333

Чего мне бояться? - подумала Красная Шапочка...)))
Сообщения
2 089
Реакции
145
все же проще экшен запустить.. 'otbline'
 

Gad

Сообщения
2 971
Реакции
1 405
проще экшен запустить
проще та да, но как поменять выравнивание если стоит к примеру "по выделенному", на выравнивание "по артборду"? :)
2021-10-12_16-10-01.png

Ну или его непросто запустить нужно, а создать таки сначала :)
 

NatalieRedFox_333

Чего мне бояться? - подумала Красная Шапочка...)))
Сообщения
2 089
Реакции
145

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Тю так еще проще
Код:
if ( app.documents.length > 0 ) {
    
 var ad=app.activeDocument;
 var ar=ad.artboards[ad.artboards.getActiveArtboardIndex()].artboardRect;
 var cX=(ar[0]+ar[2])/2;
 var cY=(ar[1]+ar[3])/2;
 var cnt=new Array();
 
 var x1=0;
 var x2=0;
 var y1=0;
 var y2=0;
 var first=true;
 for (var j=0;j<ad.pageItems.length;j++)
   {
       pi=ad.pageItems[j];
       if ((pi.parent.typename=="Layer") && (pi.selected))
       {
   
           x1=pi.controlBounds[0];
           x2=pi.controlBounds[2];
           y1=pi.controlBounds[3];
           y2=pi.controlBounds[1];
           cx=(x1+x2)/2;
           cy=(y1+y2)/2;
           pi.translate(cX-cx,cY-cy);     
      }
  }



     
 
 
 

} else alert("No document!");
 
  • Спасибо
Реакции: NatalieRedFox_333