[CONNECT C++] Relationships

The MicroStationAPI document says this about Relationships: A relationship handler major ID must be a value allocated from the XAttributeHandlerMajorIDs value space. Edit msdefs.h to allocate an XAttributeHandlerMajorID.

However, file msdefs.h does not exist in the SDK (Update 11).   Plus, I don't like the recommendation to edit a delivered header file, especially when that is a file that does not exist.  How does one obtain an XAttributeHandlerMajorID?

  • Jon, what are you trying to accomplish? If you want to create ECRelationships, you do not need an XAttributeHandler ID.

  • What are you trying to accomplish?

    The MicroStationAPI document tells us that the Relationship Manager is a 21st century replacement for the Dependency Manager.  I have existing dependencies (i.e. using the Dependency Manager) and am investigating whether to move to the Relationship Manager for future development.

    My question arises because the BDN is responsible for assigning third-party application IDs and I speculate whether that applies to the Relationship Manager.

    If you want to create ECRelationships

    This is not an ECRelationship.

     
    Regards, Jon Summers
    LA Solutions

  • I guess I'm living in a previous century then - I have never heard of this relationship manager thing.

    Yes, BDN allocates handler IDs.

  • I have never heard of this relationship manager thing

    It's hidden in the AnimCore domain.

    Relationship Manager is designed to handle networks of dependencies. The Relationship Manager goes a step beyond MicroStation Dependency Manager. Relationship Manager ensures that a relationship's handler is notified when any of its inputs changes and allows the handler to change its outputs. The Relationship Manager guarantees that handlers are notified in dependency order.

     
    Regards, Jon Summers
    LA Solutions

  • Hi Jon,

    Its very rare that an application would need the sophistication and complexity associated with the RelationshipManager. The animator in Microstation is the only subsystem which requires it, for all the other subsystems the DependencyManager API's are more than sufficient.

    The Relationship system allows you to construct a Directed Acyclic Graph of relationships which can be topologically sorted into an execution order. A simple example with the animator is  an actor (A) moves along a path, the path is then in another actor (B) which is also moving and the camera (C) needs to target actor (A) and the camera (C) is also moving via parametric motion. The with the RelationshipManager you can setup and solve the execution order of relationships in this type of system.

    If there are situations where you think that the existing DependencyManager is insufficient I would suggest you ask for help with it before using the RelationshipManager as using will involve considerable investment of time and understanding of its API's.

    Thanks

    Paul



    Answer Verified By: Jon Summers