Illustrator Scripting :: Iterating Over The Art Tree?
Apr 5, 2012
I am trying to write a 'duplicateLayer' function, and I've read all the related posts on these forums. It seems most of the responses have only addressed art inside a layer, and not nested layers/groups. I need to be able to duplicate ALL items in a layer.
I can get the sub-layers, but I can't figure out how to preserve order of the items in the new layer. For example, if my layer looks like this:
layer 1
art 1
art 2
sub layer 1
sub art 1
art 3
I can call layer.pageItems to get my three art objects and duplicate them, and I can call layer.layers to get my one sub layer and duplicate it. But how do I preserve the same order of the art objects and sub layers with respect to each other?
View 3 Replies
ADVERTISEMENT
Dec 18, 2012
I'm try to automate the importing of the Varaible and datasets into my graphs via Scripting, but the ImportVaraibles() function doesn't seem to work. Here is my Script, mostly copied from the example script provided with Illustrator (CS5). And, this works manually, using the file names in the script, via Load Variable Library
Set appRef = CreateObject(strIllistratorVersion)
'Open the file and import the datasets
Set docRef = appRef.Open(strTemplate & "200-500.ai")
'docRef.Datasets.RemoveAll
docRef.Variables("Yearbook").Delete
Here is the problem, after I delete the previous library, then this next line, right from the example, does nothing
The script then exits with 'No Datasets in this document'
docRef.ImportVariables (strXMLFolder & "Lumber_200-500.xml")
'appRef.DoJavaScript "alert('Template:" & strTemplate & strRange & ".ai | XML file:" & strXMLFolder & "" & objFile.Name & "^')"
If (appRef.Documents.Count > 0) Then
Set docRef = appRef.Documents(1)
[Code]....
If I remove that delete line, the script runs, but just uses whatever Variables I had last loaded, not the XML file.
It's simply not loading. What do I need to do to get it to load?
View 8 Replies
View Related
May 4, 2013
Using CS4. I used the blob paint tool to make a tree. I now want to use a text to cut out of the tree. I have tried creating outlines on the text and using all of the pathfinder tools to no success. I have also tried using the compound path method and that has not worked either. Is there something I have to do to the tree in addition to what I have done to the text?
View 2 Replies
View Related
May 6, 2012
Can you access graph data through the scripting DOM?
View 3 Replies
View Related
Jan 8, 2012
I'm working on translating a VBA routine that worked just fine, to VB.NET & I have had a lot of porblems with it. Yes, I am new to VB.NET. My routine renames XREF file names & opens drawings that have these files XREF'd into them & resets their paths to the renamed file. My VBA routine used a few thisdrawing.sendcommand operations to do things like reload xrefs, unlock layers etc. Some of these worked in the VB.NET version while I only had getten as far as having the only DWG open that was the one which I call the routing from. When it gets into opening another drawing I start getting all sorts of problems.
I worked these out by creating a NEWDOC as DOCUMENT object & setting autodesk....MDIcurrentdocument to the filename of the just opened DWG file & then eliminating my sendcommand calls & replaceing them with record table operations.
Now I'm getting a file access error when trying to reload an XREF using document.reloadxrefs(objectidcollection).
I've tried not to nest transactions. I've tried to make sure all my transactions frpm the current DWG not the original.
How to work with multiple DWG files. Maybe a simple example of reloading an XREF named "X" in a bunch of DWGs saved at some specific location could be given? Focusing on transactions, documents, & databases.
View 1 Replies
View Related
Jun 16, 2011
I am trying to iterate through all the Plot Devices (plotDeviceName) available to the user.
View 3 Replies
View Related
Aug 16, 2012
performance differences between:
1) Using a selction filter to get the objectIDs of a particular type, then iterating them, or
2) Iterating all modelspace objects, checking ObjectID.ObjectClass.Name for the desired type.
View 1 Replies
View Related
Feb 16, 2012
at multiple places i have drawn the same block in a drawing, and i would like select one block in the drawing, then iterate through the items in the block, and find the actual coordinates of a 3d-polyline (that is drawn in that block) in modelspace. How can I do this?
View 8 Replies
View Related
Jul 18, 2012
I have already a Selection Set called objSS. All the objects in this Set are Multi Text, so I am wondering how is possible to have access to the property Text Height of these objects inside the Set in order to change the value of this property. I have created a variable as AcadMText but is not possible for me to loaded it with any item from objSS.
View 3 Replies
View Related
Mar 16, 2013
the Script of creating mirror text and stroke text in Adobe illustrator scripting.
View 4 Replies
View Related
Jan 20, 2013
I have a problem iterating heights when making a polyline between two different points that have Z-values. I've used Autocad Civil 3D for working with geodetic data with height measurements before and I remember using geodetically measured height values, transforming them into a surface and then when I create a 3Dpolyline within this area the polyline automatically gets z-values that change along the line.
In other words, I could use this 3Dpolyline to obtain a profile that gives me z-values even where there is no exact point with a value has been physically measured. It was a while ago I worked with Autocad and now when I started again I have a similar problem but can't manage to create a surface and get iterated values.
My exact problem this time is:
I have a sewage pipe that runs for several kilometers that is drawn as a 3Dpolyline, with correct x- and y-values. It doesn't have any z-values yet and these are what I want to obtain. I want the polyline to have continuous z-values that changes along the polyline (not only in vertexes) so that a smooth profile can be drawn if wanted. I have data of measured actual z-values for approximately every 500 meters or so along the sewage pipe and these are currently drawn as 3Dpolylines of around 20 meters going perpendicular to the pipe (as in the picture). In other words there are bars with z-values crossing the pipe all along the stretch. Now, what I want to do is to somehow make the polyline that represent the pipe to get the heights from these perpendicular bars with the measured z-values. If I try to draw a new 3Dpolyline between two of the measured bars where the actual pipe is supposed to be, the end vertexes of the 3Dpolyline gets the z-values of the bars. However, the value in between the bars gets the Z-value 0. So, if I start a 3Dpoly on bar 1 then continue the pipe with another vertex, and then finish off at the second bar I will have 2 vertexes with the correct z-value but the middle vertex will be incorrect (0). How do I get the pipe to get the correct z values automatically iterated from the values on the crossing bars? Is this even possible to do? Should I create a surface from the bars first, and in that case how do I do that? If possible I don't only want the vertexes between bars to have iterated z-values, I also want the entire line to have a correct value.
I've attached a crappy image made in paint (since I don't have Autocad on my home PC, only at the office). And just to make things even clearer I'll give an example. Let's say the pipe distance from 1 to 2 is 10 meters, the distance between 1 to 3 is 30 meters and the z-values of bar A and bar B is 10 and 25 respectively. So, when I draw a 3Dpolyline from 1 to 4, I want the vertex 2 to automatically get z-value 15 (since it's 1/3 on the way to B). In the same way, I would like for example the point on the pipe that is right in between 2 and 3 to have the z-value 20. I won't mind redoing the bars to for example singular points instead, if that makes it all easier.
View 9 Replies
View Related
Jul 27, 2012
My application, writing in C#, exports all vertex-data of parts in an assembly to external files.It uses the surfacebody.getExistingFacets method to do this and shows a progressbar to visualise progress.
The application works fine, only when it is finished, when I zoom in or zoom out in inventor, a huge delay exists before the actual zoom is done. And everytime I scroll the mouse wheel or touch my 3D mouse the delay is there.It's really up to several seconds everytime.
However when I close the assembly and re-open it again immediately after my app finished, these delays are not there anymore.Do I have recalculate something, or do I have to invoke a 'free-something' command ?
View 6 Replies
View Related
Jan 15, 2014
Quite new to Ai's scripting stuff.
I'm having a complicate time with Ai's save to jpg options vs artboard sizes and units conversions.
Say, i have a doc (from my client), which they inherited and enhanced for 10 years may be.
It's "supposed" to be in millimeters, but artboardRect gives me those values :
-0.27880000000005
436.191388980878
646.457
-0.20900000000074
which sound like weird points or pixels.
I need to export a jpg (or gif, or png), that will be X pixels wide. For the purpose of the test i set it at 1200.
var maxLargeurPx = 1200;
First thing, getting the artboard's width :
largeurArtboard = Math.abs(thisArtboardRect[2]-thisArtboardRect[0]);
// 646.7358
Then i try to have a multiply factor to use
coefExport = /*Math.round*/ (100 * maxLargeurPx / largeurArtboard);
// 185.54717397738
and then set my ExportFile jpg to this value (i can't give it a number)
// exportOptions.horizontalScale = coefExport
That's when it's getting fun : my images are 1204 px wide with or without clipping.
Of course, i "can't" resize the doc for each export, especially expecting to have dozens of those, with different values, dimensions, etc.
View 5 Replies
View Related
Jul 27, 2012
I wrote the following AppleScript to open a PDF file and export is as PNG. I am using Illustrator CS5.
The export command gets an error: Adobe Illustrator got an error: Can't get current document.
when it encounters the export command.
set inputFile to (choose file with prompt "Open PDF file to convert to PNG:") as text
set exportFile to inputFile & ".png"
tell application "Adobe Illustrator"
if not frontmost then activate
open inputFile as alias without dialogs
export current document to exportFile as PNG24 ¬
with options {class:PNG24 export options ¬
, resolution:300 ¬
, matte color:{red:0, green:0, blue:0}}
close current document saving no
end tell
View 5 Replies
View Related
Jun 20, 2012
Im trying to add a pdf on top of an existing PDF in illustrator using a script. This is supposed to be done by anyone at my firm so that is why I want it in a script. I also have a lot of other functions that works that will do some other stuff with this document.
Created this from the scripting guide but it doesnt work. Im pretty sure its the embedDoc var thats empty and i dont understand why. Im not sure if the File "points" to the directory of the script or the original file but Ive tried both ofcoarse.
This is the masterpiece
var embedDoc = new File("/temp/testfile1.pdf");
if ( app.documents.length > 0 && embedDoc.exists ) {
var doc = app.activeDocument;
var placed = doc.groupItems.createFromFile( embedDoc );
}else {alert("suck")}
View 4 Replies
View Related
Apr 7, 2012
Is it possible to reference layers or groups by their names instead of their index using VBA? If so, what is the sytax? I know you can do it in Extendscript, but I'm not finding info for VBA.
View 7 Replies
View Related
Oct 10, 2012
Swatches Swatches Read-only. The swatches in this document.
Deletes a swatch from the current document
Set appRef = CreateObject("Illustrator.Application")
Set documentSwatches = appRef.ActiveDocument.Swatches
Set swatchToDelete = documentSwatches(5)
swatchToDelete.delete
How am I supposed to be able to make changes to the swatches collection - it is read only...
Not supprisingly I have failed to implement this in C-sharp
View 5 Replies
View Related
Mar 13, 2014
I am trying to close alert at once but the loop continues the alert, how can I stop the alert at once
var doc = app.activeDocument
var layersToTargetNameArray = ["Background", "Artwork", "diecut", "size", "sign off panel"];
for (var i = 0, il = doc.layers.length; i < il; i++) {
var curLayer = doc.layers[i];
[Code] ......
View 6 Replies
View Related
Feb 11, 2014
Is there anyway in JavaScript to replace one swatch with another?
I've seen other posts where similar questions have been asked, but the solution seems to involve iterating over all the pageItems, testing and then changing the fillColor.
All I want to do is delete/replace a specific color. Say replace Yellow with Green.
Is there a way of doing this without recursing through all of the page items?
View 3 Replies
View Related
Sep 11, 2012
I added CS6 COM reference in my VB.NET application and after that I have the following basic object creation in order to convert a eps file to svg. But for some reason when I create this COM object it is launching the Adobe Illustrator application. Why it is doing like this? It’s a simple COM object why it is interacting with Illustrator Editor?
View 9 Replies
View Related
Jul 30, 2013
I'm working on a script with an UI element. I want all values of the 2. cloumn (Rasterkeilfarbe) returned in one array and all values of the 3. column (Klischeenr.) returned in another arry.
var farben = ["black", "red", "blue", "green", "bla", "blupp"]
var myName = myInput (farben);
// rest of the script
[Code]....
View 5 Replies
View Related
May 26, 2012
Is it possible to script a tabbed ui like this, i can't seem to get it to work,
My script for now:
#target illustrator
tabbed_ui();
//Functions
function tabbed_ui(){
[Code]....
View 2 Replies
View Related
Feb 7, 2012
Is it possible to loop thru the artboards (with Illustrator CS5) and only work with the pageItems on the current iterated artboard?
For example, if I have 3 artboards, with 2 textFrames on each artboard. And I add the textFrames sporadically (I add a TextFrame with contents "Text 1" on artboard 1, then a textFrame with contents "Text 2" on artboard 3, then a textFrame with contents "Text 3" on artboard 1, etc).
Artboard 1:
Text 1
Text 3
Artboard 2:
Text 4
Text 6
Artboard 3:
Text 5
Text 2
Is there a way to loop thru these artboards and get the textFrames tied to the appropariate artboard? So, on the first iteration of the loop, I'm looking at artboard 1 and only looking at "Text 1" and "Text 3", then on the the 2nd iteration I'd be working with artboard 2 and it's textFrames "Text 4" and "Text 6", and so on.
If I loop thru only the doc.textFrames, the order would be incorrect, with the way I added each textFrame. Instead of artboard order, they'd be in this order:
Text 1
Text 2
Text 3
Text 4
Text 5
Text 6
View 4 Replies
View Related
Dec 17, 2013
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".
View 9 Replies
View Related
Mar 7, 2012
is there a way to pin certain scripts to the menu in Illustrator (File > Scripts)?
It's quite a work to access to scripts by "File > Scripts > Other script" every time, so I figure there must be some easier way out there.
View 3 Replies
View Related
Feb 7, 2012
We have over 50 artboards in most of our documents. Is there a way to sort the artboards as listed in the artboards panel by name via script?
View 13 Replies
View Related
Sep 2, 2008
How do I terminate the script - not Adobe application(s)?
exit(), quit()... - they don't work.
The only workaround I can think of is a main() function with "returns" in appropriate places, but I am just curious if there is a terminating command.
View 5 Replies
View Related
May 13, 2012
I want to make a tab in a radiotext and it does not work when i just add a tab.
I can add a space and other characters using unicode but i cant make it work with the tab character!
staticText = Grp1.add("statictext",undefined,"What? "); // Does not work
staticText2 = Grp1.add("statictext",undefined,"What?u00A0"); // Works but this is a space character
staticText3 = Grp1.add("statictext",undefined,"What?u0009"); // Does not work with Tab character
View 1 Replies
View Related
Feb 28, 2012
I'm needing to loop through each character of a text frame and check the color of each character. Is it possible to get the swatch name of each character? Or can you only get the red, green, blue values?
I've been experimenting with:
app.activeDocument.textFrames[0].characters[3].characterAttributes.fil lColor.typename;
// Returns SpotColor
But I can't figure out how to get the swatch name of the character this way?
View 2 Replies
View Related
Mar 8, 2012
How to export TIFF from Illustrator using Javascript. I could not find TIFF export type in Illustartor export type.
View 4 Replies
View Related
Sep 26, 2013
i can´t get any Batch script to run.For example a PDF making Batch with a folder selection.I always get the alert, no matching files found.I use cs 5 on a g 5 with osx 10.8.2..why does no file fit in the "mask" ?
Adobe permits you to use, modify, and distribute this file in accordance with the terms of the Adobe license agreement accompanying it. If you have received this file from a source other than Adobe, then your use, modification,or distribution of it requires the prior written permission of Adobe.
Export to PDFs.jsx
DESCRIPTION
This sample gets files specified by the user from the selected folder and batch processes them and saves them as PDFs.Edits by Patrick Mineault:
- only .ai files processed
- files saved in same folder as the input files
- export files have name (oldname)_export.pdf
- PDF settings: non-editable / acrobatLayers=false
for maximum compatibility with Preview
// Main Code [Execution of script begins here]
// uncomment to suppress Illustrator warning dialogs
// app.userInteractionLevel = UserInteractionLevel.DONTDISPLAYALERTS;
var destFolder, sourceFolder, files, fileType, sourceDoc, targetFile, pdfSaveOpts;
// Select the source folder.
sourceFolder = Folder.selectDialog( 'Select the folder with Illustrator .ai files you want to convert to PDF');
[code...
View 9 Replies
View Related