Illustrator Scripting :: Create A Palette With Some Buttons
Feb 8, 2013
I am writing a script for Illustrator. I created a palette with some buttons. I like to keep the palette open while working in Illustrator. The problem is, that the buttons don't work. For example, I have a delete button that should delete my active selection. When I change the Window Type from palette to dialog everything works correctly.
var w = new Window ("palette");
w.orientation = "row";
w.text = "Path Transform";
var f = File ("/C/icons/corner-tr.png");
var corner_tr = w.add ("iconbutton", undefined, f );
var corner_tl = w.add ("iconbutton", undefined, f );
var corner_br = w.add ("iconbutton", undefined, f );
var corner_bl = w.add ("iconbutton", undefined, f );
corner_tr.onClick = function () {
selectedObject[0].remove();
createLines();
}
If we run script then it should display 6 button along with ok, cancel button. If we click on button1 then the coding assciated with button1 should execute and so on.
button1 button2 button3 button4 button5 button6 Ok Cancel.
I want to create a dialog consisting of multiple buttons. As a result I want value which button was pressed by user.
The script (shortened to problematic part):
// I'm looping through elements on layer 'warstwa' from kolorStart to kolorStop, 'k' is used for number buttons
for (i = kolorStart, k = 0; i <= kolorStop; k++, i++) { myButton[k] = myButtonGroup.add ("button", undefined, warstwa.pageItems[i].contents); myButton[k].label = warstwa.pageItems[i].contents; myButton[k].onClick = function () { wybranyKolor = myButton[k].label; myWindow.close(); } }
The result:
But buttons don't work, wybranyKolor returning 'undefined'. If I change "wybranyKolor = myButton[k].label" to "wybranyKolor = myButton[k-1].label" I get proper answer but it is the same for all buttons so it looks that all buttons have the same action assigned. How to get each button to has unique name which can be passed to variable?
Probably I can achieve the same with radio buttons' list but with buttons it is one click less for the user.
on my Windows 7 home computer I am able to create UI progress bars and popup messages for my UI window and everything works just fine. Now, I come to work on the Macintosh and they don't work so well. In this question, I would like to learn if there is a technique to bring a palette to the front when one is created, such as for this progress bar example, on a Mac. The palette appears deactivated and in back for me. It is unseen most of the time because it appears in the center of the screen behind the window by default, and when I move my window we can see the palette but there is no progress bar going on.
As you can see in the screenshot, my main window is deactivated because I attempted to get the progress bar active by deactivating the main window, obviously not successful. I also set the palette to active, which did not work.And, as I have implied, on my home computer on Windows things appear just as expected with the progress bar working and palettes appearing in front and active.
When I run a script that brings up a palette window from ExtenScript toolkit the window behaves as I expect.But when I load the same script from illustrator (ctrl+12) the window does not show, or is instantly closed.
I've got a script that creates a palette that does some calculations when a button is pressed - but something in the script is failing silently. (this question is about how to debug things like this, not what the problem is in my specific script)
I've read the debugging tips in the Javascript tools guide, and based on that, re-opened the script in the Extendscript Toolkit instead of my usual text editor, chosen Illustrator, and hit the green 'Go' button. But, either I've missed something fundamental, or this isn't designed for palettes - the script runs in Illustrator, successfully pops up the palette, considers the job done, pats itself on the back, and closes the palette before I can begin debugging the button.
I'm looking for something where I can test the palette doing regular Illustrator work and see debug messages, set breakpoints, etc. I've tried the old-school approach of just filling the code with 'alert("blah")'s but it doesn't work - my code reaches an
and doesn't alert either of them, or give any error message.
If I was working in a browser, I'd just plonk in a "console.log( app.activeDocument.selection )" and browse the object structure to see what's going on, is there any Illustrator equivalent?
I'm using a mac running illustrator cs5 and have about 4 thousand eps files (all vector paths filled with black) that need to be assigned colors randomly from a defined color palette (25 custom swatches). The first 2 swatches should be omitted- they aren't relevant to this task.
The script should open the file select all vector elements and assign a random color form the defined custom swatch palette then save the file and move on to the next.
I try to open mulitple ai files through palette dialog but it fails on Error:8702, there is no document. But if i change to var win = new Window ("dialog", "Batch"); the open file works well.
var txtSourceFolder = win.add("edittext",undefined); var btnOk = win.add("button",undefined,"Run"); btnOk.onClick=function(){ try
What if for some reason a person wants to actually make an XML file and stick some <![CDATA[]]> in it? I looked through some manuals & OMV fairly quickly to discover no methods for that. Was wondering if there was some technique.And, just as pointed out in the indesign forums, a string of "]]>" makes the script hang up and debugging have to be stopped with the final message "Cannot execute".
I'm trying to challenge myself here, I want to create a copy of every gradient in the active document and give it an assigned name like "Batman 1" "Batman 2" ect.
I can add new gradients and set their stop colors ect but I can't figure out how to create a perfect copy of the gradient in the swatch library.
I've been looking and the only thing I found that comes close was an older script that's only compatibale with CS. In this they're copying EVERYTHING I just wanna stick to gradients at the moment. Here's the link: [URL]
I looked to this as an example of how to do something like this but since it wont work with CS6 I cant really experiment or tinker to figure out how it works.
I am looking for a way to create an opacity mask through JavaScript. My program has the correct items selected, I just can't seem to find any documentation about creating an opacity mask. If I run the program as is, I just need to click one button ( "Make Mask") and the desired process is completed. Of course I would love to find a way to do this programmatically.
If I cannot access Opacity mask, is there a way to manually do this through grouping and blending or something?
The first loop grabs the geometries drawn in the current document and rotates it around itself creating duplicates. The second loop is supposed to circumvent more geometries around the newly created geometries.
But instead of creating a radiant pattern, this code builds a tower: for the second loop everytime it grabs the last drawn geometry instead of what is in the "Original"
for NumPaths = 1 to frontDocument.PathItems.count set myPath = frontDocument.PathItems.item(NumPaths) For index = 0 To 30 set newPath = myPath.Duplicate call newPath.translate(100*sin(6.14* index/30),100*cos(6.14* index/30))
I have developed a script to perform some Custom action in Illustrator. I want to make this script run from a a File Menu Item so it can be invoked easily. Is there a way to customize Illustrator to add a new menu item or modify the existing menu tems functions. For example if the script needs to be invoked when the user click "Save" is there a way that could be done.
Often times when designing a logo I create different versions and variable options on layers. This can result in several layers in one Illustrator file. Is there an easy way or an existing script that will allow me to (with one click) create a multi-page PDF consisting of all the layers within my .ai file? The current method is turning on each layer, performing a save-as (PDF), then turning off said layer and turning on the next layer and repeating the task and so-on-and-so-forth, etc … It becomes tedious and quite often I save over the previous version, forgetting to re-name it or forget to perform a save on a certain layer. I have never written my own script before but am not opposed to trying, where do I begin?
I'm having trouble getting a script together where I can ungroup all groups in a document, then put everything under a single group. Everyhting I'm working with has a single layer, but for some of the arts I'm importing have groups within groups ect. To run certain actions I've made properly after I need eveything to be in one, single group.
I searched for an answer and found this (wirtten by Carlos Canto)
function ungroup(whereToUngroup, group) // where to ungroup? layer, document, other group? { for (i=group.pageItems.length-1; i>=0; i--) group.pageItems[i].move(whereToUngroup, ElementPlacement.PLACEATBEGINNING); }
I have an excel file with thousands of rows, each with a column for the x-coordinate, the y-coordiante, the height, and width of a rectangle. I need a script that will ask me to select the excel file, read the excel file, and create rectangles from each of the thousands of rows. I'm working in a windows environment and have Illustrator CS4. Any scripts out there that might give me a start?
I need to automatically create all the possible pattern combinations with 6 shapes and 6 colors.
I have an Excell file with assigned color combinations (values from 1 to 6) in the rows, and the shape name (A to F) in the columns. Column 7 is a string containin the color combination names (i.d. 123456, 123345 etc...) so that I can output each combination with the color/numbers in the name.
I'd like Illustrator to pick every row and assign the contained colors to each shape of the column and to export a .png with the name from column 7 content.
Just simple as that! But to me it sounds pretty hard!
Is there a script that makes it already posted somewhere? - i couldn't find any - or something simliar to start coding from?
Automated AI so much so that it can read instructions from an external source like xml or txt and automatically creates files and folders.
For example we have something like this: File1 Hello Font: Myriad Size: 22 Colour: Pantone 254C Image 1.jpg (link) Source: Image1.png (link) clipart1.eps (link) ---------- File2
and so on.
I want AI CS5 to: 1. create an eps File1, create a folder named File1, put File1.eps in it 2. type the text Hello, apply Myriad 22pt and PMS 254 to it, centre it to the artboard 3. Place all jpegs, pngs, eps source files on the artboard and embed them. 4. Save the file as eps legacy version 10, close the file and move to the next file.
I can't figure out the proper commands to fill out and complete the script below. What I am trying to do is:
- Create a new document using one of the Profile presets (or have the New Document dialogue open so I could select the profile, size and bleed) - Make 3 layers, each with a diferent name - Create a rectangle the size of the artboard on the bottom layer, with a swatch stroke and no fill - Create a rectangle the size of the bleed on the middle layer, with no stroke or fill
Like I said, I haven't gotten far at all. I've read through the basic scripting guides and I'm just not understanding all of the language needed to string things together.
tell application "Adobe Illustrator" make new document set topLayer to make new layer ¬ at beginning of document 1 with properties {name:"Vector"} set bottomLayer to make new layer ¬ at end of document 1 with properties {name:"Through Cut"} end tell
I created an Action to batch export a folder of .ai files to create 300dpi .png's of the .ai file's artboard. I did this by simply recording "Export...as png" with my desired settings then Batch running the Action on desired folder of .ai files. The files were successfully exported, the trouble is that the exported files lack a .png file extension. My intent is to take these PNG files and merge them into a single PDF using Acrobat Pro. Unfortunatly, without the .PNG extension, Acrobat Pro does not recognize the file types and does not let me use the Combine Files feature on them. Going back and manually adding a .png at the end of the exported files defeats the time-saving purpose of Batch Processing all together. Is there something I am missing or doing incorrectly? I have included screenshots of 1) My Batch Action settings 2) folders showing files without .png extension and 3) visual of what I see when I am trying to combine PNGs into a PDF.