Advertisement


How to swap two objects?


Question

Sometimes I want to swap two objects, so one of selected will be on second's place, and vice versa. There is any simple way to do it?

1
5
3/24/2015 4:06:00 AM

Accepted Answer

In addition to Naty's answer, the "swap objects" script by Wundes also swaps the dimensions of the objects. I made a similar script which just swaps the position regardless of the dimensions.

The script swaps 2 objects based on the objects center x & y.

Here you go:

try { 
    var selObjs = "Please select two objects on the page.";
    var docRef = activeDocument;
    if (documents.length>0) {
        if (docRef.selection.length == 2) {
            mySelection = docRef.selection;

            //if object is a (collection of) object(s) not a text field.
            if (mySelection instanceof Array) {
                //initialize vars
                var object_A = mySelection[0];
                var object_B = mySelection[1];

                // Calculate new center object A
                new_A = [
                    (object_B.left+(object_B.width/2))-object_A.width/2,
                    (object_B.top-(object_B.height/2))+object_A.height/2
                ];
                // Calculate new center object B
                new_B = [
                    (object_A.left+(object_A.width/2))-object_B.width/2,
                    (object_A.top-(object_A.height/2))+object_B.height/2
                ];
                // Make the swap
                object_A.position = new_A;
                object_B.position = new_B;

            } else {
                alert(mySelection+" is not an array!\n"+selObjs);
            }
        } else {
            alert("Selection is not 2 objects!\n"+selObjs);
        }
    }
} catch(e){
    alert("problem:\n"+e);
}
2017/02/06
5
2/6/2017 9:24:00 PM

You can download the "Swap Objects" script and run it or...

  1. Copy and paste in front both of them
  2. Align the first to the second and vice versa.
  3. Delete the old ones
2017/02/06