Can you script Placing a PSD as a SmartObject?

Anyone, especially newbies, asking for help with Photoshop Scripting and Photoshop Automation - as opposed to those contributing to discussion about an aspect of Photoshop Scripting

Moderators: Tom, Kukurykus

BrianC

Can you script Placing a PSD as a SmartObject?

Post by BrianC »

Hi guys I'm new to scripting PS (not to scripting in general) and I've been doing quite well scripting away a HUGE time sink project, but I'm caught on one thing:

is it possible to script placing a PSD as a SmartObject layer? I can OPEN a file as a smart object but that's not what I need.

Is this possible at all? I'm on CS6.

Thanks!

Professional AI Audio Generation within Adobe Premiere Pro - Download Free Plugin here

pfaffenbichler

Can you script Placing a PSD as a SmartObject?

Post by pfaffenbichler »

Yes.
Code: Select all////// place //////
function placeScaleRotateFile (file, xOffset, yOffset, theXScale, theYScale, theAngle) {
// =======================================================
var idPlc = charIDToTypeID( "Plc " );
    var desc5 = new ActionDescriptor();
    var idnull = charIDToTypeID( "null" );
    desc5.putPath( idnull, new File( file ) );
    var idFTcs = charIDToTypeID( "FTcs" );
    var idQCSt = charIDToTypeID( "QCSt" );
    var idQcsa = charIDToTypeID( "Qcsa" );
    desc5.putEnumerated( idFTcs, idQCSt, idQcsa );
    var idOfst = charIDToTypeID( "Ofst" );
        var desc6 = new ActionDescriptor();
        var idHrzn = charIDToTypeID( "Hrzn" );
        var idPxl = charIDToTypeID( "#Pxl" );
        desc6.putUnitDouble( idHrzn, idPxl, xOffset );
        var idVrtc = charIDToTypeID( "Vrtc" );
        var idPxl = charIDToTypeID( "#Pxl" );
        desc6.putUnitDouble( idVrtc, idPxl, yOffset );
    var idOfst = charIDToTypeID( "Ofst" );
    desc5.putObject( idOfst, idOfst, desc6 );
    var idWdth = charIDToTypeID( "Wdth" );
    var idPrc = charIDToTypeID( "#Prc" );
    desc5.putUnitDouble( idWdth, idPrc, theYScale );
    var idHght = charIDToTypeID( "Hght" );
    var idPrc = charIDToTypeID( "#Prc" );
    desc5.putUnitDouble( idHght, idPrc, theXScale );
    var idAngl = charIDToTypeID( "Angl" );
    var idAng = charIDToTypeID( "#Ang" );
    desc5.putUnitDouble( idAngl, idAng,theAngle );   
    var idLnkd = charIDToTypeID( "Lnkd" );
    desc5.putBoolean( idLnkd, true );
executeAction( idPlc, desc5, DialogModes.NO );
return app.activeDocument.activeLayer;
};
BrianC

Can you script Placing a PSD as a SmartObject?

Post by BrianC »

Thanks! The un-readability of that makes me nervous but I guess if it's wrapped up in a function, it should be fine!
pfaffenbichler

Can you script Placing a PSD as a SmartObject?

Post by pfaffenbichler »

If you don’t like it record it yourself with ScriptingListener.plugin and use that.

Edit: In Photoshop many operations are inaccessible via the Document Object Model and necessitate using Action Manager code.
This may look confusing at first (to me it still does) but it usually offers better performance to boot.