Hi Ian.f,
I always welcome the chance to help a fellow enthusiast. Unfortunetly I think I will be of limited use.
First let me say that the best resource to answer this question is probably Jeane-Piere Drolet becuase I think he has cracked this nut in some of his code from "OpenG".
That being said, let me do what I can for now. There are a number of issues that are hitting you. First is the arrays. You are currently reading them as a variant and attempting to convert (this is where Jeane-Piere may be able to help). The data is coming to you as a variant because the array of refnums for the cluster are generic types that handle all data types. If you use a "to more specific" node you can convert these nodes to the actual class of data used. The complication them becomes "which tpye do I convert which ref to?" Agian I think Jeane-Piere has got this figured.
I have accomplished what you appear to be attempting in a more specific fashion. I will try to outline my approach below.
1) Make the cluster a strict type def. My appraoch usese the same cluster in more than one place and this will simplify support.
2) Instead of using refnums to the individual cluster elements, use a refnum for the entire cluster.
3) When trying to update the cluster, update the ENTIRE cluster. I have not figured out how to update just a part of a cluster using control refs.
4) When trying to save use a "unbundle" by name to break-out your parts and save them as required for each type.
5) For the arrays I will create a new section for each array. In that section I will have at minimum a field called "number_of elements" or similar. This filed will get the array length. If there are elements in the array, I will start writing them as "element1",..
This gives me enough data to put things back together at restore time.
I am curious how you end up solving this challenge. I have successfully written code that will automatically locate all of the controls and indicators on the front panel of a VI of my choosing and save/restore them from file BUT, it does not support the complex data types like clusters and arrays. I still have to do these explicitely.
I will watch this question to see if I can help or learn more.
Ben