• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

Resize object proportionaly

Explorer ,
Nov 16, 2022 Nov 16, 2022

Copy link to clipboard

Copied

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();
 
polotrobo_0-1668601400702.pngpolotrobo_1-1668601410456.png

 

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...

polotrobo_4-1668601772410.png

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

polotrobo_5-1668601837158.png

 

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

TOPICS
Bug , Import and export , Scripting , Third party plugins , Tools , Type

Views

976

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Adobe
Explorer ,
Nov 16, 2022 Nov 16, 2022

Copy link to clipboard

Copied

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 

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Advocate ,
Nov 16, 2022 Nov 16, 2022

Copy link to clipboard

Copied

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)

Capture.PNG

René

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

 

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Advocate ,
Nov 16, 2022 Nov 16, 2022

Copy link to clipboard

Copied

Bonjour,

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

legende.PNG

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.

 

csv legende.PNG

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Nov 17, 2022 Nov 17, 2022

Copy link to clipboard

Copied

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 ↓

polotrobo_1-1668672192880.png

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

polotrobo_2-1668672242945.png



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

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Advocate ,
Nov 17, 2022 Nov 17, 2022

Copy link to clipboard

Copied

Bonjour,

Un petit script rapide...

 

 

// JavaScript Document for Illustrator
var mm = 2.8346455078125;
var H = 10;
var rep = prompt("Hauteur en mm = ",H);
if (rep != "" && rep != null) {
    H = rep*mm;
var item, h, scale;
      for (var i = 0; i < selection.length; i++) {
        item = selection[i];
        h = item.height;
        scale = H/h;
        item.resize(scale*100,scale*100);
      }
}

 

 

René

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Nov 17, 2022 Nov 17, 2022

Copy link to clipboard

Copied

Bonjour @renél80416020 

Nous y sommes presque.. Je souhaiterais garder mon script de base mais y ajouter une partie du code que vous venez de me transmettre.

Le problème de redimenssionner certains pictogrammes et que je souhaite parfois prendre en priorité la hauteur comme pour le picto "AU" mais je souhaite aussi prendre en priorité la largeur de certains pictos comme pour le SSI et la flèche d'évacuation.

polotrobo_1-1668679158471.png

Veuillez m'excuser si j'ai du mal à être clair.. J'espère que le visuel ci-dessus vous éclairera sur ma problématique.

Bonne journée,
PM

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Nov 17, 2022 Nov 17, 2022

Copy link to clipboard

Copied

You can rename your elements to w and h for example and scale w to 5mm width and h to 5mm height. Illustrator will not be able to distinguish otherwise. Other possibility is to place them on different layers and scale according to the layer.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Advocate ,
Nov 17, 2022 Nov 17, 2022

Copy link to clipboard

Copied

LATEST

Pour faire simple, comme l'a suggéré WIDSnonamer,
j'ai juste ajouté "-w" à la fin des noms des symboles associés aux éléments à modifier selon la largeur.

Moi je préfèrerais utiliser un fichier texte à importer à l'exécution du script.
Car pour ma part on m'a fourni 250 symboles qui sont utilisés par plusieurs personnes, il valait mieux ne pas y toucher.

symbol name.PNG

Hauteur demandée 10mm.

symboles 01.PNG

J'ai ajouté une bordure (visibleBounds)

symbloes aligne.PNG

Script

 

 

// JavaScript Document for Illustrator
// Auteur Landry René
// Thu, 17 November 2022 21:17:05 GMT
var H = 10;
var mm = UnitValue (1,"mm").as('pt');

var rep = prompt("Hauteur pour un carré en mm = ",H);
if (rep != "" && rep != null && /^[\d.]{1,8}$/.test(rep)) {
    H = rep*mm;
var item, mode, h, w, scale;
      for (var i = 0; i < selection.length; i++) {
        if (selection[i].typename == "SymbolItem") {
          item = selection[i];
          symbName = item.symbol.name; alert(item.symbol.name)
          mode = /-w/.test(symbName) ? 1 : 0;
          h = item.height;
          w = item.width;
          scale = !mode ? H/h : H/w;
          item.resize(scale*100,scale*100);
          }
      }
}

 

 

René

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines