2017-04-11 58 views
1

複製和粘貼矢量蒙我目前能夠通過選擇有源層:如何選擇,通過JavaScript在Photoshop

app.activeDocument.activeLayer.copy(); 

,並將其粘貼

app.activeDocument.paste(); 

但是相關的矢量圖與像素口罩不會被複制過來。有沒有一種方法來複制與有源層以及相關的矢量和像素面具?

謝謝!

編輯: 我最終使用

app.activeDocument.activeLayer.duplicate(destinationDocument,ElementPlacement.PLACEATBEGINNING);

完全按照我需要的那樣工作!

回答

0

當談到圖層蒙版時,腳本偵聽器是您的朋友。因爲他們是一個有點疼痛。 給出圖層名稱時,這裏的選擇圖層蒙版的功能(假設它存在)

你應該能夠複製並應用到新的圖層

// FUNCTION SELECT MASK 
function selectMask(LayerName) 
{ 
    try 
    { 
    var desc = new ActionDescriptor(); 
    var ref = new ActionReference(); 
    ref.putEnumerated(charIDToTypeID('Chnl'), charIDToTypeID('Chnl'), charIDToTypeID('Msk ')); 
    ref.putName(charIDToTypeID('Lyr '), LayerName); 
    desc.putReference(charIDToTypeID('null'), ref); 
    desc.putBoolean(charIDToTypeID('MkVs'), true); 
    executeAction(charIDToTypeID('slct'), desc, DialogModes.NO); 

    // ======================================================= 
    var id1083 = charIDToTypeID("setd"); 
    var desc238 = new ActionDescriptor(); 
    var id1084 = charIDToTypeID("null"); 
    var ref161 = new ActionReference(); 
    var id1085 = charIDToTypeID("Chnl"); 
    var id1086 = charIDToTypeID("fsel"); 
    ref161.putProperty(id1085, id1086); 
    desc238.putReference(id1084, ref161); 
    var id1087 = charIDToTypeID("T "); 
    var ref162 = new ActionReference(); 
    var id1088 = charIDToTypeID("Chnl"); 
    var id1089 = charIDToTypeID("Ordn"); 
    var id1090 = charIDToTypeID("Trgt"); 
    ref162.putEnumerated(id1088, id1089, id1090); 
    desc238.putReference(id1087, ref162); 
    executeAction(id1083, desc238, DialogModes.NO); 
    } 
    catch(e) 
    { 
    //alert("This layer has NO layer mask!"); 
    activeDocument.selection.deselect(); 
    } 
}