Skip to main content
smithcgl9043167
Inspiring
May 31, 2019
Answered

Resize a layer

  • May 31, 2019
  • 1 reply
  • 630 views

How to resize a layer proportionally based on the width size inserted in the text box? Thank you!

var dialog = new Window("dialog","Resize Layers");

    dialog.preferredSize.width = 200;

    dialog.preferredSize.height = 80;

    dialog.orientation = "column";

    dialog.alignChildren = ["center","top"];

    dialog.spacing = 10;

    dialog.margins = 16;

var group1 = dialog.add("group");

    group1.orientation = "row";

    group1.alignChildren = ["left","center"];

    group1.spacing = 10;

    group1.margins = 0;

var statictext1 = group1.add("statictext");

    statictext1.text = "New width";

var edittext1 = group1.add("edittext");

    edittext1.preferredSize.width = 40;

    edittext1.preferredSize.height = 25;

var statictext2 = group1.add("statictext");

    statictext2.text = "centimeters";

var button1 = group1.add("button");

    button1.text = "OK";

    button1.preferredSize.width = 80;

    button1.preferredSize.height = 25;

    button1.justify = "center";

dialog.show();

This topic has been closed for replies.
Correct answer pixxxelschubser

To resize a layer see this snippet (works without your dialog)

var startRulerUnits = app.preferences.rulerUnits;

app.preferences.rulerUnits = Units.PIXELS;

var aDoc = activeDocument;

var bds = aDoc.activeLayer.bounds;

var w = bds[2].value - bds[0].value;

var edittext_width = 50*1;

var f = edittext_width*100/w;

aDoc.activeLayer.resize(f, f, AnchorPosition.MIDDLECENTER);

app.preferences.rulerUnits = startRulerUnits;

It does what it should.

Can you complete it yourself?

Have fun

1 reply

pixxxelschubser
Community Expert
pixxxelschubserCommunity ExpertCorrect answer
Community Expert
May 31, 2019

To resize a layer see this snippet (works without your dialog)

var startRulerUnits = app.preferences.rulerUnits;

app.preferences.rulerUnits = Units.PIXELS;

var aDoc = activeDocument;

var bds = aDoc.activeLayer.bounds;

var w = bds[2].value - bds[0].value;

var edittext_width = 50*1;

var f = edittext_width*100/w;

aDoc.activeLayer.resize(f, f, AnchorPosition.MIDDLECENTER);

app.preferences.rulerUnits = startRulerUnits;

It does what it should.

Can you complete it yourself?

Have fun

smithcgl9043167
Inspiring
June 1, 2019

This is fantastic! The result is amazing.

Great support pixxxel schubser, you're always saving me here and in the Illustrator community. Thank you.

Here is the result:

var dialog = new Window("dialog","Resize Layers");  

    dialog.preferredSize.width = 200;  

    dialog.preferredSize.height = 80;  

    dialog.orientation = "column";  

    dialog.alignChildren = ["center","top"];  

    dialog.spacing = 10;  

    dialog.margins = 16;  

 

 

var group1 = dialog.add("group");  

    group1.orientation = "row";  

    group1.alignChildren = ["left","center"];  

    group1.spacing = 10;  

    group1.margins = 0;  

 

 

var statictext1 = group1.add("statictext");  

    statictext1.text = "New width";  

 

 

var edittext1 = group1.add("edittext");  

    edittext1.preferredSize.width = 40;  

    edittext1.preferredSize.height = 25;  

 

 

var statictext2 = group1.add("statictext");  

    statictext2.text = "centimeters";  

 

 

var button1 = group1.add("button");  

    button1.text = "OK";  

    button1.preferredSize.width = 80;  

    button1.preferredSize.height = 25;  

    button1.justify = "center";  

 

 

  button1.onClick = function(){ 

        var startRulerUnits = app.preferences.rulerUnits; 

        app.preferences.rulerUnits = Units.CM; 

        var aDoc = activeDocument; 

        var bds = aDoc.activeLayer.bounds; 

        var w = bds[2].value - bds[0].value; 

        var edittext_width = edittext1.text*1; 

        var f = edittext_width*100/w; 

        aDoc.activeLayer.resize(f, f, AnchorPosition.MIDDLECENTER); 

        app.preferences.rulerUnits = startRulerUnits;    

        app.refresh();

    }

  

 

dialog.show();