Mobile app version of vmapp.org
Login or Join
Nickens508

: Is there a way to swap out one linked smart object in Photoshop CC 2014 I have multiple images using the same linked smart object, but I need to make changes to some individual images and

@Nickens508

Posted in: #AdobePhotoshop #Cc2014 #Smartobject

I have multiple images using the same linked smart object, but I need to make changes to some individual images and want to link it to a new linked smart object.
At the moment if I change one out, it changes out all linked smart objects that had the same name.
Is there a way to duplicate a linked smart object as a new smart object so I can swap it out without effect other linked smart objects with the same name?

Thanks in advance!

10.02% popularity Vote Up Vote Down


Login to follow query

More posts by @Nickens508

2 Comments

Sorted by latest first Latest Oldest Best

 

@Jamie315

Decided to expand my comment into an answer.



You can do that manually:


Select the linked SO and duplicate it to a new document.
Replace the contents like you normally would.
Duplicate it back to the original document.
Delete the original layer if you want that


You can almost make this as Action, but off the top of my head, I couldn't figure out how to record action when you select first layer. Because you can't replace contents when you have multiple layers selected.

OR you can do it with scripting / use this script

It was a pretty simple modification that had to be done to the code in the answer I mentioned in my comment, so I figured, why not.

You can find the script here or at the bottom of the answer.

When you run the code, there will be dialog that asks you to choose the replacing content, after which it continues to move the duplicated smart object(s) back to your original document.

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

}

10% popularity Vote Up Vote Down


 

@Si6392903

In the Layers palette, click the right mouse button on the Smart Object and from the context menu choose "New Smart Object Via Copy".

10% popularity Vote Up Vote Down


Back to top | Use Dark Theme