¿Hay alguna forma de intercambiar un objeto inteligente vinculado en Photoshop CC 2014?

Tengo varias imágenes que utilizan el mismo objeto inteligente vinculado, pero necesito realizar cambios en algunas imágenes individuales y quiero vincularlas a un nuevo objeto inteligente vinculado. En este momento, si cambio uno, cambia todos los objetos inteligentes vinculados que tenían el mismo nombre. ¿Hay alguna manera de duplicar un objeto inteligente vinculado como un nuevo objeto inteligente para poder intercambiarlo sin afectar otros objetos inteligentes vinculados con el mismo nombre?

¡Gracias de antemano!

tiene que estar guionado
Ni siquiera recuerdo haber escrito ese comentario, pero Joonas del pasado tiene parte de razón. Puede hacer esto sin secuencias de comandos, pero la "solución de un clic" se puede lograr con secuencias de comandos. El script en esta respuesta es bastante parecido y no requeriría mucho esfuerzo modificarlo. --- Puede hacer esto manualmente : 1. Seleccione el SO vinculado y duplíquelo en un nuevo documento. 2. Reemplace los contenidos como lo haría normalmente. 3. Vuelva a duplicarlo en el documento original. 4. Elimine la capa original si lo desea.

Respuestas (5)

En la paleta Capas, haga clic con el botón derecho del mouse en el objeto inteligente y, en el menú contextual, seleccione " Nuevo objeto inteligente mediante copia ".

Nuevo objeto inteligente mediante copia

Lo siento, tal vez no fui lo suficientemente claro. No estoy usando objetos inteligentes. Estoy usando objetos inteligentes vinculados que no tienen esa opción.

Decidí expandir mi comentario en una respuesta.


Puedes hacerlo manualmente:

  1. Seleccione el SO vinculado y duplíquelo en un nuevo documento.
  2. Reemplace los contenidos como lo haría normalmente.
  3. Duplíquelo de nuevo al documento original.
  4. Elimina la capa original si quieres eso

Casi puedes hacer esto como Action, pero en mi cabeza, no pude encontrar la manera de grabar la acción cuando seleccionas first layer. Porque no puede reemplazar los contenidos cuando tiene varias capas seleccionadas.

O puede hacerlo con secuencias de comandos / use este script

Era una modificación bastante simple que tenía que hacerse al código en la respuesta que mencioné en mi comentario , así que pensé, ¿por qué no?

Puede encontrar el guión aquí o en la parte inferior de la respuesta.

Cuando ejecute el código, habrá un cuadro de diálogo que le pedirá que elija el contenido de reemplazo, después de lo cual continúa moviendo los objetos inteligentes duplicados de regreso a su documento original.

// https://gist.github.com/joonaspaakko/ace1ec3455b6959dc611

#target photoshop

