如何将一个图层与另一个图层对齐?

问题描述 投票:0回答:1

我正在尝试将一个图层与另一个图层的顶部和左侧对齐。我找到了进行对齐的代码,但我更改的选择部分不起作用。

如何将选区设置为我拥有的特定图层?

Doc.selection.select(ImgLocation);
Doc.activeLayer = layer;

var desc = new ActionDescriptor();
var ref = new ActionReference();
ref.putEnumerated(charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt"));
desc.putReference(charIDToTypeID("null"), ref);
desc.putEnumerated(charIDToTypeID("Usng"), charIDToTypeID("ADSt"), charIDToTypeID('AdLf'));
desc.putEnumerated(charIDToTypeID("Usng"), charIDToTypeID("ADSt"), charIDToTypeID('AdTp'));
try {
  executeAction(charIDToTypeID("Algn"), desc, DialogModes.NO);
} catch (e) {}

Doc.selection.deselect();

ImgLocation
是我想要对齐的
ArtLayer
对象;
layer
是我想要执行对齐功能的图层。

photoshop-script
1个回答
0
投票

对齐图层很简单,只是你想要对齐的方式变得复杂。

function align_it(charID, bool)
{

  //       phEnumADSTops -> 1097094256 -> "AdTp"  ADSTops
  //   phEnumADSCentersV -> 1097089878 -> "AdCV"  ADSCentersV
  //    phEnumADSBottoms -> 1097089652 -> "AdBt"  ADSBottoms

  //      phEnumADSLefts -> 1097092198 -> "AdLf"  ADSLefts
  //   phEnumADSCentersH -> 1097089864 -> "AdCH"  ADSCentersH
  //     phEnumADSRights -> 1097093735 -> "AdRg"  ADSRights


  //   phEnumADSVertical -> 1097094770 -> "AdVr"  ADSVertical
  // phEnumADSHorizontal -> 1097091186 -> "AdHr"  ADSHorizontal


  if (charID == "") return;
  var alignID = "Algn";
  if (bool == false) alignID = "Dstr";

   // =======================================================
   var idAlgn = charIDToTypeID( alignID );
   var desc125 = new ActionDescriptor();
   var idnull = charIDToTypeID( "null" );
   var ref34 = new ActionReference();
   var idLyr = charIDToTypeID( "Lyr " );
   var idOrdn = charIDToTypeID( "Ordn" );
   var idTrgt = charIDToTypeID( "Trgt" );
   ref34.putEnumerated( idLyr, idOrdn, idTrgt );
   desc125.putReference( idnull, ref34 );
   var idUsng = charIDToTypeID( "Usng" );
   var idADSt = charIDToTypeID( "ADSt" ); // alignDistributeSelector
   var idAdCV = charIDToTypeID( charID ); // character ID
   desc125.putEnumerated( idUsng, idADSt, idAdCV );
   executeAction( idAlgn, desc125, DialogModes.NO );
}

从注释中可以看到对齐类型、代码、四字母代码、对齐类型。通过设置布尔值,它可以从对齐切换到分布。

至于图层,我认为它依赖于选择多个图层。如何获得选定的图层?您可以了解更多信息,因为该问题已已得到解答

© www.soinside.com 2019 - 2024. All rights reserved.