2025-06-18

オブジェクトの位置を入れ替える方法/Illustrator (スクリプト配布有)

 


2番と8番の位置を入れ替えたいなーという時。
「整列」を使って入れ替えるの、ちょっと面倒くさいですよね?

そんな時に使えるテクニックをご紹介。


1.入れ替えたい2つのオブジェクトを選択する


今回はとりあえず2番と8番を選択しました。

2.ツールバーから「回転」を選択

ショートカットキーのRでも選択できます。


3.Enterキーを押して、180度回転する。


回転ツールをダブルクリックしても、設定のダイヤログが出てきます。


これで位置の入れ替えができました。
が、上下反転しちゃったので、次でそれを直します。

4.「オブジェクト」-「変形」-「個別に変形」を選択。



5.回転の角度に「180」と入力する。


これで位置の入れ替えができました。


スクリプト配布


この作業を自動でやってくれるスクリプトを、ChatGPTちゃんにお手伝いしてもらいながら作成しました。

素人が作ったものなので、使ってみて何か問題が起こっても責任は取れません。
動作の正確性や安全性についても保証はできないので、使うのはあくまで自己責任でお願いします。


【使い方】

位置を入れ替えたいオブジェクトを選択して、「オブジェクトの入れ替え.jsx」スクリプトを起動する。

【ダウンロード】 


Googleドライブです。右上のダウンロードボタンからDLしてください。


右上にこんな感じのボタンがあります。



オブジェクトを選択した状態で、ダウンロードしたスクリプトをドラッグ&ドロップしても使えます。


コードはこんな感じ。


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