Illustratorで任意オブジェクトを楕円へ均等配置させます。
function distributeObjectsOnEllipseNoRotation() {
if (app.documents.length === 0) {
alert("ドキュメントを開いてください。");
return;
}
var doc = app.activeDocument;
var selection = doc.selection;
if (selection.length !== 2) {
alert("配置オブジェクト、楕円の順に選択してください。");
return;
}
var ellipse, object;
// 楕円とオブジェクトを特定
if (selection[0].typename ===
"PathItem" && selection[0].pathPoints.length > 3) {
ellipse = selection[0];
object = selection[1];
} else if (selection[1].typename ===
"PathItem" && selection[1].pathPoints.length > 3) {
ellipse = selection[1];
object = selection[0];
} else {
alert("楕円(パス)と配置するオブジェクトを選択してください。");
return;
}
// ユーザーに配置する数を入力させる
var count = parseInt(prompt
("楕円周上に配置するオブジェクトの数を入力:", "6"), 10);
if (isNaN(count) || count < 1) {
alert("正しい数値を入力してください。");
return;
}
// 楕円の中心座標とサイズを取得
var centerX = ellipse.position[0] + ellipse.width / 2;
var centerY = ellipse.position[1] - ellipse.height / 2;
var radiusX = ellipse.width / 2;
var radiusY = ellipse.height / 2;
var angleStep = 360 / count;
for (var i = 0; i < count; i++) {
var angle = angleStep * i * (Math.PI / 180);
var x = centerX + radiusX * Math.cos(angle);
var y = centerY + radiusY * Math.sin(angle);
var newObj = object.duplicate();
newObj.position =
[x - newObj.width / 2, y + newObj.height / 2];
}
alert("オブジェクトを均等配置しました!(回転なし)");
}
distributeObjectsOnEllipseNoRotation();
配置するオブジェクトはグループ化されていても問題ありません。ここではシンボル登録したモノを利用しました。なお、楕円はオブジェクトの後に作成またはペーストします。
事項鵜したらオブジェクトの数を入力するだけです。
楕円での均等配置は3D視点での見た目で均等配置にしています。
もちろん正円でも問題ありません。