Copy link to clipboard
Copied
Copy link to clipboard
Copied
I think this is similar question but with answer https://community.adobe.com/t5/photoshop-ecosystem-discussions/how-to-move-one-layer-above-another-l...
Copy link to clipboard
Copied
Oh yes, because of the odd formatting, I did read only half of the message. 😉
(I deleted my message, as it was obviously not answering the question)
Copy link to clipboard
Copied
Copy link to clipboard
Copied
Copy link to clipboard
Copied
I'm a bit confused. If the video demonstrates the process you want, then what is the problem?
Is the video a "real time" recording, or did you create the video to demonstrate the process that you want scripted (therefore it wasn't a live recording)?
It also appears that the image is being resized in the video, rather than only being clipped to a new shape?
Copy link to clipboard
Copied
Sir thanks for your reply. " I'm a bit confused. If the video demonstrates the process you want, then what is the problem? "= Ye moveing ek software se ho raha hai. .. Kya ye script se move & place ho sakta hai
Copy link to clipboard
Copied
Sir thanks for your reply. "Ye moveing ek software se ho raha hai. ..
Kya ye script se move & place ho sakta hai"
By @nandu nag
Translation software from Hindi: "This movement is being done by a software. ..can it be move & place from script"
The short answer is yes, in a scripting kind of way!
The script would be run once on a selected layer to set the source layer. Then the same/different script could be run a second time to move the previously nominated layer to the newly selected target layer position.
Or perhaps if there were uniquely coloured labels on the layers, or unique names, a specific script could be run once as the source and target is explicitly indicated.
You would need to write out step by step exactly what you require.
For example, when the layer is moved, it must be above the clipping group layer.
When the layer is moved, should it be centred or upper left to the new clipping group layer content? Should the image be resized or left at the same size as before? What if the aspect ratio is different, what has to happen?
Why use clipping group layers? Why not use layer alpha channels to create selections/masks? Why don't you use a frame instead?
It would be best to supply a PSD copy of the template file.
The project scope and requirements really need to be made clear so as not to waste any volunteer's time.
Copy link to clipboard
Copied
Sir....Two rename layers that place the first rename layer on the second rename layer
Every time the first rename layer is the place.....
The script that I have is not working properly ....plz see this
"
var idRvrs = charIDToTypeID( "Rvrs" );
var desc131 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref38 = new ActionReference();
var idLyr = charIDToTypeID( "Lyr " );
var idOrdn = charIDToTypeID( "Ordn" );
var idTrgt = charIDToTypeID( "Trgt" );
ref38.putEnumerated( idLyr, idOrdn, idTrgt );
desc131.putReference( idnull, ref38 );
executeAction( idRvrs, desc131, DialogModes.NO );
var newName =("layer name", "/");
var layers = getSelectedLayers();
for (var i = 0; i < layers.length; i ++){
layers[i].name = newName;
}
function getSelectedLayers(){
var idGrp = stringIDToTypeID( "groupLayersEvent" );
var descGrp = new ActionDescriptor();
var refGrp = new ActionReference();
refGrp.putEnumerated(charIDToTypeID( "Lyr " ),charIDToTypeID( "Ordn" ),charIDToTypeID( "Trgt" ));
descGrp.putReference(charIDToTypeID( "null" ), refGrp );
executeAction( idGrp, descGrp, DialogModes.ALL );
var resultLayers=new Array();
for (var ix=0;ix<app.activeDocument.activeLayer.layers.length;ix++){resultLayers.push(app.activeDocument.activeLayer.layers[ix])}
var id8 = charIDToTypeID( "slct" );
var desc5 = new ActionDescriptor();
var id9 = charIDToTypeID( "null" );
var ref2 = new ActionReference();
var id10 = charIDToTypeID( "HstS" );
var id11 = charIDToTypeID( "Ordn" );
var id12 = charIDToTypeID( "Prvs" );
ref2.putEnumerated( id10, id11, id12 );
desc5.putReference( id9, ref2 );
executeAction( id8, desc5, DialogModes.NO );
return resultLayers;
}
var idslct = charIDToTypeID( "slct" );
var desc133 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref39 = new ActionReference();
var idLyr = charIDToTypeID( "Lyr " );
ref39.putName( idLyr, "/" );
desc133.putReference( idnull, ref39 );
var idMkVs = charIDToTypeID( "MkVs" );
desc133.putBoolean( idMkVs, false );
var idLyrI = charIDToTypeID( "LyrI" );
var list16 = new ActionList();
list16.putInteger( 107 );
desc133.putList( idLyrI, list16 );
executeAction( idslct, desc133, DialogModes.NO );
var oldPref = app.preferences.rulerUnits
app.preferences.rulerUnits = Units.PIXELS;
var doc = activeDocument;
var iLayer = doc.activeLayer;
layerDown ();
var mLayerB = doc.activeLayer.bounds;
doc.activeLayer = iLayer;
var scale = Math.max((mLayerB[2]-mLayerB[0])/(iLayer.bounds[2]-iLayer.bounds[0]),(mLayerB[3]-mLayerB[1])/(iLayer.bounds[3]-iLayer.bounds[1]));
iLayer.resize (scale*100,scale*100);
iLayer.translate((mLayerB[0]+mLayerB[2])/2-(iLayer.bounds[0]+iLayer.bounds[2])/2,(mLayerB[1]+mLayerB[3])/2-(iLayer.bounds[1]+iLayer.bounds[3])/2);
function layerDown(){
var idslct = charIDToTypeID( "slct" );
var desc2 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref1 = new ActionReference();
var idLyr = charIDToTypeID( "Lyr " );
var idOrdn = charIDToTypeID( "Ordn" );
var idBckw = charIDToTypeID( "Bckw" );
ref1.putEnumerated( idLyr, idOrdn, idBckw );
desc2.putReference( idnull, ref1 );
var idMkVs = charIDToTypeID( "MkVs" );
desc2.putBoolean( idMkVs, false );
var idLyrI = charIDToTypeID( "LyrI" );
var list1 = new ActionList();
list1.putInteger( 3 );
desc2.putList( idLyrI, list1 );
executeAction( idslct, desc2, DialogModes.NO );
};
var idsetd = charIDToTypeID( "setd" );
var desc135 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref40 = new ActionReference();
var idLyr = charIDToTypeID( "Lyr " );
var idOrdn = charIDToTypeID( "Ordn" );
var idTrgt = charIDToTypeID( "Trgt" );
ref40.putEnumerated( idLyr, idOrdn, idTrgt );
desc135.putReference( idnull, ref40 );
var idT = charIDToTypeID( "T " );
var desc136 = new ActionDescriptor();
var idNm = charIDToTypeID( "Nm " );
desc136.putString( idNm, """/""" );
var idLyr = charIDToTypeID( "Lyr " );
desc135.putObject( idT, idLyr, desc136 );
executeAction( idsetd, desc135, DialogModes.NO ); "
Copy link to clipboard
Copied
You should create a new topic for the rename, perhaps a moderator could split the topic?
Copy link to clipboard
Copied
thank to reply...
By grouping the layer which is to be moved and the layer on which it is to be placed,
by grouping those dona layers and then by identifying the layer name,
I am moving the layer to create an action.. but on grouping, the place of the layer is Position.
Copy link to clipboard
Copied
if possible ..one layer from 2 layers (which is the clipping mask layer and its layer name)
can be selected...Select the clipping mask layer only by layer name
Copy link to clipboard
Copied
If one of the two layers is identified by the clipping mask layer. , then you can move or place the clipping mask layer...if it is possible
Copy link to clipboard
Copied
Please provide a better explanation of the intended process – at the very least a screenshot of »before« and one »after«.
And please try posting in your native or preferred language – maybe the Auto-translation will not work out for that, but it might be worth a try.
Copy link to clipboard
Copied
Sorry to my English...I have created a photoshop action which is working, but whenever I group the selected layer, the layer position is changing.
https://drive.google.com/file/d/1Ut6OrfZcglfArEUn4l7sSKdYMr3fl6ur/view?usp=share_link
Can the image layer be moved by identifying the clipping mask layer by changing the name of the select layer?
* select layer rename
* clipping mask layer identity
*identity layer move or paste or place
Copy link to clipboard
Copied
I don’t have access to the Action and your description does not seem clear to me.
Based on the screenshots I guess this Script might do about half of what you want.
If one Smart Object and one Shape Layer are selected it duplicates the SO and scales it to fill the bounds of the Shape Layer.
You can then move that instance of the SO atop the Shape Layer and Clipping Masking it with DOM or AM code.
// if one smart object and one shape layer are selected scale
// a copy of the smart object to fill the shape layer’s bounds;
// 2023, use it at your own risk;
#target photoshop
if (app.documents.length > 0) {
var selectedLayers = collectSelectedLayersBounds ();
if (selectedLayers.length == 2) {
if (selectedLayers[0][3] == 5 && selectedLayers[1][3] == 4) {
var theSO = selectedLayers[0];
var theSL = selectedLayers[1];
};
if (selectedLayers[0][3] == 4 && selectedLayers[1][3] == 5) {
var theSO = selectedLayers[1];
var theSL = selectedLayers[0];
};
if (theSO != undefined && theSL != undefined) {
var soWidth = theSO[2][2]-theSO[2][0];
var soHeight = theSO[2][3]-theSO[2][1];
var slWidth = theSL[2][2]-theSL[2][0];
var slHeight = theSL[2][3]-theSL[2][1];
var xSO = soWidth/soHeight;
var xSL = slWidth/slHeight;
var xOffset = (theSL[2][0] + slWidth/2) - (theSO[2][0] + soWidth/2);
var yOffset = (theSL[2][1] + slHeight/2) - (theSO[2][1] + soHeight/2);
if (xSO < xSL) {var theScale = slWidth/soWidth*100}
else {var theScale = slHeight/soHeight*100};
duplicateMoveRotateScale(theSO[1], xOffset, yOffset, theScale, theScale, 0);
}
}
};
////// collect bounds of selected layers //////
function collectSelectedLayersBounds () {
// set to pixels;
var originalRulerUnits = app.preferences.rulerUnits;
app.preferences.rulerUnits = Units.PIXELS;
// get selected layers;
var selectedLayers = new Array;
var ref = new ActionReference();
ref.putEnumerated( charIDToTypeID("Dcmn"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") );
var desc = executeActionGet(ref);
if (desc.getBoolean(stringIDToTypeID("hasBackgroundLayer")) == true) {var theAdd =0}
else {var theAdd = 1};
if( desc.hasKey( stringIDToTypeID( 'targetLayers' ) ) ){
desc = desc.getList( stringIDToTypeID( 'targetLayers' ));
var c = desc.count;
var selectedLayers = new Array();
// run through selected layers;
for(var i=0;i<c;i++){
var theIndex = desc.getReference( i ).getIndex()+theAdd;
// get id for solid color layers;
try {
var ref = new ActionReference();
ref.putIndex( charIDToTypeID("Lyr "), theIndex );
var layerDesc = executeActionGet(ref);
var theName = layerDesc.getString(stringIDToTypeID('name'));
var theIdentifier = layerDesc.getInteger(stringIDToTypeID ("layerID"));
var theKind = layerDesc.getInteger(stringIDToTypeID('layerKind'));
var theBounds = layerDesc.getObjectValue(stringIDToTypeID("bounds"));
var theseBounds = [theBounds.getUnitDoubleValue(stringIDToTypeID("left")), theBounds.getUnitDoubleValue(stringIDToTypeID("top")), theBounds.getUnitDoubleValue(stringIDToTypeID("right")), theBounds.getUnitDoubleValue(stringIDToTypeID("bottom"))];
selectedLayers.push([theName, theIdentifier, theseBounds, theKind]);
} catch (e) {};
};
// if only one:
}else{
var ref = new ActionReference();
ref.putEnumerated( charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") );
var layerDesc = executeActionGet(ref);
try {
var theName = layerDesc.getString(stringIDToTypeID('name'));
var theIdentifier = layerDesc.getInteger(stringIDToTypeID ("layerID"));
var theKind = layerDesc.getInteger(stringIDToTypeID('layerKind'));
var theBounds = layerDesc.getObjectValue(stringIDToTypeID("bounds"));
var theseBounds = [theBounds.getUnitDoubleValue(stringIDToTypeID("left")), theBounds.getUnitDoubleValue(stringIDToTypeID("top")), theBounds.getUnitDoubleValue(stringIDToTypeID("right")), theBounds.getUnitDoubleValue(stringIDToTypeID("bottom"))];
selectedLayers = [[theName, theIdentifier, theseBounds, theKind]]
} catch (e) {};
};
// reset;
app.preferences.rulerUnits = originalRulerUnits;
return selectedLayers;
};
////// duplicate layer and move, rotate and scale it //////
function duplicateMoveRotateScale (theLayerID, theX, theY, theScaleX, theScaleY, theRotation) {
selectLayerByID(theLayerID, false);
try{
// =======================================================
var idTrnf = charIDToTypeID( "Trnf" );
var desc10 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref6 = new ActionReference();
var idLyr = charIDToTypeID( "Lyr " );
var idOrdn = charIDToTypeID( "Ordn" );
var idTrgt = charIDToTypeID( "Trgt" );
ref6.putEnumerated( idLyr, idOrdn, idTrgt );
desc10.putReference( idnull, ref6 );
var idFTcs = charIDToTypeID( "FTcs" );
var idQCSt = charIDToTypeID( "QCSt" );
var idQcsa = charIDToTypeID( "Qcsa" );
desc10.putEnumerated( idFTcs, idQCSt, idQcsa );
var idOfst = charIDToTypeID( "Ofst" );
var desc11 = new ActionDescriptor();
var idHrzn = charIDToTypeID( "Hrzn" );
var idPxl = charIDToTypeID( "#Pxl" );
desc11.putUnitDouble( idHrzn, idPxl, theX );
var idVrtc = charIDToTypeID( "Vrtc" );
var idPxl = charIDToTypeID( "#Pxl" );
desc11.putUnitDouble( idVrtc, idPxl, theY );
var idOfst = charIDToTypeID( "Ofst" );
desc10.putObject( idOfst, idOfst, desc11 );
var idWdth = charIDToTypeID( "Wdth" );
var idPrc = charIDToTypeID( "#Prc" );
desc10.putUnitDouble( idWdth, idPrc, theScaleX );
var idHght = charIDToTypeID( "Hght" );
var idPrc = charIDToTypeID( "#Prc" );
desc10.putUnitDouble( idHght, idPrc, theScaleY );
var idAngl = charIDToTypeID( "Angl" );
var idAng = charIDToTypeID( "#Ang" );
desc10.putUnitDouble( idAngl, idAng, theRotation );
var idIntr = charIDToTypeID( "Intr" );
var idIntp = charIDToTypeID( "Intp" );
var idbicubicAutomatic = stringIDToTypeID( "bicubicAutomatic" );
desc10.putEnumerated( idIntr, idIntp, idbicubicAutomatic );
var idCpy = charIDToTypeID( "Cpy " );
desc10.putBoolean( idCpy, true );
executeAction( idTrnf, desc10, DialogModes.NO );
return app.activeDocument.activeLayer
} catch (e) {}
};
// based on code by mike hale, via paul riggott;
function selectLayerByID(id,add){
add = undefined ? add = false:add
var ref = new ActionReference();
ref.putIdentifier(charIDToTypeID("Lyr "), id);
var desc = new ActionDescriptor();
desc.putReference(charIDToTypeID("null"), ref );
if(add) desc.putEnumerated( stringIDToTypeID( "selectionModifier" ), stringIDToTypeID( "selectionModifierType" ), stringIDToTypeID( "addToSelection" ) );
desc.putBoolean( charIDToTypeID( "MkVs" ), false );
try{
executeAction(charIDToTypeID("slct"), desc, DialogModes.NO );
}catch(e){
alert(e.message);
}
};
I will stop following this thread.
Copy link to clipboard
Copied
thanku to ...sorry to not my need this script..
( Identify clipping mask layer from select 2 layer...if it is possible)