// If there are any documents open, run the code...
// =================================================
if ( app.documents.length > 0 ) {

    // Used later on when the layers are duplicated back to the original document.
    // ===========================================================================
    var docName = app.activeDocument.name;

    // Script listener code - Duplicate active group to a new document.
    // =================================================================
    var idMk = charIDToTypeID( "Mk  " );
        var desc14 = new ActionDescriptor();
        var idnull = charIDToTypeID( "null" );
            var ref10 = new ActionReference();
            var idDcmn = charIDToTypeID( "Dcmn" );
            ref10.putClass( idDcmn );
        desc14.putReference( idnull, ref10 );
        var idUsng = charIDToTypeID( "Usng" );
            var ref11 = new ActionReference();
            var idLyr = charIDToTypeID( "Lyr " );
            var idOrdn = charIDToTypeID( "Ordn" );
            var idTrgt = charIDToTypeID( "Trgt" );
            ref11.putEnumerated( idLyr, idOrdn, idTrgt );
        desc14.putReference( idUsng, ref11 );
        var idVrsn = charIDToTypeID( "Vrsn" );
        desc14.putInteger( idVrsn, 5 );
    executeAction( idMk, desc14, DialogModes.NO );     

    // Script listener code - Select first layer ( not counting Background layer).
    // Just in case more than one layer was selected.
    // ===========================================================================
    var idslct = charIDToTypeID( "slct" );
        var desc76 = new ActionDescriptor();
        var idnull = charIDToTypeID( "null" );
            var ref33 = new ActionReference();
            var idLyr = charIDToTypeID( "Lyr " );
            ref33.putName( idLyr, app.activeDocument.layers[0].name );
        desc76.putReference( idnull, ref33 );
        var idMkVs = charIDToTypeID( "MkVs" );
        desc76.putBoolean( idMkVs, false );
    executeAction( idslct, desc76, DialogModes.NO );

    // Script listener code - Replace contents.
    // =====================================================================
    var idplacedLayerReplaceContents = stringIDToTypeID( "placedLayerReplaceContents" );
        var desc8 = new ActionDescriptor();
        var idnull = charIDToTypeID( "null" );
        desc8.putPath( idnull, new File( "~" ) );
    executeAction( idplacedLayerReplaceContents, desc8, DialogModes.ALL );

    // Script listener code - Select all layers again
    // =======================================================
    var idselectAllLayers = stringIDToTypeID( "selectAllLayers" );
        var desc125 = new ActionDescriptor();
        var idnull = charIDToTypeID( "null" );
            var ref59 = new ActionReference();
            var idLyr = charIDToTypeID( "Lyr " );
            var idOrdn = charIDToTypeID( "Ordn" );
            var idTrgt = charIDToTypeID( "Trgt" );
            ref59.putEnumerated( idLyr, idOrdn, idTrgt );
        desc125.putReference( idnull, ref59 );
    executeAction( idselectAllLayers, desc125, DialogModes.NO );

    // Script listener code - Duplicate active group to the prior document.
    // =====================================================================
    var idDplc = charIDToTypeID( "Dplc" );
        var desc16 = new ActionDescriptor();
        var idnull = charIDToTypeID( "null" );
            var ref13 = new ActionReference();
            var idLyr = charIDToTypeID( "Lyr " );
            var idOrdn = charIDToTypeID( "Ordn" );
            var idTrgt = charIDToTypeID( "Trgt" );
            ref13.putEnumerated( idLyr, idOrdn, idTrgt );
        desc16.putReference( idnull, ref13 );
        var idT = charIDToTypeID( "T   " );
            var ref14 = new ActionReference();
            var idDcmn = charIDToTypeID( "Dcmn" );
            ref14.putName( idDcmn, docName );
        desc16.putReference( idT, ref14 );
        var idVrsn = charIDToTypeID( "Vrsn" );
        desc16.putInteger( idVrsn, 5 );
    executeAction( idDplc, desc16, DialogModes.NO );

    // Closes the new document.
    // =======================================================
    app.activeDocument.close( SaveOptions.DONOTSAVECHANGES );

}
Olvide mencionar. Solo como aviso: la secuencia de comandos duplica los objetos inteligentes, pero no duplica los archivos reales. Personalmente, solo duplicaría el archivo dentro del cuadro de diálogo haciendo clic derecho, si eso es lo que quería que sucediera. Además, el script no navega a la ruta del archivo original.
  1. Haga doble clic en su objeto inteligente vinculado en el panel de capas.
  2. Guardar como, con un nuevo nombre. hacer cambios, guardar y cerrar.
  3. Haga clic derecho en el objeto inteligente vinculado en el panel de capas> convertir en objeto inteligente.
  4. Haga clic derecho nuevamente y vuelva a vincular al archivo, elija el nuevo archivo que acaba de guardar.
  1. Capa de clic derecho
  2. Convertir a objeto inteligente
  3. Volver a vincular al archivo...
  4. Elegir nuevo activo

Haga clic derecho en la nueva capa> Convertir en objeto inteligente. Haga clic en esa capa y reemplace el objeto. Guarde y debería haber convertido esa capa sin alterar la capa original.