I have a bunch of lineworks with different stroke weights. Is there a direct way to reduce/increase all stroke weights proportionally without changing the size of the objects?
Thanks, Newton
Graphic Design Stack Exchange is a question and answer site for Graphic Design professionals, students, and enthusiasts. It only takes a minute to sign up.
Sign up to join this communityYou may use the following script. It changes the widths of all strokes in document accordingly to the percentile value.
//here you can change the stroke percentual
var myA = prompt("Choose your %","80","Change width stroke");
var myPercentile = myA/100;
if(myA!=null){
// choose all page elements
for (var i=0;i<app.activeDocument.pageItems.length;i++){
var myLayer = app.activeDocument.pageItems[i];
//if element is compound make a new loop for pathItems
if(myLayer.typename=="CompoundPathItem"){
for(var u=0;u<myLayer.pathItems.length;u++){
//take actual stroke size
var myPath = myLayer.pathItems[u];
var myMeasure = myPath.strokeWidth;
//transform the stroke width into % choose at start
myPath.strokeWidth = myMeasure*myPercentile;
}
}
if(myLayer.typename=="PathItem"){
var myMeasure = myLayer.strokeWidth;
myLayer.strokeWidth = myMeasure*myPercentile;
}
}
}
Choose transform → scale scale down (or up to increase) with scale strokes and effects enabled. Then yet again scale with opposite scale value, this time disable scale strokes and effects. Done.
This is not very good approach if your using pixel snapping as it introduces jitter (instead of a matrix concatenation). In this case i would consider scripting this.
Simply run this script:
if (documents.length) {
sel = activeDocument.selection;
if (sel[0]) {
dial = new Window("dialog", "Scale Stroke Width");
gr = dial.add("group");
gr.add("statictext", undefined, "Scale Stroke Width by:");
perc = gr.add("edittext");
perc.characters = 5;
perc.onChanging = function () {ok.enabled = !isNaN(perc.text)}
gr.add("statictext", undefined, "%");
ok = dial.add("button", undefined, "OK");
if (dial.show() == 1) for (i = 0; i < sel.length; i++)
sel[i].resize(100, 100, undefined, undefined, undefined, undefined, perc.text);
}
}