[PS CS4-CS6] Скрипт для старой версии.

chesen

Топикстартер
15 лет на форуме
Сообщения
553
Реакции
49
Есть надежный скрипт склеивания сетов в слои. М.б. можно его переделать в смарты?
Код:
// enable double clicking from the Macintosh Finder or the Windows Explorer
#target photoshop

// in case we double clicked the file
app.bringToFront();

// debug level: 0-2 (0:disable, 1:break on error, 2:break at beginning)
// $.level = 2;
// debugger; // launch debugger on next line

//==================================================  ===============
// Globals
//==================================================  ===============

///////////////////////////////////////////////////////////////////////////////
// Dispatch
///////////////////////////////////////////////////////////////////////////////

main();


///////////////////////////////////////////////////////////////////////////////
// Functions
///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////
// Function: main
// Usage: the core routine for this script
// Input: <none>
// Return: <none>
///////////////////////////////////////////////////////////////////////////////
function main() {

        var docName = app.activeDocument.name;
        var doc1 = app.documents[docName];
        var layerSetsCount = doc1.layerSets.length;

        for( var i = 0; i < layerSetsCount; i++ )    // run all group
        {
            doc1.layerSets[0].merge();        // one group
        }
}

//===== END
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
А если сперва слепить этим скриптом сеты в слои а затем тем слои в смарты? Чего я недопонимаю?
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
М-да, так звезды сложились. И меня заработал.
Но горбато. Он не группы в смарты пакует, а слои в группах. А это ни к чему.
Плодить такое количество смартов непотребно.

ну значит надо пройтись по группам, а не по слоям
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
Код:
 for( var i =app.activeDocument.layerSets.length-1;i>=0;i--)
    {
        app.activeDocument.activeLayer = app.activeDocument.layerSets[i];
      createSmartObject();
    }
 

chesen

Топикстартер
15 лет на форуме
Сообщения
553
Реакции
49
Последний вариант вчера пробовал. Не прокатило.
Пишет
createSmartObject(); not function

Сеты сливать нельзя. Они должны потом редактироваться.
В этом и смысл всего геморроя.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Последний вариант вчера пробовал. Не прокатило.
Пишет
createSmartObject(); not function

Сеты сливать нельзя. Они должны потом редактироваться.
В этом и смысл всего геморроя.
Ну предполагается, что вы эту функцию из первого скрипта скопируйте. Вы слишком буквально все воспринимаете когда мы вам постим куски кода, предполагается, что вы будете на них менять аналогичные, а не отдельно запускать 'otbline''fp'
 

chesen

Топикстартер
15 лет на форуме
Сообщения
553
Реакции
49
Ребятки, извините, если что не так.;)
Копирую, вставляю, запускаю.
Пока безуспешно. В любом случае благодарен за помощь.'beer1'
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Какой теперь эффект? Может, все таки файл примера дадите, с которым не получается?
 

chesen

Топикстартер
15 лет на форуме
Сообщения
553
Реакции
49
Код:
// enable double clicking from the Macintosh Finder or the Windows Explorer
#target photoshop

// in case we double clicked the file
app.bringToFront();

// debug level: 0-2 (0:disable, 1:break on error, 2:break at beginning)
// $.level = 2;
// debugger; // launch debugger on next line

//==================================================  ===============
// Globals
//==================================================  ===============

///////////////////////////////////////////////////////////////////////////////
// Dispatch
///////////////////////////////////////////////////////////////////////////////

main();


///////////////////////////////////////////////////////////////////////////////
// Functions
///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////
// Function: main
// Usage: the core routine for this script
// Input: <none>
// Return: <none>
///////////////////////////////////////////////////////////////////////////////
function main() {

        var docName = app.activeDocument.name;
        var doc1 = app.documents[docName];
        var layerSetsCount = doc1.layerSets.length;

        for( var i =app.activeDocument.layerSets.length-1;i>=0;i--)
    {
        app.activeDocument.activeLayer = app.activeDocument.layerSets[i];
      createSmartObject();
    }
}

//===== END
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Вот этот код забыли
Код:
// create smartobject from specified layer (default is active layer)
function createSmartObject(layer)
{
   var doc = app.activeDocument;
   var layer = layer != undefined ? layer : doc.activeLayer;
 
   if(doc.activeLayer != layer) doc.activeLayer = layer;
 
   try
   {
      var idnewPlacedLayer = stringIDToTypeID( "newPlacedLayer" );
      executeAction( idnewPlacedLayer, undefined, DialogModes.NO );
      return doc.activeLayer;
   }
   catch(e)
   {
      return undefined;
   }
}
 
  • Спасибо
Реакции: chesen

chesen

Топикстартер
15 лет на форуме
Сообщения
553
Реакции
49
увы, ничего не происходит.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Т.е. самый первый вариант работал, но создавал на каждый слой свой смартобъект, а последний вообще ничего не делает? 'hz'
В коде
Код:
catch(e)
   {
      return undefined;
   }
добавьте печать ошибки вот так
Код:
catch(e)
   {
      alert(e);
      return undefined;
   }
 

chesen

Топикстартер
15 лет на форуме
Сообщения
553
Реакции
49
Уф. Срослось. ExtendScriptToolkit отсуствует, а через блокнот коряво копи-пастится.
Удобнее работать со смартами, кто знает толк в извращениях.:)
Спасибо форумчанам!