Well, we solved this problem in NX 8.0, but it's not really going to help you much even if you were to upgrade.
Prior to NX 8.0 the only way to share Expressions and Part Attributes was to use the pre-defined KF routines supplied as 'Functions' in the expression system, which is where you found those routines for reading and writing Part Attributes iusing an Expression. Now the good news that everything that you're doing now will still work (here comes the caveat) JUST AS GOOD AS IT EVER DID. And to maintain balance in the world, we all know that most of the time, with every 'GOOD' there is also a 'BAD', which means that last statement could have have been written "JUST AS BAD AS IT EVER DID".
Now the approach we took was to NOT tinker with the existing KF functions (with their current limitations) so that any existing legacy parts (created prior to NX 8.0) will be guaranteed to continue to work because we never touched those routines. What we did instead, to overcome the problems inherent in those old KF routines, was to come-up with a totally new scheme going forward. These do NOT depend on special functions based on KF routines available in the Expression system but rather provides the user with actual built-in functions allowing Attributes to directly 'read' Expressions (replacing 'ug_setPartAttrValue') and to allow Expressions to directly 'read' Attributes (replacing 'ug_askPartAttrValue').
So now if I want to create an Attribute which will always reflect the value of an Expression (and this will NOT be limited to only 'strings' since we now have Part Attributes which can be 'Integers', 'Reals', 'Dates', 'Booleans' (YES/NO), etc.) all I have to do is create an Attribute using these new options.
And on the Expression side, I now have a set of Functions which will allow me to create 'Attribute Expression' which will always reflect the value of either a Part or Object Attribute. These 'Attribute Expressions' will behave sort of like the current 'Mass Property Attributes' do now in that they will be 'read-only' and they will be presented in a special format/color so that they are easy to find and recognize.
However, this DOES mean that we are going to REMOVE the two Attribute functions based on the KF routines from the Expression system since we want you to use the new approach as they will properly update without having to use sledgehammer like 'Update for External Change'. This will be no different than now when I edited a numerical Expression and my model updates.
Now, as I stated before, if you have any existing pre- NX 8.0 part files where you've used one or both of those old KF routines, they will continue to work, but you will still have the current update issues since we have not touched that code, just made it so that you can't create and new parts using what are now 'obsolete' functions, but we will keep them working "JUST AS GOOD/BAD AS THEY EVER DID" in perpetuity.
Anyway, I hope that helps explain the situation.
And as for your actual question, NO, what you have now is as good as it is. But we fixed it in NX 8.0, but only if you create new Attributes/Expressions.
John R. Baker, P.E.
Product 'Evangelist'
Product Engineering Software
Siemens PLM Software Inc.
Industry Sector
Cypress, CA
UG/NX Museum:
To an Engineer, the glass is twice as big as it needs to be.