2016-07-09 2 views
0

У меня проблемы с очень простой задачей в сценарии для фотошоп, но я боюсь, что это не описано в других местах в Интернете.Как обрезать слой в скрипте photoshop

Я просто хочу инвертировать существующий выбор, удалить содержимое текущего слоя, а затем отменить выбор.

Конечно, это часть более крупной программы, и если вы заинтересованы, я могу предоставить все детали.

Up знать я делаю:

// Get current document and current layer 
var doc = app.activeDocument; 
var activeLay = doc.activeLayer; 

var a=0 
// find the current layer and assign its code to the variable a 

for(i=doc.layers.length-1; i >=0;) 
{   
    if(doc.layers[i]==activeLay) 
    { 
     a=i; 
     alert("a"+a); 
     break; 
    } 
    else{ i--; } 
    alert ("i"+i); 
} 

// Now cycle remaining layer under the exsiting one, and jump the selection 
// and delete the outer area of selection for each layer 

for(i=a-1; i >=0;) 
{ 
// make layer i active 
doc.activeLayer=doc.layers[i]; 
alert ("active layer"+i); 
// where is my selection in regards to the active layer? 
var s = app.activeDocument.selection.bounds; 
var xSo=s[0]; 
var ySo=s[1]; 

var xLo = activeLay.bounds[0].value; 
var yLo = activeLay.bounds[1].value;  

// I have to go from actual selection poisition to the NEXT layer... which i just made active... 
DeltaX=xLo-s[0]; 
DeltaY=ySo-s[1]; 
doc.selection.translateBoundary(DeltaX,DeltaY); 

//Now invert selection and delete 
doc.selection.invert 
doc.selection.fill (fillType, mode, 0, preserveTransparency) // ??? here what i cannot do? 
doc.selection.invert 
i--; 
} 
+0

Примечание: вы делаете глобальные переменные в своих циклах 'for'. – gcampbell

+0

Спасибо, но это не большая проблема, я думаю ... –

ответ

0

Я нашел ответ сам ... это просто

//Now invert selection and delete 
doc.selection.invert; 
doc.selection.cut(); 
doc.selection.invert; 

моя проблема заключалась в том, что я не знаю, что это случай Javascript и поэтому .cut() не работал, когда я ошибся.