2017-04-11 2 views
1

Je suis actuellement en mesure via JavaScript pour sélectionner des couches actives via:Comment sélectionner, copier et masques coller vecteur dans Photoshop

app.activeDocument.activeLayer.copy(); 

et le coller

app.activeDocument.paste(); 

Cependant le vecteur associé et masques Pixel ne sont pas copiés. Existe-t-il un moyen de copier également les masques vectoriels et les pixels associés au calque actif?

Merci!

EDIT: I a fini en utilisant

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

Fonctionne exactement comme j'en avais besoin!

Répondre

0

L'écouteur de script est votre ami lorsqu'il s'agit de masques de calque. Comme ils sont un peu douloureux. Voici une fonction pour sélectionner le masque de calque lorsque donné un nom de couche (en supposant qu'il existe)

Vous devriez être en mesure de copier et l'appliquer à la nouvelle couche

// 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(); 
    } 
}