before I dive into testing and research, I'd like to ask, whether ORD SDK offers a standard way how to monitor a geometry (simple, complex) was changed (e.g. moved, parameter of arc changed, part of geometry removed...)?
Based on this event, I need to do (not very complicated) calculations and when necessary, modify some other elements. Originally I hoped it is possible to use standard MicroStation tools (Display Styles, Expressions in Item Types, Fields in text), but some requirements are more complex than these tools can handle, and some events (like an arc between lines removed) require specific follow ups.
I have couple of ideas how to track events using MicroStation API (e.g. monitor input queue, to use Transaction Manager monitoring, EC data change monitor), but maybe there is something available already in civil API?
My question is not limited to specific API / language, the most of the code is C# now, but some other tools implemented are based on C++/CLI and calling native MicroStation API too.
Any idea or hint? I guess it can be possible to write a monitor when specific EC instance changed (I remember it was described in some MicroStation Programming blog), but I assume ORD constantly updates civil model, so DGN data and EC data are in sync. So maybe there is somewhere a simple hook/event to be subscribed e.g. specifically for Alignment feature?
Bentley Accredited Developer: iTwin Platform - AssociateLabyrinth Technology | dev.notes() | cad.point
Jan - Let me reach out to the correct developer and get back to you.
is there any response from developers?
In the meantime, I tried several different ideas, when I am (partially) successful when using EC data change tracking MicroStation API. But because I am able to detect a change for complete geometry only, it requires to implement further analysis what exactly changed to be able to react. So it would be nice whether any better or more efficient alternative exists.
I got with our main architect and he understands what you are trying to do. Unfortunately, there is not anything exposed to the API that will help you determine a change in a complex geometry. For example, you have found out how to determine that a specific alignment has changed by tracking EC but you do not know what component of that alignment changed.
thanks for your answer, even when it is not exactly what I was hoping for ;-)
Chris Pair said:but you do not know what component of that alignment changed.
Yes, it is challenging goal :-)
On paper, it looks like I am able to narrow context using a set of conditions enough to receive only events I need. But I cannot be sure until test code is written.
Chris Pair said:by tracking EC
This is a bit detective, but also confusing work, and maybe an advice can help here:
Every element, especially when "featurized", is represented by different EC classes. I do not understand internal civil model (well, I have not enough time to play with that, even though it's really interesting how it is implemented ;-), but so far LinearEntity2dInPlan class looks like good candidate what should be monitored. No "Alignment" class exist, but every alignment always contain LinearEntity2dInPlan class.
There are plenty of others available, but many from them are alignment type specific (complex string vs line vs arc...), and some looks abstract and I am not able to find where they are defined (like classes *_Presentation, defined in CivilSchema, but it does not exist).