Ich habe ein Skript, das eine einfache Form * für mich erstellt:
var docRef = documents.add();
var piRef = activeDocument.pathItems;
{
var pathRef = piRef.add();
pathRef.setEntirePath( new Array(
new Array(475,543.30078125),
new Array(450,500),
new Array(475,456.69873046875),
new Array(525,456.69873046875),
new Array(550,500),
new Array(525,543.30078125),
new Array(475,543.30078125) ) ) ;
}
Die Form(en), die ich erstelle, sind jedoch auf gerade Pfade beschränkt. Wie könnte ich dies ändern, um Pfade mit gekrümmten Kanten zu erstellen?
Ich bin ziemlich neu und unerfahren in der Illustrator-Skripterstellung. Ich bin sicher, dass es einen besseren Weg für mich gibt, diesen Weg überhaupt zu gehen.
Ich verwende dieses Skript von Wolff, um meine Pfadkoordinaten zu extrahieren (nachdem ich den Pfad in Illustrator erstellt habe). Ich nehme an, ich müsste das auch ändern, damit es runde Pfade exportiert.
*Die Form, die ein Sechseck ist, ist irrelevant, die Idee ist, beliebige Formen erstellen zu können.
Sie können es nicht mit setEntirePath machen, Sie müssen ein neues pathItem erstellen (Document.pathItems.add()) und dann müssen Sie Ihre Pfadpunkte einzeln hinzufügen.
Sie würden dies tun über:
var myPath = app.activeDocument.pathItems.add();
var newPoint = myPath.pathPoints.add();
newPoint.leftDirection = [10, -5];
newPoint.anchor = [0, 0];
newPoint.rightDirection = [-10, 5];
Wenn Sie jetzt mehr hinzufügen, bildet dies Ihre Bezier-Kurve!
var doc = app.activeDocument;
var myPath = doc.selection[0];
var pathPointArray = [];
var thisPoint;
for(var i = 0; i < myPath.pathPoints.length; i++){
thisPoint = myPath.pathPoints[i];
pathPointArray.push([
[
thisPoint.leftDirection[0],
thisPoint.leftDirection[1]
],
[
thisPoint.anchor[0],
thisPoint.anchor[1]
],
[
thisPoint.rightDirection[0],
thisPoint.rightDirection[1]
]
]);
}
alert(pathPointArray.join("\n"));
Hier ist das Ergebnis:
Und hier ist eine, bei der das Ganze zusammengesetzt wird, wobei es die Koordinaten aus Ihrer Auswahl sammelt und ein Duplikat desselben Objekts (ohne Kopieren/Einfügen oder Duplizieren-Befehle) genau 100 Punkte über der ursprünglichen Auswahl erstellt.
var doc = app.activeDocument;
var myPath = doc.selection[0];
var pathPointArray = [];
var thisPoint;
for(var i = 0; i < myPath.pathPoints.length; i++){
thisPoint = myPath.pathPoints[i];
pathPointArray.push([
[
thisPoint.leftDirection[0],
thisPoint.leftDirection[1]
],
[
thisPoint.anchor[0],
thisPoint.anchor[1]
],
[
thisPoint.rightDirection[0],
thisPoint.rightDirection[1]
]
]);
}
var myNewPath = doc.pathItems.add();
var thisArrayPointObject;
var newPoint;
for(var i = 0; i < pathPointArray.length; i++){
thisArrayPointObject = pathPointArray[i];
newPoint = myNewPath.pathPoints.add();
newPoint.leftDirection = [
thisArrayPointObject[0][0],
thisArrayPointObject[0][1] + 100
];
newPoint.anchor = [
thisArrayPointObject[1][0],
thisArrayPointObject[1][1] + 100
];
newPoint.rightDirection = [
thisArrayPointObject[2][0],
thisArrayPointObject[2][1] + 100
];
};
Und hier ist das Ergebnis daraus:
myPath is undefined
, ich mache definitiv etwas falsch
joojaa