[FIXED] Drehen Sie den Photoshop -Text mit Skript vom Ausgangspunkt des Textes aus

Ausgabe

Ich drehe eine Textebene mit dem folgenden Skript .

Sie dreht sich vom Mittelpunkt des Textes aus


. Gibt es im Skript eine Möglichkeit, den Text vom linken (Startpunkt) aus zu drehen?

var idRtte = charIDToTypeID( "Rtte" );
    var desc199 = new ActionDescriptor();
    var idnull = charIDToTypeID( "null" );
        var ref15 = new ActionReference();
        var idLyr = charIDToTypeID( "Lyr " );
        var idOrdn = charIDToTypeID( "Ordn" );
        var idTrgt = charIDToTypeID( "Trgt" );
        ref15.putEnumerated( idLyr, idOrdn, idTrgt );
    desc199.putReference( idnull, ref15 );
    var idAngl = charIDToTypeID( "Angl" );
    var idAng = charIDToTypeID( "#Ang" );
    desc199.putUnitDouble( idAngl, idAng, rotation);
executeAction( idRtte, desc199, DialogModes.NO );

Lösung

Photoshop verwendet einen zusätzlichen Deskriptor, um einen Drehpunkt zu definieren: Es gibt mehrere hartcodierte Zeichenfolgen für Ebenenecken und einen erweiterten Deskriptor für benutzerdefinierte Drehpunkte, die zwei absolute Koordinaten verwenden.

Vordefinierte Ecken:

// 'Qcs0' top left
// 'Qcs7' middle left
// 'Qcs3' bottom left

// 'Qcs4' top center
// 'Qcsa' middle center
// 'Qcs6' bottom center

// 'Qcs1' top right
// 'Qcs5' middle right
// 'Qcs2' bottom right

function rotatePivot(pivot, angle)
{
  var desc = new ActionDescriptor();
  var ref = new ActionReference();
  ref.putEnumerated(charIDToTypeID('Lyr '), charIDToTypeID('Ordn'), charIDToTypeID('Trgt'));
  desc.putReference(charIDToTypeID('null'), ref);
  desc.putEnumerated(charIDToTypeID('FTcs'), charIDToTypeID('QCSt'), charIDToTypeID(pivot));
  desc.putUnitDouble(charIDToTypeID('Angl'), charIDToTypeID('#Ang'), angle);
  executeAction(charIDToTypeID('Trnf'), desc, DialogModes.NO);
} // end of rotatePivot()

rotatePivot('Qcs3', 45);

Benutzerdefinierter Drehpunkt. pivotCoordsist ein Array von absoluten Koordinaten.

// 'Qcsi' custom pivot
function rotateCustomPivot(pivotCoords, angle)
{
  var desc = new ActionDescriptor();
  var ref = new ActionReference();
  ref.putEnumerated(charIDToTypeID('Lyr '), charIDToTypeID('Ordn'), charIDToTypeID('Trgt'));
  desc.putReference(charIDToTypeID('null'), ref);
  desc.putEnumerated(charIDToTypeID('FTcs'), charIDToTypeID('QCSt'), charIDToTypeID('Qcsi'));
  var descPivot = new ActionDescriptor();
  descPivot.putUnitDouble(charIDToTypeID('Hrzn'), charIDToTypeID('#Pxl'), pivotCoords[0]);
  descPivot.putUnitDouble(charIDToTypeID('Vrtc'), charIDToTypeID('#Pxl'), pivotCoords[1]);
  desc.putObject(charIDToTypeID('Pstn'), charIDToTypeID('Pnt '), descPivot);
  desc.putUnitDouble(charIDToTypeID('Angl'), charIDToTypeID('#Ang'), angle);
  executeAction(charIDToTypeID('Trnf'), desc, DialogModes.NO);
} // end of rotateCustomPivot()

// b[0] and b[3] are bottom-left coord of a layer,
// so this will rotate using a custom point 
// that's 10 pixels away from that coord by x and y
var b = activeDocument.activeLayer.bounds;
var x = b[0] - 10;
var y = b[3] + 10;
rotateCustomPivot([x, y], 45);


Beantwortet von –
Sergey Kritskiy


Antwort geprüft von –
Jay B. (FixError Admin)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like