Situation - Occasionally I lose the 0,0,0 position when I am working on a piece. I have a gantry style machine and I can actually move the head (mainly on the Y axis) if I put too much pressure on it. Also, if I accidentally run the head into a clamp or some other unintended head crash (I know everyone is in shock that anything like this could ever happen

).
I have added DROs to show the machine position on the program run screen. My normal mode is to put the 0,0,0 point in the middle of the work piece and reset the zero point to this place. Once I zero out the piece I write down the machine work coordinates so if something happens I can move back to this position after rehoming the machine. Usually I do this with expensive stock.
What I would like is a way of capturing the machine coordinates once I have set the 0,0,0 point on the work piece. Also, I would like a way to automatically move back to this place once I have rehomed the machine.
Thoughts on the best way to do this?
Thanks,
Peter