I wrote this script to help with Layout on a short film I was a part of. The artists laying out the scenes wanted an easier way to replace proxy objects without having to move their replacements by hand.
To use the script, the user selects and defines which objects should be replaced and which objects should be duplicated. Then the script will duplicate the source object and replace all the proxy objects.
The script also has options for transforming the duplicates after they've been placed. You can set it so that the duplicates have the same orientation and scale as the objects they are replacing. You can also use the GUI to tell the script to randomly transform the objects after they've been placed. In this example, the random transform ranges allow for a rotation of 0 to 360 degrees along the Y-axis.