1 person found this helpful
The way Smart Objects work, and why they allow all the things they do, is because they are encapsulated and render down to a single layer with no interaction between the documents. Allowing other interaction would make them too slow to be useful.
Also, Layer Effects don't work that way -- they only affect the single layer they are applied to. They will not affect other layers, and that is what makes their function possible without being too slow to be useful.
Thank you for your response. Is there a way to go about what I'm trying to do without having to make the logo image in each file by hand? I was hoping I could automate it. Is there another way to place logos on many files?
1 person found this helpful
A simple logo? Smart Objects can already do that.
Layer styles applied outside the layer: nothing can do that.
sounds like me. Wanting to push limits.
the logo is made of 4 layers.
I want to apply the effects on-top of a series of images. I was thinking I could place it and have all the effects with in the file apply above the image.
But as you said, its not doable.
Maybe its just that I'm new to Photoshop, which is also true. And you could simply direct me to an appropriate tutorial.
To me its hard to understand what you are asking exactly. There is most probably already a way to do what you need using some kind of workaround. Layer Styles for example can be Copied and Pasted very quickly between documents. And many of these type of things can be automated using Actions very easily.
Layer Styles can be applied to a Smart object as if it were a flat layer. As Chris says "because they are encapsulated and render down to a single layer with no interaction between the documents". This is the only limitation to what you are asking. Most probably some change in your way of working will provide the result and flexibility you are looking for.
You may not be aware but Chris Cox who responded above is the Adobe engineer who put Smart Objects together in Photoshop.
Most of my concern was around automating between documents.
Cause in automation is says, "select previous document" from the drag and drop, but I can't tell if it will "always" use logo.psd and copy the layers from that file to <destination.psd> selected file(s).
and no I was not aware that Chris was the person that put Smart Objects together.
But what you can do - you can open and close them directly from the disk within your Action: If you open your logo document and then Copy and Paste from it, you may be able to automate it this way.
Most of my concern was around automating between documents. Cause in automation is says, "select previous document" from the drag and drop, but I can't tell if it will "always" use…
Yes, you have identified one of the big gaps with Actions, and the way they are implemented in Photoshop at present. This kind of thing is possible only if you know how many documents you have open, and therefore exactly what "previous"and "next" are going to do. It is impossible to record activating documents by name, so you would need Scripting for this part. You are able to move GROUPS of layers from one document to another, but only if the name of the destination document is unchanged. Another major, and continually frustrating limitation with Actions.
Heres a script that will open a document and copy its selected layers to the
original document. Is that what you needed?
doc= new File( "C:/Users/Yelnats/Desktop/LOGO.psd" ) // Put logo image path here docName=activeDocument.name app.open(doc) var idDplc = charIDToTypeID( "Dplc" ); var desc51 = new ActionDescriptor(); var idnull = charIDToTypeID( "null" ); var ref43 = new ActionReference(); var idLyr = charIDToTypeID( "Lyr " ); var idOrdn = charIDToTypeID( "Ordn" ); var idTrgt = charIDToTypeID( "Trgt" ); ref43.putEnumerated( idLyr, idOrdn, idTrgt ); desc51.putReference( idnull, ref43 ); var idT = charIDToTypeID( "T " ); var ref44 = new ActionReference(); var idDcmn = charIDToTypeID( "Dcmn" ); ref44.putName( idDcmn,docName); desc51.putReference( idT, ref44 ); var idVrsn = charIDToTypeID( "Vrsn" ); desc51.putInteger( idVrsn, 2 ); executeAction( idDplc, desc51, DialogModes.NO ); activeDocument.close()