Skip to content

Instantly share code, notes, and snippets.

@davestewart
Created June 29, 2015 13:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save davestewart/e10bd71073a08808f28e to your computer and use it in GitHub Desktop.
Save davestewart/e10bd71073a08808f28e to your computer and use it in GitHub Desktop.
Reorder Illustrator layers by name
#target "Illustrator"
function trace()
{
$.writeln(arguments[0] || '');
return '';
}
function inspect(obj)
{
if(!obj)return
for(var name in obj)
{
$.writeln(name + ' > ' + obj[name]);
}
}
function collect(collection, prop)
{
var arr = [];
for(var i = 0; i < collection.length; i++)
{
arr.push(prop ? collection[i][prop] : collection[i]);
}
return arr;
}
function orderItems()
{
var layer = app.activeDocument.layers[0];
var groups = layer.groupItems;
var paths = layer.pathItems;
var names = [];
names = names.concat(collect(groups, 'name'));
names = names.concat(collect(paths, 'name'));
names.sort();
for(var i = 0; i < names.length; i++)
{
var name = names[i];
var item;
try
{
item = items.getByName(name);
}
catch(err)
{
item = paths.getByName(name);
}
item.zOrder(ZOrderMethod.SENDTOBACK);
}
return true;
}
function orderItems(layer)
{
trace(layer instanceof GroupItem)
layer = layer || app.activeDocument.activeLayer;
var items = layer.pageItems;
var names = collect(items, 'name').sort();
for(var i = 0; i < names.length; i++)
{
item = items.getByName(names[i]);
item.zOrder(ZOrderMethod.SENDTOBACK);
}
return true;
}
// reorder
orderItems(app.activeDocument.layers[0].groupItems[0])
// debug
trace(app.activeDocument.layers[0].pageItems.length)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment