# How does the entirePath function cope with variables in curvy

**Cleo_helm**Jul 19, 2017 7:04 AM

Hello,

I try to make cake pieces out of a circle with defined gaps between the cake pieces. The amount of pieces depend on what the user entered as number:

Below you see what I have. It makes cake oeices, but the connection between starting segment and ending segment is a straight line. Jongwares collection says:

**entirePath:**

A list of the coordinates of all of the path points on the path, including anchor points and left- and right-direction points. When creating a path using this property, supply either a list of anchor point coordinates ([[x1, y1], [x2, y2], ...]) or a list of anchor point, left-direction point, and right-direction point coordinates ([[[x1, y1], [x2, y2], [x3, y3]], [[x4, y4], [x5, y5], [x6, y6]], ...]). Note: Providing only anchor points results in a path on which all of the path points are connected with straight line segments; supplying the positions of left- and right-direction points specifies curved line segments. Can return: Array of Arrays of 2 Units.

I understand it like this:

if I want to have a straight line, you just give coordinates single points composing of x and y

e.g. for a triangle

var path = entirePath([ [x1, y1], [x2,y2], [x3,y3] ]);

if I want to have one curved line, you need to add the coordinates of the ends of the right and left handle to the points composing of x and y

e.g. for a triangle

var path = entirePath([ [x1, y1], [x2,y2], [ [x3_1,y3_1], [x3_2,y3_2], [x3_3,y3_3] ] ]);

Now I wrote in my example the variable myPath in line 62. And I get an error message marking line 63 "entirePath", no other information, I have no clue were the mistake is.

So if anybody has an idea were my mistake is, I would appreciate the help.

Best

Cleo

var myDocument = app.documents.add(); var myOutsideY1 = 70; var myOutsideX1 = 210; var myOutsideY2 = myOutsideY1+450; var myOutsideX2 = myOutsideX1+450; var myCircleOutside = myDocument.ovals.add({ geometricBounds: [myOutsideY1, myOutsideX1, myOutsideY2, myOutsideX2], //fillColor: "Farbcode", strokeWeight: 2, //strokeColor: myBlack, name: "outside" }); var myInsideY1 = myOutsideY1+20; var myInsideX1 = myOutsideX1+20; var myInsideY2 = myInsideY1+410; var myInsideX2 = myInsideX1+410; var myCircleInside = myDocument.ovals.add({ geometricBounds: [myInsideY1, myInsideX1, myInsideY2, myInsideX2], //fillColor: "Farbcode", strokeWeight: 1, //strokeColor: myBlack, name: "inside" }); // selecting the inner circle to split it in the right amount of FoFes app.select( app.activeDocument.pageItems.item("inside")); // asking for the amount of FoFes with the "prompt()" function var myFoFe = prompt("Bitte geben Sie ein ganzzahlige Anzahl an Forschungsfeldern an: "); // checking if something has to be entered and the number entered is higher than 1 if (myFoFe != null && myFoFe > 1){ // determining the different variables to calculate later the angles for the segments var myGapSize = 4.5; // place between the FoFe segments var myGapSpace = myGapSize*myFoFe; // how much space the gaps take in total var myFoFeSize = (360-myGapSpace)/myFoFe; // 360° - all the degrees the gaps will take, calculating what is left for the FoFe segments // alert(myFoFeSize, "myFoFeSize"); var myFoFeAngle = myFoFeSize*(Math.PI/180); // javascript is calculating in radians, that is why the angle has to be converted from degree to radians: radians = degrees * (Math.PI/180) var myGapAngle = myGapSize*(Math.PI/180); // determine the center and the radius of my selected circle var myCircleCenter = [(app.selection[0].geometricBounds[3]+app.selection[0].geometricBounds[1])/2, (app.selection[0].geometricBounds[2]+app.selection[0].geometricBounds[0])/2]; var myCircleRadius = Math.max ((app.selection[0].geometricBounds[3]-app.selection[0].geometricBounds[1])/2, (app.selection[0].geometricBounds[2]-app.selection[0].geometricBounds[0])/2); // alert(myCircleCenter, "myCircleCenter"); // alert(myCircleRadius, "myCircleRadius"); // generating the fragments var myStartAngle = 0; for (i=0; i<myFoFe; i++){ // the loop is going as often as FoFes were chosen // alert(myFoFe, "tells how many times the for loop is running"); var myEndAngle = myStartAngle + myFoFeAngle; // alert(myEndAngle, "myEndAngle"); // warning: math! (though this is SIMPLE compared to what I've bin doing today) var mySegmentStart = [myCircleCenter[0] + myCircleRadius*Math.sin(myStartAngle), myCircleCenter[1] - myCircleRadius*Math.cos(myStartAngle)]; // coordinates for the end of the path which defines the start of the segment (this is just a point) var mySegmentEnd = [myCircleCenter[0] + (myCircleRadius*Math.sin(myEndAngle)), myCircleCenter[1] - myCircleRadius*Math.cos(myEndAngle)]; // create surrounding border var mySegmentBorder = app.activeDocument.graphicLines.add(); var myNinteeAngle = 90*(Math.PI/180); var myPath = [myCircleCenter, [mySegmentStart, (myStartAngle+myNinteeAngle)], [mySegmentEnd, (myEndAngle - myNinteeAngle)]]; // noch dran hängen an "myPath" mySegmentBorder.paths[0].entirePath = myPath; mySegmentBorder.paths[0].pathType = PathType.CLOSED_PATH; myStartAngle = myEndAngle + myGapAngle; } // end of for-loop // here naming all polygone (choose all items named "Polygon" and give them labels/names: poly1 - poly xy } // end of if else {alert("Die Zahl muss größer asein")};

} // end of if