
これとこれの位置を交換したいなー、という時に覚えておくと便利なテクニックをご紹介。
2番と8番の位置を入れ替えたいなーという時。
「整列」を使って入れ替えるの、ちょっと面倒くさいですよね?
そんな時に使えるテクニックをご紹介。
1.入れ替えたい2つのオブジェクトを選択する
今回はとりあえず2番と8番を選択しました。
2.ツールバーから「回転」を選択
ショートカットキーのRでも選択できます。
3.Enterキーを押して、180度回転する。
回転ツールをダブルクリックしても、設定のダイヤログが出てきます。
これで位置の入れ替えができました。
が、上下反転しちゃったので、次でそれを直します。
4.「オブジェクト」-「変形」-「個別に変形」を選択。
5.回転の角度に「180」と入力する。
これで位置の入れ替えができました。
スクリプト配布
この作業を自動でやってくれるスクリプトを、ChatGPTちゃんにお手伝いしてもらいながら作成しました。
素人が作ったものなので、使ってみて何か問題が起こっても責任は取れません。
動作の正確性や安全性についても保証はできないので、使うのはあくまで自己責任でお願いします。
【使い方】
位置を入れ替えたいオブジェクトを選択して、「オブジェクトの入れ替え.jsx」スクリプトを起動する。
【ダウンロード】
Googleドライブです。右上のダウンロードボタンからDLしてください。https://drive.google.com/file/d/1sAHl0rFNnWZxhflpmxwG6Xv0z-nk5T7f/view?usp=sharing
右上にこんな感じのボタンがあります。

オブジェクトを選択した状態で、ダウンロードしたスクリプトをドラッグ&ドロップしても使えます。
コードはこんな感じ。
#target illustrator
app.preferences.setBooleanPreference('ShowExternalJSXWarning', false);
function main() {
var doc = app.activeDocument;
var sel = doc.selection;
if (!sel || sel.length !== 2) {
alert("入れ替えたいグループまたはオブジェクトを2つ選択してください。");
return;
}
// グループ化(選択したオブジェクトやグループを一時的にグループ化)
var tempGroup = doc.groupItems.add();
for (var i = 0; i < sel.length; i++) {
sel[i].moveToBeginning(tempGroup);
}
// グループの中心点を計算
var bounds = tempGroup.visibleBounds;
var cx = (bounds[0] + bounds[2]) / 2;
var cy = (bounds[1] + bounds[3]) / 2;
// グループを中心点で180度回転(入れ替え)
tempGroup.rotate(180, cx, cy);
// グループ解除(安全な処理)
var items = [];
while (tempGroup.pageItems.length > 0) {
items.push(tempGroup.pageItems[0]);
tempGroup.pageItems[0].moveToBeginning(doc);
}
tempGroup.remove();
// 各オブジェクト(またはグループ)を自身の中心で180度回転(上下を戻す)
for (var i = 0; i < items.length; i++) {
var item = items[i];
var ibounds = item.visibleBounds;
var ix = (ibounds[0] + ibounds[2]) / 2;
var iy = (ibounds[1] + ibounds[3]) / 2;
item.rotate(180, ix, iy);
}
}
main();