Skip to main content
Inspiring
January 17, 2023
Answered

Alinhamento de objetos pelo centro do objeto maior

  • January 17, 2023
  • 1 reply
  • 592 views

Olá... Saudações

 

No código abaixo, o alinhamento está acontecendo apenas na vertical e não alinha na horizontal ( ou vice-versa...hehehe) Alinhando o círculo branco com a barra.

 

Onde está o erro?

 

var doc = app.activeDocument;
var sel = doc.selection;
var biggest;

// Find the biggest object
for (var i = 0; i < sel.length; i++) {
if (!biggest || sel[i].width * sel[i].height > biggest.width * biggest.height) {
biggest = sel[i];
}
}

// Center the other objects to the biggest one
for (var i = 0; i < sel.length; i++) {
if (sel[i] != biggest) {
var x = biggest.left + (biggest.width - sel[i].width) / 2;
var y = biggest.top + (biggest.height - sel[i].height) / 100;
sel[i].left = x;
sel[i].top = y;

}
}

This topic has been closed for replies.
Correct answer Charu Rajput

Hi,

When you are calculating the y, why are you diving by 100? Try following version

var doc = app.activeDocument;
var sel = doc.selection;
var biggest;

// Find the biggest object
for (var i = 0; i < sel.length; i++) {
    if (!biggest || sel[i].width * sel[i].height > biggest.width * biggest.height) {
        biggest = sel[i];
    }
}

// Center the other objects to the biggest one
for (var i = 0; i < sel.length; i++) {
    if (sel[i] != biggest) {
        var x = biggest.left + (biggest.width - sel[i].width) / 2;
        var y = biggest.top - (biggest.height - sel[i].height) / 2;
        sel[i].left = x;
        sel[i].top = y;

    }
}

 

1 reply

Charu Rajput
Community Expert
Charu RajputCommunity ExpertCorrect answer
Community Expert
January 17, 2023

Hi,

When you are calculating the y, why are you diving by 100? Try following version

var doc = app.activeDocument;
var sel = doc.selection;
var biggest;

// Find the biggest object
for (var i = 0; i < sel.length; i++) {
    if (!biggest || sel[i].width * sel[i].height > biggest.width * biggest.height) {
        biggest = sel[i];
    }
}

// Center the other objects to the biggest one
for (var i = 0; i < sel.length; i++) {
    if (sel[i] != biggest) {
        var x = biggest.left + (biggest.width - sel[i].width) / 2;
        var y = biggest.top - (biggest.height - sel[i].height) / 2;
        sel[i].left = x;
        sel[i].top = y;

    }
}

 

Best regards
Inspiring
January 18, 2023

Hi @Charu Rajput 

Thanks for your help. Its work perfectly.

I want make de align for a object into layer "Cameron Right".

Could you help me one more time?