Skip to main content
Participant
September 7, 2023
Question

Scripting Illustrator

  • September 7, 2023
  • 1 reply
  • 237 views

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());

}

This topic has been closed for replies.

1 reply

femkeblanco
Legend
September 7, 2023

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);
}

 

Participant
September 10, 2023

Oh thanks a lot ! Is it working how I wanted !