I have made this little script to quickly add margins to an illustrator document and am posting it here to anyone that might find this helpful.
The script will bring up a dialog where you can enter the sizes. Checking the equal box makes all sizes the same as the first.
You have the option of using Millimetres, Inches or Pixels for your units and a last option to apply to all artboards or just the active one.
The script then adds the guides to a locked layer called 'Margins' for convenience.
There are two versions for your taste- The first creates 4 seperate guidelines. The second creates one rectangle guide.
#target illustrator var docRef = app.activeDocument; var artboardRef = docRef.artboards; var workingLayer = docRef.activeLayer; //window var win = new Window('dialog', "Add Margins"); this.windowRef = win; //panels win.fieldpanel = win.add("panel", undefined, ""); win.radiopanel = win.add("panel", undefined, ""); win.radiopanel2 = win.add("panel", undefined, ""); //panel orientation win.fieldpanel.orientation='row'; win.radiopanel.orientation='row'; win.radiopanel2.orientation='row'; //fieldpanel win.fieldpanel.panel1 = win.fieldpanel.add('panel', undefined, "Left"); win.fieldpanel.panel2 = win.fieldpanel.add('panel', undefined, "Right"); win.fieldpanel.panel3 = win.fieldpanel.add('panel', undefined, "Top"); win.fieldpanel.panel4 = win.fieldpanel.add('panel', undefined, "Bottom"); win.fieldpanel.panel1.left_input = win.fieldpanel.panel1.add('edittext', undefined, "0"); win.fieldpanel.panel2.right_input = win.fieldpanel.panel2.add('edittext', undefined, "0"); win.fieldpanel.panel3.top_input = win.fieldpanel.panel3.add('edittext', undefined, "0"); win.fieldpanel.panel4.bottom_input = win.fieldpanel.panel4.add('edittext', undefined, "0"); win.fieldpanel.panel1.left_input.characters = 5; win.fieldpanel.panel2.right_input.characters = 5; win.fieldpanel.panel3.top_input.characters = 5; win.fieldpanel.panel4.bottom_input.characters = 5; win.fieldpanel.check1 = win.fieldpanel.add('checkbox', undefined, "Equal"); //radiopanel win.radiopanel.radio1 = win.radiopanel.add('radiobutton',undefined, "mm"); win.radiopanel.radio2 = win.radiopanel.add('radiobutton',undefined, "in"); win.radiopanel.radio3 = win.radiopanel.add('radiobutton',undefined, "px"); //radiopanel2 win.radiopanel2.radio1 = win.radiopanel2.add('radiobutton',undefined, "All Artboards"); win.radiopanel2.radio2 = win.radiopanel2.add('radiobutton',undefined, "Active Artboard"); //select first radio buttons win.radiopanel.radio1.value = true; win.radiopanel2.radio1.value = true; //ok button win.okbutton = win.add('button', undefined, "Ok"); //disable fields with checkbox and equal values win.fieldpanel.check1.onClick = function() { if(win.fieldpanel.check1.value){ var leftvalue = win.fieldpanel.panel1.left_input.text; win.fieldpanel.panel2.right_input.text = leftvalue; win.fieldpanel.panel3.top_input.text = leftvalue; win.fieldpanel.panel4.bottom_input.text = leftvalue; win.fieldpanel.panel2.right_input.enabled = false; win.fieldpanel.panel3.top_input.enabled = false; win.fieldpanel.panel4.bottom_input.enabled = false; } else { win.fieldpanel.panel2.right_input.enabled = true; win.fieldpanel.panel3.top_input.enabled = true; win.fieldpanel.panel4.bottom_input.enabled = true; } }; //sync values while checked win.fieldpanel.panel1.left_input.onChanging = function (){ if(win.fieldpanel.check1.value){ var leftvalue = win.fieldpanel.panel1.left_input.text; win.fieldpanel.panel2.right_input.text = leftvalue; win.fieldpanel.panel3.top_input.text = leftvalue; win.fieldpanel.panel4.bottom_input.text = leftvalue; } }; //event listener for ok button win.okbutton.onClick = function(){ var leftvalue = win.fieldpanel.panel1.left_input.text; var rightvalue = win.fieldpanel.panel2.right_input.text; var topvalue = win.fieldpanel.panel3.top_input.text; var bottomvalue = win.fieldpanel.panel4.bottom_input.text; if(win.radiopanel.radio1.value) { var multiplier = 2.834645669291339 } if(win.radiopanel.radio2.value) { var multiplier = 72 } if(win.radiopanel.radio3.value) { var multiplier = 1 } //close window win.close(); //make a margins layer var guideLayer = docRef.layers.add(); guideLayer.name = "Margins"; if(win.radiopanel2.radio1.value) { //repeat for each artboard for(i=0;i<artboardRef.length;i++){ //get artboard size var left=artboardRef[i].artboardRect[0]; var top=artboardRef[i].artboardRect[1] ; var right=artboardRef[i].artboardRect[2] ; var bottom=artboardRef[i].artboardRect[3] ; //create lines var lineLeft = docRef.pathItems.add(); var lineRight = docRef.pathItems.add(); var lineTop = docRef.pathItems.add(); var lineBottom = docRef.pathItems.add(); //set line points var leftmargin = (leftvalue * multiplier); var rightmargin = (rightvalue * multiplier); var topmargin = (topvalue * multiplier); var bottommargin = (bottomvalue * multiplier); //set line points lineLeft.setEntirePath([[left + leftmargin, top], [left + leftmargin, bottom]]); lineRight.setEntirePath([[right - rightmargin, top], [right - rightmargin, bottom]]); lineTop.setEntirePath([[left, top - topmargin], [right, top - topmargin]]); lineBottom.setEntirePath([[left, bottom + bottommargin], [right, bottom + bottommargin]]); //make lines guides lineLeft.guides = true; lineRight.guides = true; lineTop.guides = true; lineBottom.guides = true; }; } else { //get artboard size var activeAB = docRef.artboards[docRef.artboards.getActiveArtboardIndex()]; // get active AB var left = activeAB.artboardRect[0]; var top = activeAB.artboardRect[1] ; var right = activeAB.artboardRect[2] ; var bottom = activeAB.artboardRect[3] ; //create lines var lineLeft = docRef.pathItems.add(); var lineRight = docRef.pathItems.add(); var lineTop = docRef.pathItems.add(); var lineBottom = docRef.pathItems.add(); //set line points var leftmargin = (leftvalue * multiplier); var rightmargin = (rightvalue * multiplier); var topmargin = (topvalue * multiplier); var bottommargin = (bottomvalue * multiplier); //set line points lineLeft.setEntirePath([[left + leftmargin, top], [left + leftmargin, bottom]]); lineRight.setEntirePath([[right - rightmargin, top], [right - rightmargin, bottom]]); lineTop.setEntirePath([[left, top - topmargin], [right, top - topmargin]]); lineBottom.setEntirePath([[left, bottom + bottommargin], [right, bottom + bottommargin]]); //make lines guides lineLeft.guides = true; lineRight.guides = true; lineTop.guides = true; lineBottom.guides = true; }; //lock margins layer and activate original layer guideLayer.zOrder (ZOrderMethod.SENDTOBACK); guideLayer.locked = true; docRef.activeLayer = workingLayer; }; win.show();
Box Margin Version:
#target illustrator var docRef = app.activeDocument; var artboardRef = docRef.artboards; var workingLayer = docRef.activeLayer; //window var win = new Window('dialog', "Add Margins"); this.windowRef = win; //panels win.fieldpanel = win.add("panel", undefined, ""); win.radiopanel = win.add("panel", undefined, ""); win.radiopanel2 = win.add("panel", undefined, ""); //panel orientation win.fieldpanel.orientation='row'; win.radiopanel.orientation='row'; win.radiopanel2.orientation='row'; //fieldpanel win.fieldpanel.panel1 = win.fieldpanel.add('panel', undefined, "Left"); win.fieldpanel.panel2 = win.fieldpanel.add('panel', undefined, "Right"); win.fieldpanel.panel3 = win.fieldpanel.add('panel', undefined, "Top"); win.fieldpanel.panel4 = win.fieldpanel.add('panel', undefined, "Bottom"); win.fieldpanel.panel1.left_input = win.fieldpanel.panel1.add('edittext', undefined, "0"); win.fieldpanel.panel2.right_input = win.fieldpanel.panel2.add('edittext', undefined, "0"); win.fieldpanel.panel3.top_input = win.fieldpanel.panel3.add('edittext', undefined, "0"); win.fieldpanel.panel4.bottom_input = win.fieldpanel.panel4.add('edittext', undefined, "0"); win.fieldpanel.panel1.left_input.characters = 5; win.fieldpanel.panel2.right_input.characters = 5; win.fieldpanel.panel3.top_input.characters = 5; win.fieldpanel.panel4.bottom_input.characters = 5; win.fieldpanel.check1 = win.fieldpanel.add('checkbox', undefined, "Equal"); //radiopanel win.radiopanel.radio1 = win.radiopanel.add('radiobutton',undefined, "mm"); win.radiopanel.radio2 = win.radiopanel.add('radiobutton',undefined, "in"); win.radiopanel.radio3 = win.radiopanel.add('radiobutton',undefined, "px"); //radiopanel2 win.radiopanel2.radio1 = win.radiopanel2.add('radiobutton',undefined, "All Artboards"); win.radiopanel2.radio2 = win.radiopanel2.add('radiobutton',undefined, "Active Artboard"); //select first radio buttons win.radiopanel.radio1.value = true; win.radiopanel2.radio1.value = true; //ok button win.okbutton = win.add('button', undefined, "Ok"); //disable fields with checkbox and equal values win.fieldpanel.check1.onClick = function() { if(win.fieldpanel.check1.value){ var leftvalue = win.fieldpanel.panel1.left_input.text; win.fieldpanel.panel2.right_input.text = leftvalue; win.fieldpanel.panel3.top_input.text = leftvalue; win.fieldpanel.panel4.bottom_input.text = leftvalue; win.fieldpanel.panel2.right_input.enabled = false; win.fieldpanel.panel3.top_input.enabled = false; win.fieldpanel.panel4.bottom_input.enabled = false; } else { win.fieldpanel.panel2.right_input.enabled = true; win.fieldpanel.panel3.top_input.enabled = true; win.fieldpanel.panel4.bottom_input.enabled = true; } }; //sync values while checked win.fieldpanel.panel1.left_input.onChanging = function (){ if(win.fieldpanel.check1.value){ var leftvalue = win.fieldpanel.panel1.left_input.text; win.fieldpanel.panel2.right_input.text = leftvalue; win.fieldpanel.panel3.top_input.text = leftvalue; win.fieldpanel.panel4.bottom_input.text = leftvalue; } }; //event listener for ok button win.okbutton.onClick = function(){ var leftvalue = win.fieldpanel.panel1.left_input.text; var rightvalue = win.fieldpanel.panel2.right_input.text; var topvalue = win.fieldpanel.panel3.top_input.text; var bottomvalue = win.fieldpanel.panel4.bottom_input.text; if(win.radiopanel.radio1.value) { var multiplier = 2.834645669291339 } if(win.radiopanel.radio2.value) { var multiplier = 72 } if(win.radiopanel.radio3.value) { var multiplier = 1 } //close window win.close(); //make a margins layer var guideLayer = docRef.layers.add(); guideLayer.name = "Margins"; if(win.radiopanel2.radio1.value) { //repeat for each artboard for(i=0;i<artboardRef.length;i++){ //get artboard size var top=artboardRef[i].artboardRect[1] ; var left=artboardRef[i].artboardRect[0]; var width=artboardRef[i].artboardRect[2]-artboardRef[i].artboardRect[0]; var height=artboardRef[i].artboardRect[1]-artboardRef[i].artboardRect[3]; //set margin sizes var leftmargin = (leftvalue * multiplier); var rightmargin = (rightvalue * multiplier); var topmargin = (topvalue * multiplier); var bottommargin = (bottomvalue * multiplier); //create box var box = docRef.pathItems.rectangle (top - topmargin, left + leftmargin, width - rightmargin - leftmargin, height - topmargin - bottommargin); box.fillColor = box.strokeColor = new NoColor(); //make box guides box.guides = true; }; } else { //get artboard size var activeAB = docRef.artboards[docRef.artboards.getActiveArtboardIndex()]; // get active AB var left = activeAB.artboardRect[0]; var top = activeAB.artboardRect[1] ; var width = activeAB.artboardRect[2]-activeAB.artboardRect[0]; var height = activeAB.artboardRect[1]-activeAB.artboardRect[3]; //set margin sizes var leftmargin = (leftvalue * multiplier); var rightmargin = (rightvalue * multiplier); var topmargin = (topvalue * multiplier); var bottommargin = (bottomvalue * multiplier); //create box var box = docRef.pathItems.rectangle (top - topmargin, left + leftmargin, width - rightmargin - leftmargin, height - topmargin - bottommargin); box.fillColor = box.strokeColor = new NoColor(); //make box guides box.guides = true; }; //lock margins layer and activate original layer guideLayer.zOrder (ZOrderMethod.SENDTOBACK); guideLayer.locked = true; docRef.activeLayer = workingLayer; }; win.show();