У меня есть скрипт, который делает для меня простую форму*:
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) ) ) ;
}
Однако формы, которые я создаю, ограничены прямыми путями, как я могу изменить это, чтобы создавать пути с изогнутыми краями?
Я довольно новичок и неопытен в написании сценариев для Illustrator, я уверен, что для меня есть лучший способ пройти этот путь в первую очередь.
Я использую этот скрипт от Wolff, чтобы извлечь координаты моего пути (после создания пути в Illustrator), я предполагаю, что мне также придется изменить его, чтобы он экспортировал круглые пути.
* Форма шестиугольника не имеет значения, идея состоит в том, чтобы иметь возможность создавать произвольные формы.
Вы не можете сделать это с помощью setEntirePath, вам нужно создать новый pathItem (Document.pathItems.add()), а затем вам нужно добавить свои точки пути по отдельности.
Вы бы сделали это через:
var myPath = app.activeDocument.pathItems.add();
var newPoint = myPath.pathPoints.add();
newPoint.leftDirection = [10, -5];
newPoint.anchor = [0, 0];
newPoint.rightDirection = [-10, 5];
Теперь, когда вы добавите больше, это сформирует вашу кривую Безье!
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"));
Вот результат:
И вот один из них, где все собрано вместе, в результате чего оно собирает координаты из вашего выбора и создает дубликат того же элемента (без использования команд копирования/вставки или дублирования) ровно на 100 пунктов выше первоначального выбора.
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
];
};
И вот результат от этого:
myPath is undefined
, я определенно делаю что-то не так
.
джуджа