///////////////////////////////////////////////////////////////// // Set All The Things v.1.2 -- CS,CS2,CS3,CS4 //>=-------------------------------------- // Wanna Batch Transform objects? Illustrator has built in tools to resize each selected item, // but only by percentage, not by hard values. I made this script because I could find no // native way to set the width of all selected objects to 100px at once. // // This script can accept multiple parameters at once. // To change, for instance, both width and height at the same time, // at the 'attributes' prompt, enter width,height // then at the 'values' prompt, enter a comma separated value list like 20,30 // If a single value is passed for 'values', that value will be applied to all chosen properties. // // Common legal parameter names include, but are not limited to: width,height,top,left. // Install and use explore.js on an object to see what other properties can be set. // // Update: Based on feedback from user Jode, You are now given the option to transform objects from center. // You can now also use whatever standard units you like and the script will convert them into pixels. // e.g., you can enter "30mm" or "12in" and the script will know what you mean. // v1.2 adds decimal support and explicit 'px' and 'pt' units to the regex. (thanks to Cristofer Cruz for noticing the bug) //>=-------------------------------------- // JS code (c) copyright: John Wundes ( john@wundes.com ) www.wundes.com //copyright full text here: http://www.wundes.com/js4ai/copyright.txt ////////////////////////////////////////////////////////////////// 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("No open document found. Please open a document.");return;} if(activeDocument.selection.length == 0){trace("Nothing selected. Please select one or more items.");return;} var i = prompt("What attribute(s) do you want to set?","width,height"); if( i===null ){return false;} var v = prompt("What value(s) do you want to assign?","100,50"); if (v === null ){return false;} centerObjects=confirm("Transform Objects around center?"); v=toPixels(v); // here's where we walk through all objects. var assign = function (i,v){ for (var x=0 ; x < activeDocument.selection.length ; x++){ item = activeDocument.selection[x]; //get top and left width and height values center_point = [item.top-(item.height/2),item.left+(item.width/2)]; item[i] = eval(v); //redraw(); if(centerObjects){ //center_point = [item.top+(item.height/2),item.left+(item.width/2)]; item.top = center_point[0] + (item.height/2); item.left = center_point[1] - (item.width/2); } }; } if( i.indexOf(',') !== -1){ i = i.split(',');} //split if a list, but not if function is found. if( v.indexOf(',') !== -1){ v = v.split(',');} if(typeof i !== "string") { for ( var len=i.length,c=0;c