Making an arbitrary plane the 'base' of an object

So, I am cutting up an object into parts so I can print it on my 3D printer - a giant 3D jigsaw puzzle basically. What I can’t for the life of me figure out is, given an arbitrarry mesh, where I have deliberatly created an arbitrary plane to be the base of the object, how can I rotate the entire mesh so said plane is in the global x-y plane, so it is in fact the base when I send it to the 3D printer?

This feels like a silly question, but I just can’t find the answer - every combination of search terms I try proves useless.

Thanks in advance:-)

Edit:
Found a solution, but its really, really convoluted:

In edit mode select the plane you want to be the base.
Shift-s, cursor to selected.
Shift numpad-7, so the view is looking directly at the face.
Exit edit mode, add an empty.
Tick in the tool bar (t key) the align to view option - you now have an empty centred and rotated to the plane of interest.
Parent the object to the empty, keep transform (ctrl-p).
Reset the rotation of the empty - alt-r.
Alt-p on the object, clear parent keeping the transform.
Delete the empty.
Rotate the entire thing 180 degrees so its not upside down!
Apply transform (ctrl-a)

I have about 40 parts to this object, so I am still after a solution that isn’t going to give me a bad case of RSI by the time I am done!

It is scripted already- one is there http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/3D_interaction/Align_by_faces

After installation can be found in Space menu - type “align” . Works on two selected Objects depending on their active faces.

Edit: Can assign Rigid Active to objects and Passive to plane; then just Alt-a.

Thanks - the script works perfectly, and brings it down to a sensible number of steps!

Doing it via the physics simulation is, I think, ill-advised - there would always be some numerical error remaining, and it might be enough to mess up the print.

I doubt it’ll mess things up. It’s scripted on even higher level ;).