在 Photoshop 中循环路径点

问题描述

我试图在 Photoshop 中遍历创建路径以找出锚点位置等

var srcDoc = app.activeDocument;

// create the array of PathPointInfo objects
var lineArray = new Array();
lineArray.push(new PathPointInfo());
lineArray[0].kind = PointKind.CORNERPOINT;
lineArray[0].anchor = new Array(20,160);
lineArray[0].leftDirection =  [35,200];
lineArray[0].rightDirection = lineArray[0].anchor;

lineArray.push(new PathPointInfo());
lineArray[1].kind = PointKind.CORNERPOINT;
lineArray[1].anchor = new Array(20,40);
lineArray[1].leftDirection = lineArray[1].anchor;
lineArray[1].rightDirection =  [220,260];

// create a SubPathInfo object,which holds the line array in its entireSubPath property.
var linesubPathArray = new Array();
linesubPathArray.push(new SubPathInfo());
linesubPathArray[0].operation = ShapeOperation.SHAPEXOR;
linesubPathArray[0].closed = false;
linesubPathArray[0].entireSubPath = lineArray;

//create the path item,passing subpath to add method
var myPathItem = srcDoc.pathItems.add("A Line",linesubPathArray);


for (var i = 0; i < linesubPathArray[0].entireSubPath.length; i++)
 {
   var b = linesubPathArray[0].entireSubPath[i].anchor;
   alert(b);
}

这很好用,但不是创建路径并找出它的信息,而是我想遍历每个路径并获得相同的信息。这应该与上面的循环相同,只是没有显式调用 linesubPathArray 及其部分。

for (var i = 0; i < srcDoc.pathItems[0].subPathItems.pathPoints.length; i++) // wrong I think
{
  var b = srcDoc.pathItems[0].entireSubPath[i].anchor; // wrong
  alert(b);
}

解决方法

几乎:您需要遍历由 subPathItems 组成的 pathPoints

  var srcDoc = activeDocument;
  var workPath = srcDoc.pathItems[0];
  var i,k,b;
  for (i = 0; i < workPath.subPathItems.length; i++) {
      for (k = 0; k < workPath.subPathItems[i].pathPoints.length; k++) {
          b = workPath.subPathItems[i].pathPoints[k].anchor;
          alert(b);
      }
  }