├── README.md └── Outline.jsx /README.md: -------------------------------------------------------------------------------- 1 | # illustrator-outline-script 2 | 3 | ![outline](https://user-images.githubusercontent.com/47031237/221381277-42230e68-8841-4289-aa45-85b9be471608.gif) 4 | 5 | 6 | 7 | This repository contains an outline script for Adobe Illustrator. It enables you to quickly apply an outline with a specified thickness and number of copies to a selected shape, saving you time in the design process. 8 | -------------------------------------------------------------------------------- /Outline.jsx: -------------------------------------------------------------------------------- 1 | var offset; 2 | var loop; 3 | var newRGBColor = new RGBColor(); 4 | 5 | app.executeMenuCommand("group"); 6 | 7 | var win = new Window("dialog", "Enter Values"); 8 | var fieldsGroup = win.add("group"); 9 | fieldsGroup.orientation = "row"; 10 | fieldsGroup.alignChildren = ["left", "center"]; 11 | 12 | fieldsGroup.add("statictext", undefined, "Offset:"); 13 | var offsetField = fieldsGroup.add("edittext", undefined, "10"); 14 | offsetField.alignment = ["fill", "center"]; 15 | offsetField.size = [80, 30]; 16 | 17 | fieldsGroup.add("statictext", undefined, "Loop:"); 18 | var loopField = fieldsGroup.add("edittext", undefined, "1"); 19 | loopField.alignment = ["fill", "center"]; 20 | loopField.size = [80, 30]; 21 | 22 | var submitBtn = win.add("button", undefined, "Ok"); 23 | submitBtn.size = [200, 40]; 24 | submitBtn.alignment = ["center", "bottom"]; 25 | submitBtn.onClick = function() { 26 | offset = offsetField.text; 27 | loop = loopField.text; 28 | win.close(); 29 | }; 30 | 31 | var cancelBtn = win.add("button", undefined, "Cancel"); 32 | cancelBtn.size = [200, 40]; 33 | cancelBtn.alignment = ["center", "bottom"]; 34 | cancelBtn.onClick = function() { 35 | win.close(); 36 | }; 37 | 38 | win.show(); 39 | for(var i = 0; i < loop; i++) 40 | { 41 | if(i==0) 42 | { 43 | newRGBColor.red = 255; newRGBColor.green = 255; newRGBColor.blue = 255; 44 | } 45 | else 46 | { 47 | var randomNumber = Math.floor(Math.random() * 255); 48 | newRGBColor.red = randomNumber; newRGBColor.green = randomNumber; newRGBColor.blue = randomNumber; 49 | } 50 | Outline(); 51 | } 52 | 53 | 54 | function Outline() 55 | { 56 | var xmlstring = ''; 57 | var sel = app.activeDocument.selection; 58 | sel[0].duplicate(); 59 | sel[0].zOrder(ZOrderMethod.SENDTOBACK); 60 | app.executeMenuCommand ('Live Outline Stroke'); 61 | app.activeDocument.selection = null; 62 | app.activeDocument.selection = sel; 63 | app.executeMenuCommand('Live Pathfinder Add'); 64 | app.selection[0].applyEffect(xmlstring); 65 | app.executeMenuCommand ('Live Outline Stroke'); 66 | app.executeMenuCommand ('expandStyle'); 67 | app.executeMenuCommand('Live Pathfinder Add'); 68 | app.executeMenuCommand('noCompoundPath'); 69 | app.executeMenuCommand('expandStyle'); 70 | app.selection[0].opacity = 100; 71 | app.activeDocument.defaultFillColor = newRGBColor; 72 | } --------------------------------------------------------------------------------