#bezier #photoshop-script
#безье #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);
}
Ответ №1:
Почти: вам нужно выполнить итерацию 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);
}
}
Комментарии:
1.
app.activeDocument.pathItems[a].subPathItems[b].pathPoints[c].anchor;
Это цепляет 🙂 Спасибо