|
Hi Heiko,
When you have an MEOop for each ID in the collection, you have what you want. MEOops are effectively proxies for the real objects (and graphs, relationships, properties etc.) in the models. You can get all the other property values of the object simply by sending allPropertiesValues to the MEOop.
For instance, if you have the MEOop for the single Text object (oid=10_894) in the Main menu graph in Home Automation, and ask for its allPropertiesValues, you'll get an MEAnyArray with one element. That element represents the collection of three TextFragment objects (oids=10_579, 10_196, 10_529). If you make an MEOop for 10_579, you can ask it in turn for its allPropertiesValues - Label="Welcome to the system!", Start address="0x12" and Length="8".
You also said that you wanted "exact copies" of the objects. In fact you're not getting copies, you're getting proxies to the actual objects. As you go further in the Home Automation example, you'll notice that the same object may actually be used in several places: reuse by reference, rather than by copy.
For instance, in the Mode menu graph the TextFragment "...mode..." is used in both the first and second Text object. As you said, TextFragment objects are not directly contained in the VoiceOutput graph, but rather in the Text objects in that graph: VoiceOutput -> Text* -> TextFragment*. You will however also find "...mode..." contained directly in the Text Fragment Library graph, along with all the other TextFragment objects: Library -> TextFragment*. If you change the "...mode..." TextFragment via any of these places, you're always actually changing just the same single TextFragment object, so the change will be visible wherever it is used.
This kind of true object reuse brings important benefits to modelers, making working with models faster and more intuitive, and avoiding the problems of typing the same information in several places. Support for it is just one of the things that sets MetaEdit+ apart from other domain-specific modeling tools.
|