Ich habe mehrere Bilder, die dasselbe verknüpfte Smart-Objekt verwenden, aber ich muss Änderungen an einigen einzelnen Bildern vornehmen und möchte sie mit einem neuen verknüpften Smart-Objekt verknüpfen. Wenn ich im Moment eines auswechsele, werden alle verknüpften Smart-Objekte mit demselben Namen ausgetauscht. Gibt es eine Möglichkeit, ein verknüpftes Smart-Objekt als neues Smart-Objekt zu duplizieren, damit ich es ohne Auswirkungen auf andere verknüpfte Smart-Objekte mit demselben Namen austauschen kann?
Vielen Dank im Voraus!
Klicken Sie in der Ebenen-Palette mit der rechten Maustaste auf das Smart-Objekt und wählen Sie im Kontextmenü „ Neues Smart-Objekt durch Kopieren “.
Beschlossen, meinen Kommentar zu einer Antwort zu erweitern.
Sie können das manuell tun:
Sie können dies fast wie machen Action
, aber aus dem Kopf heraus konnte ich nicht herausfinden, wie man Aktionen aufzeichnet, wenn Sie auswählen first layer
. Weil Sie Inhalte nicht ersetzen können, wenn Sie mehrere Ebenen ausgewählt haben.
ODER Sie können es mit Skripten tun / dieses Skript verwenden
Es war eine ziemlich einfache Änderung, die am Code in der Antwort vorgenommen werden musste, die ich in meinem Kommentar erwähnt habe , also dachte ich mir, warum nicht.
Sie finden das Skript hier oder am Ende der Antwort.
Wenn Sie den Code ausführen, wird ein Dialogfeld angezeigt, in dem Sie aufgefordert werden, den ersetzenden Inhalt auszuwählen. Anschließend werden die duplizierten Smart-Objekte wieder in Ihr Originaldokument verschoben.
// 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 );
}
Klicken Sie mit der rechten Maustaste auf die neue Ebene > In Smart-Objekt konvertieren. Klicken Sie in diese Ebene und ersetzen Sie das Objekt. Speichern Sie und Sie sollten diese Ebene konvertiert haben, ohne die ursprüngliche Ebene zu verändern.
Joonas
Joonas