MicroStation CONNECT Edition API Topics listed by Area (or technology).

NOTE: You can also follow the latest MicroStation SDK Blog posts on



  • In MicroStation CONNECT call C++ DimensionStyle API in place of mdlDimStyle_xxx() calls.
  • Use DimStyleIterator where mdlDimStyle_traverse was previously used.
  • The C++ APIs have further DGN Library integration options and improvements
  • The MicroStation SDK provides an example to get started: ..\DimensionsExample\DimensionsExampleCreateTool.cpp
  • The following code snip shows how to set the active dimension style to none:
    // Make style:(none) active.
    BentleyStatus rtc;
    //DimensionStylePtr dimstyle = DimensionStyle::GetActive ();
    DimensionStylePtr settings = DimensionStyle::GetSettings (*ISessionMgr::GetActiveDgnFile());
    settings->SetName (L"");
    rtc = DimensionStyle::SetActive (*settings);




LanguagesConsider adding a Web Browser add-in; like: e.g. Google Translate; that permits you to view code: pages, blogs and posts; though highly readable in your preferred/desired language. This effectively provides you with greater access to more learning and content materials our communities present.


NOTE: Previous versions of “Bentley Class Editor: and “iModel Schema Editor” have been superseded by tools referenced above.


  • Get/Set Basis Range/Transform
    • Get/Set BasisRange and BasisTransform methods provide a means to store an alternate "basis/home" element range/transform via XAttributes.  If no (application) "basis" is present the range/transform returned will be that directly obtained from the current ElementHandle range/transform. [Ref1]
    • This was implemented to store/return an "element aligned" vs. "axis aligned" box that fits geometry. Similar to the range diagonal for cells/shared cells. A basis range would typically be centered around 0, the basis transform denotes the local to world transform. In practice I haven't found it "generally" useful as it wasn't required to be implemented, meaning you need a fallback for dealing with elements that don't store/return a valid basis range anyway. So, it mostly ends up being useful to applications when dealing with their own elements.[Ref2]
Event HandlersMicroStation .NET APIs utilize Microsoft's .NET EventHandler event delegate system. To identify a complete list of .NET events, open the respective help file (MstnPlatformNET.chm or DgnPlatformNET.chm) and search for: EventHandler.
  • [[Bentley.GeometryNET]]
  • Q: How can I programatically modify the product Ribbon control?
    A: If you currently own an active Telerik development license you can freely consume Telerik APIs and Events published within your (deployed) customizations. If you do not own a Telerik development license you are limited to using the convenient product User/Admin tools and workflows provided within our software. e.g. See: Customizing the Ribbon and Importing and Exporting Ribbon Customizations). Due to our existing Telerik licensing agreement we cannot create/provide (public/published) Bentley APIs that wrap or export this functionality directly.
  • Q: What do I need to do to add Tabs to the Ribbon with a custom XML file?
    A: Tabs must be referenced by a Tab Collection which in turn must be referenced by a Workflow. Here is an example.
  • Q: How can I access color and other attributes from a material name?
    A: Use the DgnPlatform MaterialManager API (Material.h) and MaterialSettings structure (MaterialSettings.h) where all material settings are stored.
  • [[Namespace Naming Conventions]]
  • Q: How can I process a Parametric Cell?
    A: Parametric Cell Instances are XGraphics. Use the ElementGraphics ElementGraphicsOutput class to iterate contents.
  • Q: How can I validate Operations on Solids that Fail?
    A: To dump the brep topology to a MicroStation text window key-in: modeler debug body
  • [[C API Transforms]]
  • [[VBA API Transforms]]
Unit Testing