: Illustrator script to fill a layer and repeat I'm very new to illustrator and I have not done scripting before, I have like a hundred illustrator files that I need to change the background
I'm very new to illustrator and I have not done scripting before, I have like a hundred illustrator files that I need to change the background color lets say background color is layer 5 for every file, can scripting make it like repeat changing the background color for all my files, i would really appreciate some help with how to start writing a script.
Example below:
script below:
var doc = app.activeDocument;
var layers = doc.layers;
var colortest = new RGBColor();
colortest.red = 251;
colortest.green = 237;
colortest.blue = 31;
layers[4].color = colortest;
i havent done any scripting before, and ive just been researching for a while and its really confusing me. i tried the script above based on my researches but its wrong.instead of changing the blue color of the layer it changes that yellow color thing
Script result:
More posts by @Shakeerah625
2 Comments
Sorted by latest first Latest Oldest Best
Actually guys ive got an answer from another forum and it works great
var main = function() {
var doc,
fo = Folder.selectDialog("Please select some folder with ai files"),
aiFilter = function(f){return /.ai$/i.test(decodeURI(f.name))},
aiFiles, n, aiFile;
if ( !fo ) return;
aiFiles = fo.getFiles ( aiFilter );
if ( !aiFiles.length ) return;
while ( aiFile = aiFiles.pop() ){
processAiFile ( aiFile );
}
}
function processAiFile ( aiFile ) {
var doc = app.open ( aiFile ),
aiLayer = getLayerByName (doc, "Layer 5"),
background;
if ( !aiLayer ) {
log ( "Layer "Layer 5" couldn't be found in "+doc.name );
doc.close( SaveOptions.DONOTSAVECHANGES );
return;
}
if ( !aiLayer.pathItems.length ) {
log ( "Layer "Layer 5" doesn't contain any path item" );
doc.close( SaveOptions.DONOTSAVECHANGES );
return;
}
background = aiLayer.pathItems[0];
background.filled = true;
background.fillColor = getColor({cyan:0, magenta:100, yellow:100, black:0} );
doc.close ( SaveOptions.SAVECHANGES );
log ( aiFile.fsName+ " processed successfully" );
}
function getColor(obj) {
newCMYKColor = new CMYKColor();
newCMYKColor.black = obj.black;
newCMYKColor.cyan = obj.cyan;
newCMYKColor.magenta = obj.magenta;
newCMYKColor.yellow = obj.yellow;
return newCMYKColor;
}
function getLayerByName ( doc, layerName) {
var found = false,
layers = doc.layers,
n = layers.length;
while ( n-- ) {
if ( layers[n].name == layerName ) {
return layers[n];
}
}
return null;
}
var log = function(msg) {
var r = new File ( Folder.desktop+"/log.txt" );
r.open('a');
r.writeln ( msg );
r.close();
}
main();
credits to Loic
www.ozalto.com/
The issue is that you're targeting the wrong scripting object to command.
The layer.color is simply the layer's color-marker inside the layers panel.
What you want to do is actually change the artwork inside the actual layer. Check out the edited script here- it uses the collection of pathItems inside a layer to target the first path. This will only work if your blue shape is a rectangle inside the layer - and is not part of any group but is a top-level piece. (Open up your individual layers inside the layers panel to observe the artwork grouping structure) It will also not work if your blue shape is a raster image, etc.
#target illustrator
function test(){
var doc = app.activeDocument;
var layers = doc.layers;
var colortest = new RGBColor();
colortest.red = 251;
colortest.green = 237;
colortest.blue = 31;
layers[4].pathItems[0].fillColor = colortest;
};
test();
Terms of Use Create Support ticket Your support tickets Stock Market News! © vmapp.org2024 All Rights reserved.