Skip to content

Instantly share code, notes, and snippets.

var selection = context.selection;
for (var i = 0; i < selection.count(); i++) {
var layer = selection[i];
if ([layer class] === MSSymbolInstance) {
layer.setName([layer symbolMaster].name());
}
}
@sonburn
sonburn / selectSymbolInstances.js
Created November 4, 2016 20:12
Select all symbol instances on current page
var doc = context.document;
// Deselect everything
doc.currentPage().deselectAllLayers();
// Recursive execute through all layers
selectSliceRecursive(doc.currentPage());
function selectSliceRecursive(layer) {
if (layer instanceof MSSymbolInstance) {
var doc = context.document
var page = doc.currentPage()
var pages = doc.pages()
var count = 0;
var navbarSymbol = findSymbolByName("Material/Bar/Nav");
for (i = 0; i < pages.count(); i++) {
var artboards = pages[i].artboards()
var predicate = NSPredicate.predicateWithFormat("className == 'MSSymbolMaster'"),
masters = context.document.currentPage().children().filteredArrayUsingPredicate(predicate),
mastersLoop = masters.objectEnumerator(),
master;
while (master = mastersLoop.nextObject()) {
var pages = context.document.pages(),
pagesLoop = pages.objectEnumerator(),
page,
count = 0;
var selections = context.selection,
loop = selections.objectEnumerator(),
selection;
while (selection = loop.nextObject()) {
var rectangle = MSRectangleShape.new();
rectangle.frame().x = selection.frame().x();
rectangle.frame().y = selection.frame().y();
rectangle.frame().width = selection.frame().width();
var symbols = context.selection,
symbolLoop = symbols.objectEnumerator(),
symbol;
while (symbol = symbolLoop.nextObject()) {
var pages = context.document.pages(),
pagesLoop = pages.objectEnumerator(),
page,
master,
count = 0;
var artboards = context.document.valueForKeyPath("[email protected]"),
loop = artboards.objectEnumerator(),
artboard;
while (artboard = loop.nextObject()) {
artboard.exportOptions().setLayerOptions(2);
}
var layerName = "Native/Bar/Nav",
predicate = NSPredicate.predicateWithFormat("name == %@",layerName),
layers = context.document.currentPage().children().filteredArrayUsingPredicate(predicate);
for (i = 0; i < layers.length; i++) {
layers[i].setIsLocked(0);
layers[i].frame().setHeight(42);
layers[i].select_byExpandingSelection(true,false);
context.document.actionsController().actionForID("MSAlignLayersBottomAction").doPerformAction(nil);
layers[i].setIsLocked(1);
var libraries = AppController.sharedInstance().librariesController().libraries(),
libraryLoop = libraries.objectEnumerator(),
library;
while (library = libraryLoop.nextObject()) {
// Do something
}
for (var obj in arr) {
var i = Object.keys(arr).indexOf(obj);
}