Layers to artboards

Статус
Закрыто для дальнейших ответов.

qsedftghk

фея
Топикстартер
15 лет на форуме
Сообщения
2 032
Реакции
1 198
Вчера понадобилось мне такое. Вот, может, кому пригодится.
Скрипт тупой, ибо делалось быстро и не особо заморачиваясь.

Слои раскидываются по монтажным областям. Каждый незаблокированный слой - это новый артбоард. Заблокированный слой - будет перемещен на все артбоарды (типа мастера, что ли)
Короче, проще попробовать, чем объяснять. Делаете три слоя. На каждом любой объект. Один слой заблокируйте. Запустите скрипт и увидите.

При большом кол-ве объектов и слоев иллюстратор, при работе скрипта, делает вид, что зависает (потому что скрипт туп и примитивен). Руками не трогать, а дождаться окончания работы скрипта.
Делалось под СS6, но думаю и в других версиях не ниже CS4 будет работать.

Код:
app.userInteractionLevel=UserInteractionLevel.DONTDISPLAYALERTS;
app.selection=null;
doc = app.activeDocument;
layerlength=doc.layers.length;
indexs = new Array();       

j=0;
for(i=0; i<layerlength; i++)
{
if (doc.layers[i].locked==true)
  {
   doc.layers[i].locked=false;
   doc.layers[i].hasSelectedArtwork=true;
   indexs[j]=i;
   j++;
  }
}
app.copy();


for(i=0; i<indexs.length; i++)
{
doc.layers[indexs[i]].locked=true;
}

DocumentPreset.colorMode=DocumentColorSpace.CMYK;
DocumentPreset.units=RulerUnits.Millimeters;
DocumentPreset.rasterResolution=DocumentRasterResolution.HighResolution;
DocumentPreset.width=doc.width;
DocumentPreset.height=doc.height;
DocumentPreset.numArtboards=layerlength-indexs.length;
newdoc=app.documents.addDocument("BasicCMYK",DocumentPreset);
newdoc.activate();
app.executeMenuCommand('pasteInAllArtboard');

doc.activate();

j=0;
for(i=0; i<layerlength; i++)
{
if (!doc.layers[i].locked)
  {
   doc.layers[i].hasSelectedArtwork=true;
   app.copy();
   newdoc.activate();
   newdoc.artboards.setActiveArtboardIndex(j);
   app.executeMenuCommand('pasteInPlace');
   doc.activate();
   doc.layers[i].hasSelectedArtwork=false;
   j++;
  }
}

app.userInteractionLevel=UserInteractionLevel.DISPLAYALERTS;
 
  • Спасибо
Реакции: suntory и dumbm1
Статус
Закрыто для дальнейших ответов.