Photoshop Script similar to Illustrator Blend Tool for Paths?
Hello,
For learning purposes I would like to create intersection path(s) between subpaths of a mainpath using extendscript.

I guess I have to find difference of each points' coordinates and draw a new line using these information. (Actually it would be much more better if it has step options like in Illustrator Blend Tool.) But since I am beginner (learning scripting) I got confused with arrays. It is being an array inside an array.
I tried two ways, none of them is completed. Since there is no certain point number for subpaths those array should be inside for loops I suppose ![]()
Please help;
Here is my hopeless tryout...
#target photoshop
app.bringToFront();
displayDialogs = DialogModes.NO; // Don't Display Dialog
if(documents.length==0){
alert("Please open a document and add path in order to run this script")
}else{
var doc = app.activeDocument;
if (doc.pathItems.length == 0) {alert ('Please add one path');}
else {
if (doc.pathItems[0].name == "Work Path") {
// Convert Work Path to Path
doc.pathItems[0].name = "Path"
}
targetpath = doc.pathItems.getByName('Path');
var subpathscount = targetpath.subPathItems.length; // Count of subpaths
// First Path
function extractSubPathInfo1(pathObj){
var pathArray1 = new Array();
var pl2 = pathObj.subPathItems.length;
for(var s1=0;s1<pl1;s1++){
var pArray = new Array();
for(var i1=0;i1<pathObj.subPathItems[0].pathPoints.length;i1++){
pArray1[i1] = new PathPointInfo;
pArray1[i1].kind = pathObj.subPathItems[0].pathPoints[i1].kind;
pArray1[i1].anchor = pathObj.subPathItems[0].pathPoints[i1].anchor;
pArray1[i1].leftDirection = pathObj.subPathItems[0].pathPoints[i1].leftDirection;
pArray1[i1].rightDirection = pathObj.subPathItems[0].pathPoints[i1].rightDirection;
};
pathArray1[pathArray.length] = new Array();
pathArray1[pathArray.length - 1] = new SubPathInfo();
pathArray1[pathArray.length - 1].operation = pathObj.subPathItems[0].operation;
pathArray1[pathArray.length - 1].closed = pathObj.subPathItems[0].closed;
pathArray1[pathArray.length - 1].entireSubPath = pArray1;
};
return pathArray1;
};
// Second Path
function extractSubPathInfo2(pathObj){
var pathArray2 = new Array();
var pl2 = pathObj.subPathItems.length;
for(var s2=0;s2<pl2;s2++){
var pArray2 = new Array();
for(var i2=0;i2<pathObj.subPathItems[1].pathPoints.length;i2++){
pArray2[i2] = new PathPointInfo;
pArray2[i2].kind = pathObj.subPathItems[1].pathPoints[i2].kind;
pArray2[i2].anchor = pathObj.subPathItems[1].pathPoints[i2].anchor;
pArray2[i2].leftDirection = pathObj.subPathItems[1].pathPoints[i2].leftDirection;
pArray2[i2].rightDirection = pathObj.subPathItems[1].pathPoints[i2].rightDirection;
};
pathArray2[pathArray2.length] = new Array();
pathArray2[pathArray2.length - 1] = new SubPathInfo();
pathArray2[pathArray2.length - 1].operation = pathObj.subPathItems[1].operation;
pathArray2[pathArray2.length - 1].closed = pathObj.subPathItems[1].closed;
pathArray2[pathArray2.length - 1].entireSubPath = pArray2;
};
return pathArray2;
};
firstpathpointcount = targetpath.subPathItems[0].pathPoints.length;
secondpathpointcount= targetpath.subPathItems[1].pathPoints.length;
var firstpathrightdirectionarray= new Array();
var firstpathleftdirectionarray = new Array();
var a0xy = new Array();
var a0x = new Array();
var a0y = new Array();
var a1xy = new Array();
var a1x = new Array();
var a1y = new Array();
var a2xy = new Array();
var a2x = new Array();
var a2y = new Array();
a0xy.push(targetpath.subPathItems[0].pathPoints[0].leftDirection);
a0x= a0xy[0].toString().split(",")[0];
a0y= a0xy[0].toString().split(",")[1];
a1xy.push(targetpath.subPathItems[0].pathPoints[1].leftDirection);
a1x= a0xy[0].toString().split(",")[0];
a1y= a0xy[0].toString().split(",")[1];
a2xy.push(targetpath.subPathItems[0].pathPoints[2].leftDirection);
a2x= a0xy[0].toString().split(",")[0];
a2y= a0xy[0].toString().split(",")[1];
var b0xy = new Array();
var b0x = new Array();
var b0y = new Array();
var b1xy = new Array();
var b1x = new Array();
var b1y = new Array();
var b2xy = new Array();
var b2x = new Array();
var b2y = new Array();
b0xy.push(targetpath.subPathItems[1].pathPoints[0].leftDirection);
b0x= b0xy[0].toString().split(",")[0];
b0y= b0xy[0].toString().split(",")[1];
b1xy.push(targetpath.subPathItems[1].pathPoints[1].leftDirection);
b1x= b1xy[0].toString().split(",")[0];
b1y= b1xy[0].toString().split(",")[1];
b2xy.push(targetpath.subPathItems[1].pathPoints[2].leftDirection);
b2x= b2xy[0].toString().split(",")[0];
b2y= b2xy[0].toString().split(",")[1];
alert (b0x - a0x);
}
}
