[CONNECT U12] Monitor EC data change best practice?


this my question is more about best practice, not specifically targeted to C++ or C#. C# is preferred in my current project, but when the solution will be available in C++ only, no problem.

Situation: There is an element with custom EC data attached. The data are available in Properties (Element Information) dialog and can be modified by a user. Such change is saved to persistent storage (DGN V8 file) by MicroStation automatically.

Question: Is it possible and what is recommended approch to monitor such change to be able to react on the change (e.g. to modify the element size/shape/etc.)?

I have not done any testing or research yet, but I can imagine that XAttribute changed event is fired when EC data are changed, but it seems to me a bit complicated (go through the whole path from XAttribute, test whether it's EC data or not and to what element it belongs). Maybe there is some other solution available, e.g. to monitor EC data particularly or to hook system responsible for rendering EC data in GUI?

With regards,


Parents Reply
  • It is correct.  That is one raison d'être of the i-Model concept.  i-Model is read-only by design.

    This is becoming silly. So, how do explain i-model Transformer? In any case, what the religious meaning  / intention of i.dgn's is secondary. What the users do with it will count for more. 

    Editing, of course, introduces a risk.

    Exactly. That's why there needs to be some tools to help persist and manage / resolve changes... GUID management has always been a hot topic.

    Sticking your head in the sand does not help. The need is there. 

  • So, how do explain i-model Transformer?

    As far asI know, i-model Transformer is designed similarly to ETL (Extract Transform Load) tools: No change is done at original data, but data are read, transformed (converted, merged with another sources etc.) and saved to new "data version" with own provenance information.

    That's why there needs to be some tools to help persist and manage / resolve changes...

    I think that's one from main topics behind iModelJS.

    Sticking your head in the sand does not help.

    I do not understand this comment and it seems to be offensive a bit.

    Because we are in programming forum, as developers we can discuss what is possible to do and what is possible to implement using existing APIs and what features are allowed by used formats. Nothing more, nothing less. We depend, or better to say we choose to depend ;-), on what Bentley decides that is the best to fulfill their business strategy.

    Of course there are alterantive solutions (every new product tells it solves all existing questions and issues ;-) and ideas how existing need can be solved, but in my opinion it's beyond scope of this forum. Fortunately anybody can go and to investigate own technology, but because after so many years there is still no technology that beats other and conquers the world, it's probably extremely complicated at the same time to design it, to implement it in acceptable cost and be able to sell it.