: 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
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!
More posts by @Nickens508
2 Comments
Sorted by latest first Latest Oldest Best
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 );
}
In the Layers palette, click the right mouse button on the Smart Object and from the context menu choose "New Smart Object Via Copy".
Terms of Use Create Support ticket Your support tickets Stock Market News! © vmapp.org2024 All Rights reserved.