Skip to main content
Known Participant
November 16, 2022
Question

Resize object proportionaly

  • November 16, 2022
  • 2 replies
  • 1409 views

Hi everyone,

Here is my problem, I have a script which resize a lot of different shapes 

 

var centerObjects = false;
function main() {
    var item, center_point;
    var toPixels = function (v) {

        var units = {
            'in': 72,
            'mm': 2.8346455078125,
            'px': 1,
            'pt': 1,
        }, re = /(\d*[.]*\d+)(mm|in|ft|cm|px|pt)/i, m, u, rep;
        //derivitave
        units['cm'] = units['mm'] * 10;
        units['ft'] = units['in'] * 12;

        while (m = v.match(re)) {
            u = m[2].toLowerCase();
            if (units[u]) {
                rep = (m[1] * units[u]);
                v = v.replace(re, rep);
            }
        }
        return v;
    }

    var trace = function (m) { alert(m) };
    if (activeDocument == null) { trace("Pas de document ouvert trouvé. Veuillez s'il vous plaît ouvrir un document."); return; }
    if (activeDocument.selection.length == 0) { trace("Aucune sélection... ", "Veuillez sélectionner un pictogramme."); return; }
    var i = prompt("Quelles dimensions voulez-vous modifier ?", "width,height");
    if (i === null) { return false; }
    var v = prompt("Veuillez entrer les nouvelles dimensions du pictogramme", "5mm,5mm");
    v = toPixels(v);
    v = v.split(',');
    for (var x = 0; x < activeDocument.selection.length; x++) {
        item = activeDocument.selection[x];
        var scaleX = v[0] / item.width;
        var scaleY = v[1] / item.height;
        var finalScaleFactor = scaleX > scaleY ? scaleY : scaleX;
        item.resize(finalScaleFactor * 100, finalScaleFactor * 100, true);
    }
}
main();
 

 

As you can see all my shapes have the same proportionnal sizewhen I run the script but I have a problem with ONE specific shape...


When I want to resize my shape "AU" in order to have the same height here is the result..↓

 

I would like to adjust the script in order to adjust my "AU" lat the same height than my other shapes when runing the script.

I've attached a file with the shapes that I want to resize.

Thank you,
PM

This topic has been closed for replies.

2 replies

renél80416020
Inspiring
November 16, 2022

Je suppose que les objets que vous voulez transformer sont des instances de symbole, certains possèdent un cadre invisible.

(essayez "Rompre le lien avec le symbole)

René

PS Je ne suis pas à l'origine de ce script.

 

renél80416020
Inspiring
November 16, 2022

Bonjour,

Si vous voulez automatiser la création d'une légende?
J'ai déjà travaillé sur ce sujet...

Ici avec un fichier .txt ou .csv, dont voici un extrait.

Nom du symbole;intitulé de la légende[coefficent correcteur pour la taille si différent de 1

% pour signifier un saut de ligne.

 

polotroboAuthor
Known Participant
November 17, 2022

Bonjour René,

Merci pour la porposition mais j'utilise déjà un module qui me permet de créer une légende, pour ce problème je cherche à mettre à echelle tout mes pictos, comme vous l'avez bien compris mon pictogramme "AU" possède un cadre transparent mais je ne peux pas rompre le symbole, je souhaiterais cependant inclure dans mon script quelques lignes spécifiques pour ce pictogramme.

 

Admettons que je veuille mettre tout mes pictos en 5 par 5 mm voilà ce que j'obtiens avec le script actuellement ↓

J'aimerais que le script agisse différemment uniquement pour  le picto "AU" de telle manière à obtenir ce résultat ↓



Merci de votre aide,
Bonne journéee à vous
PM

WIDSnonamer
Inspiring
November 16, 2022

It seems like it scales to the same width as the other and because it isn't square it does not have the same size.

 

var finalScaleFactor = scaleX > scaleY ? scaleY : scaleX;

 You'll have to adjust this factor to only scale to height and not to width