It seems the calls currently available both in Open C and the Common API only work with one-dimensional arrays of doubles. You can submit an ER to ask for this functionality in some future release of the software,
I am trying to store number of string array in one udo object but I have seen that if I access that number of string array using (displayEvent.UserDefinedObject.GetStrings), it will give me only the last array.
Is there any way to store array by name so I can access the array by name from the udo object.
UDOs only have tha capacity to store 1 array of integers, 1 array of doubles, 1 array of strings etc.
There are 2 ways to store more complicated data structures:
Use multiple UDO instances:
Simulate sub-arrays in the string array:
I've used both of these in the past. Hope that helps.
Lenovo ThinkPad W540, Win7, 16GB. Developing in: Java | C | KF
Production: NX18.104.22.168 MP11 64bit Testing: NX22.214.171.124
I am getting an "exception" -- "You do not have permission to query this class id."
when trying to access the saved UDO.
Exception is thrown at call
This only happens when its a new NXSession (UI is closed and re-opened), in the same session when document is closed and re-opened the exception is not thrown and I am able to access the saved UDO.
"AllowQueryClassForName" is also "ON" during save.
udoclass.AllowQueryClassFromName = UserDefinedClass.AllowQueryClass.On;
You can always use a 1D array of length M*N in place of a 2D array with dimensions M x N. In fact, that's what most programming languages do internally -- the double indexing is just syntactic sugar.
So, the two statements
x = array2d(i,j) x = array1d(m*i + j)
are equivalent. The first one is much easier to read/understand, but the second one really indicates what's happening internally.
Another idea: have you tried using the new Custom Feature capability, rather than a UDO. Newer doesn't necessarily mean better, but sometimes it does.