Tengo un script que hace una forma simple* para mí:
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) ) ) ;
}
Sin embargo, las formas que creo están limitadas a caminos rectos, ¿cómo podría cambiar esto para crear caminos con bordes curvos?
Soy bastante nuevo e inexperto en las secuencias de comandos de Illustrator, estoy seguro de que hay una mejor manera de hacer este camino en primer lugar.
Utilizo este script de Wolff para extraer las coordenadas de mi ruta (después de crear la ruta en Illustrator), supongo que también tendría que modificarlo para que exporte rutas redondas.
*La forma de ser un hexágono es irrelevante, la idea es poder crear formas arbitrarias.
No puede hacerlo con setEntirePath, debe crear un nuevo elemento de ruta (Document.pathItems.add()) y luego debe agregar sus puntos de ruta individualmente.
Harías esto a través de:
var myPath = app.activeDocument.pathItems.add();
var newPoint = myPath.pathPoints.add();
newPoint.leftDirection = [10, -5];
newPoint.anchor = [0, 0];
newPoint.rightDirection = [-10, 5];
Ahora, cuando agregue más, ¡esto formará su curva Bezier!
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"));
Aquí está el resultado:
Y aquí hay uno en el que se ensambla todo, por lo que recopila las coordenadas de su selección y crea un elemento duplicado de lo mismo (sin usar comandos de copiar/pegar o duplicar) exactamente 100 puntos por encima de la selección inicial.
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
];
};
Y aquí está el resultado de eso:
myPath is undefined
, definitivamente estoy haciendo algo mal
joojaa