Some limitations you cannot automate around:
-
project parameters cannot be replaced (well). There are some bad workarounds out there for this but they are not safe so I do not recommend them.
-
if a family or geometry is nested in an array and uses an instance parameter, an error will occur when swapping parameters (just like in revit normally)
-
if you reload a nested family with new parameters you will lose all associations. This requires some very complex code to deal with this and is beyond my and most users abilities (I know how to do it, but don’t have code written for it). Youd effectively need to store the original associations, check them vs a list, reload and then call on the list to recreate the equivalent ones, hard to do.
Beyond that you will of course need to generate all equivalent parameters first so you have valid swaps. You cannot simply rename the parameters in the file manually as their Id will be the same and Revit will reject the swap due to bindings.
The script/thread here might be a good starting point, but this will be a complex workflow to set up if you want it to cover all the scenarios noted above, and you will at the least need to use Revit API/Python most likely. My custom package (Crumple) will have a node replacing parameters coming out soon, but it wont deal with associated parameters on reload or grouped/arrayed issues.