Scripting Illustrator
Copy link to clipboard
Copied
Je souhaitais créer un effet qu'il est possible de faire sur After Effects, orienter différents objets dans une seule et même direction.
Sur mon fichier illustrator, j'ai dupliqué plusieurs lettres que j'ai aligné en quadrillage. Je voulais orienter chacune de ces lettres de tels sortes à ce qu'elles pointent vers un seul objet (dans une seule direction). En conservant leurs positions d'origine et de manière automatisé si possible.
Pour réaliser ceci, j'ai demandé à ChatGPT de m'aiguiller, il m'a conseillé d'écrire un Script. Il m'a fourni ce script que j'ai essayé mais rien ne fonctionne.
Sur mon fichier illustrator, j'ai toutes les lettres dans un seul et même calque, mais toutes disocciées l'une de l'aurtre ainis qu'un objet nommé "Target" qui permet de référence pour l'orientation de mes lettres. Toutes ces formes se trouvent sur le plan de travail, aucune n'est vérouillé, toutes sont des formes pleines, les lettres ont toutes été vectorisées d'une typographie. Mais malheuresement rien ne fonctionne.
J'aurais espérer que les lettres s'orientent en direction de l'objet Target et que par conséquent chacune est une orientation différente (puisqu'elles n'ont pas les mêmes positions), mais malheuresement, rien ne fonctionne. Est-ce que cela viens du script, ou d'ailleurs ?
En sachant que ChatGPT m'a fait essayé des scripts différents pour essayer d'identifier le problème, genre orientation de 45° (script basique), mais impossible de trouver la moindre réponse à cet égnime.
Est-ce que par hasard quelqu'un arrivera à m'aider ?
Voici le script :
var doc = app.activeDocument;
var targetItem = doc.pageItems.getByName("Target");
var targetPoint = [targetItem.left + targetItem.width / 2, targetItem.top - targetItem.height / 2];
var selection = doc.selection;
if (selection.length === 0) { alert("Aucun objet n'est sélectionné.");
exit();
} var item = selection[0];
var itemCenter = [item.left + item.width / 2, item.top - item.height / 2];
var deltaX = targetPoint[0] - itemCenter[0];
var deltaY = targetPoint[1] - itemCenter[1];
var angle = (Math.atan2(deltaY, deltaX) * (180 / Math.PI)) - 90;
try { item.rotation = angle; alert("Rotation effectuée vers la 'Target'!");
} catch(e) { alert("Erreur lors de la rotation. Détail de l'erreur: " + e.toString());
}
Explore related tutorials & articles
Copy link to clipboard
Copied
Select items to rotate.
var doc = app.activeDocument;
var targetItem = doc.pageItems.getByName("Target");
var targetPoint = [
targetItem.left + targetItem.width / 2,
targetItem.top - targetItem.height / 2
];
var selection = doc.selection;
for (var i = 0; i < selection.length; i++) {
var item = selection[i];
var itemCenter = [item.left + item.width / 2, item.top - item.height / 2];
var deltaX = targetPoint[0] - itemCenter[0];
var deltaY = targetPoint[1] - itemCenter[1];
var angle = (Math.atan2(deltaY, deltaX) * (180 / Math.PI)) - 90;
item.rotate(angle);
}
Copy link to clipboard
Copied
Oh thanks a lot ! Is it working how I wanted !

