Thought about it a bit more. I think the crux of the problem is that you need to detect and respond to a change of model name. So, you need some way to know it has changed. Thus, I'd define two parameters:
currentModel -> A String parameter, will store the current model name
pastModel -> A String parameter, will store the previous model name
The "trick" is to use the relation function rel_model_name(), which provides an ALL CAPS string of the current model name, or name of the current file without the .prt, .asm, etc. The relations I'd add to the model to use the above parameters would be:
IF currentModel <> rel_model_name()
pastModel = currentModel
ENDIF
currentModel = rel_model_name()
Thus if you copy a file to another file, via "Save As" or whatever, when you open that file, this relation will find that the file name is not what it was, and via the "IF" clause, set the past model name to what it was before, then update the current model name to the current file name.
Some possible problems with this approach:
(1) I don't know how it will work with family table parts. Parameter will probably change for every instance and not in a good way.
(2) You have to live with the relation being executed every time you regenerate your model. It's not a lot, but still...
(3) You have to put the relations and parameters in every file you want them in.