[MStn CE U17.2 C#] EC data difference between ORLD and MStn

Hi all,

this my question relates to "formulated differently, but about the same topic", posted to civil programming forum.

I am aware I am discussing how to hack DGN content, and furthermore created in OpenRail Designer, not in plain MicroStation. So the answer "not possible, and it is generally not allowed" is expected, but... ;-)

Situation:

  • There is an alignment created in OpenRail Designer, with start stationing assigned.
  • It is possible to obtain the stationing data (specifically Begin station) using API or as EC data:
    • In object model, the stationing is part of alignment model, so it is simple.
    • When tracked how it is represented (and stored) as EC data, it can be solved using DgnECManager and queirying relationship classes.
  • The data itself is stored as type 66 and when:
    • the element is queried in OpenRail Designer, StationingEntity_Presentation class is returned, with all necessary information.
    • the element is queried in MicroStation, this EC class is not returned as it does not exist.

Question:

  • Is it possible to read the data (specifically "Begin Station"), when ignored by EC API, directly from the element?

Analysis done:

  • There are 4 XAttributes attached to the element.
  • 3 different handlers are used
    • It look like the first one(56EC:0) is handler, available in civil products only, responsible for storing station data.
    • I know 56FF:0 is ID for DgnECProviderId_ECXAttributes.
    • I have no idea what 5716:1 handler does .. maybe relationships data?
  • I can access XAttributes data in C++ as binary data (Entry::PeekData()), but it is not very useful.
    On the other hand, using this method I found out that the first handler does not exist in MicroStation.

My guess (probably not correct fully) is that the first handler (56EC:0) is responsible for StationEntity_Presentation class (CivilSchema) and the second one (standard 56FF) for StationEntity class (Bentley_Civil__Model_Geometry).

On the other hand, the reported size of the first XAttribute is 8 bytes only, which is not enough to store several numbers. So I assume the data itself (4 values used to define stationing) is stored somewhere else (maybe remaining XAttributes?).

I guess there is no simple (and public ;-) way how to decode the data to be able to read stationing data?

With regards,

  Jan