Possibly one step closer:
As I said previously, rebuilding does not work. However, this was using ModelDoc2.Rebuild(2). I just tried using ModelDoc2.EditRebuild3() instead and this got the lower right corner to update the units at the time they were changed (rather than after the program finished like before). From the API Help, it says that ModelDoc2.Rebuild() is obsolete and to use ModelDoc2.Extension.Rebuild() but I do not have the option to as it gives me
"Object doesn't support this property or method".
Custom Properties still do not change though
ModelDoc2.Extension.Rebuild was added in 2014
ForceRebuild was already tried. Fortunately, I found the solution to my problem
FIXED MY ISSUE, BUT NOT THE ISSUE
When I said the units across the components were not consistent, it was only the length units that were not consistent. What I did is rather than switching to MKS, I just edited the current Custom units as such:
Bool = swModel.Extension.SetUserPreferenceInteger(swUserPreferenceIntegerValue_e.swUnitsLinear, 0, 2)
Bool = swModel.Extension.SetUserPreferenceInteger(swUserPreferenceIntegerValue_e.swUnitsMassPropLength, 0, 2)
Bool = swModel.EditRebuild3()
This method DOES change the Custom Property Units when the Units are changed.
Switching to a different unit system does not update the custom property units which makes me think that the issue lies in swUserPreferenceIntegerValue_e.swUnitSystem