Bentley Communities
Bentley Communities
  • Site
  • User
  • Site
  • Search
  • User
MicroStation Programming
  • Product Communities
  • Developers and Programming
  • MicroStation Programming
  • Cancel
MicroStation Programming
MicroStation Programming - Wiki CONNECT APIs
    • Sign In
    • MicroStation Programming - Wiki
    • -MicroStation CONNECT Edition
      • +MicroStation SDK
      • -MicroStation MDL
        • MicroStation CONNECT SDK - Introduction
        • +MDL FAQ
        • -MDL Topics
          • -CONNECT APIs
            • Bentley Namespace Naming Conventions
            • Bentley.GeometryNET
          • MDL Constraints
          • +MDL Make Files
          • +MDL Tasks
          • +MDL Transforms
      • +MicroStation VBA
      • +Training
      • +Code Examples and Utilities
      • +Code Snippets
    • +MicroStation V8

     
     Questions about this article, topic, or product? Click here. 

    CONNECT APIs

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

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

    Cells
    • Components Center (Library API, Portal, Docs, Tutorials, Samples, Changelog, Wikis, Blogs, Medium, YouTube, LEARN)
      TIP: Users can access Components Center via the Components Center Portal or Product Addin:
    Database
    • [CONNECT C++] Database API Introduction
    • Session Debug and Logging Database Commands
    Dimensions

    DimensionStyles

    • 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);
    EC

    Blogs

    • [MSCE U17 C++] Create Report with Calculated Column, Group By, Aggregation, Summary & Show/Hide Column feature (Applies To: Native)
    • [MSCE U16 C#] Create custom group for "Include Items" in MicroStation's Report (Applies To: Managed)
    • Grouping and Sorting ECProperties in EC property pane (Medium, Applies To: Managed)
    • EC Property User Interface Editor-ECPropertyUITypeEditor (Applies To: Managed, Language: Chinese. See Language Tip below)
    • [MSCE U14 C++, C#] DgnEC Instance and Relationship Change Events (Medium, Applies To: Native, Managed, MSCE-U14)
    • Add new EC Symbol provider with custom symbol sets using Native API's (Medium, Applies To: Native, MSCE-U14)
    • Add new EC Symbol provider with custom symbol sets using Managed API's (Medium, Applies To: Managed, MSCE-U14)
    • EC CRUD Operations With Native And Managed DgnEC APIs (Medium, Applies To: Native, Managed)
    • Working with EC Properties using Native and Managed APIs (Medium, Applies To: Native, Managed)
    • Working with ItemType EC Expression using Managed, Native and COM API’s [Upcoming feature in MicroStation CONNECT Edition Update 14] (Medium, Applies To: Native, Managed, VBA/COM)

    Training

    • MicroStation CONNECT Developer Training (Topics 11-13: EC Framework, DgnEC APIs and EC ItemTypes)

    Tips

    Languages Consider 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.
    Instances
    • CreateScope

    Notes

    • Learn about Bentley's Base Infrastructure Schemas (BIS) and Engineering Classifications (EC) APIs
      • Take the Accredited iTwin Developer Program (YouTube)
      • BIS Docs (BIS Modeling, EC SQL Tutorial and EC Expressions)
      • MicroStation Blogs (EC CRUD Operations - Native And Managed APIs)
      • MicroStation Docs (Expressions, Expression Types and Syntax Examples)
      • MicroStation SDK
        • Docs: ecobjectsapi.chm, ecobjects.chm, ecplugins.chm, ecservices.chm
        • Examples: ..\examples\DgnEC\*(ECCRUD, ItemTypes, PickLists, PropertyTypes, Report, SymbolProvider)
    • EC Expressions (Application Of)
      • Item Types: Expressions, Expression Builder (blog), and Expression Types and Syntax Examples
      • Display Rules and Reports: Condition Editor
      • Named Expressions (Dialog, Report Symbols)
      • Parametric Modeling: Expression Builder
    • BIS > Schema: Reference, Customization, Versioning and Validation (Class Editors: EC Class Editor vs Bentley Class Editor)
      • To View/Edit Bentley BIS or Custom Schemas requires a “Class Editor” available services/apps:

        • Bentley CONNECT Edition Products: OpenPlant Project Administrator or OpenPlant Modeler
        • Bentley iModel Services:
          • iModel Console
          • Validation - ecschema-editing

      • To View Bentley BIS Schemas use:

        • iModel Schema Browser
          • iModel Console
          • iModel Schema Explorer (Steps)

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

    Related

    • API Topics: ItemTypes, Picklists, Reports/Tables
    Elements
    • 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 Handlers MicroStation .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.
    Geometry
    • Bentley.GeometryNET
    GUI/UI
    • 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.
      Fullscreen MyRibbon.xml Download
      <RibbonItems xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="RibbonDefinitions.xsd">
        <Workflows>
          <Workflow Name="MyWorkFlow" Priority="10000">
            <Label>MyWorkFlow</Label>
            <Ribbon>
              <TabCollectionRef>MyTabs</TabCollectionRef>
            </Ribbon>
          </Workflow>
        </Workflows>
        <TabCollections>
          <TabCollection Name="MyTabs">
            <TabRef Name="MyTab1" Priority="1000" MatchProcessing="Override">
              <TabParams>
                <AccessText>H</AccessText>
                <Visibility />
              </TabParams>
            </TabRef>
            <TabRef Name="MyTab2" Priority="1000" MatchProcessing="Override">
              <TabParams>
                <AccessText>H</AccessText>
                <Visibility />
              </TabParams>
            </TabRef>
          </TabCollection>
        </TabCollections>
          <Tabs>
              <Tab Name="MyTab1" Priority="100">
                  <Label>MyTab1</Label>
                  <TabParams>
                      <AccessText />
                  </TabParams>
                  <TabItems>
                      <GroupRef Name="Drawing.Attach.ItemTypes" Priority="10000">
                          <GroupParams>
                              <AccessText>1</AccessText>
                              <GroupLauncherAccessText>1</GroupLauncherAccessText>
                          </GroupParams>
                      </GroupRef>
                      <GroupRef Name="Modeling.Content.Cells" Priority="20000">
                          <GroupParams>
                              <AccessText>2</AccessText>
                              <GroupLauncherAccessText>2</GroupLauncherAccessText>
                          </GroupParams>
                      </GroupRef>
                      <GroupRef Name="Modeling.Content.NamedPresentation" Priority="30000">
                          <GroupParams>
                              <AccessText>3</AccessText>
                              <GroupLauncherAccessText>3</GroupLauncherAccessText>
                          </GroupParams>
                      </GroupRef>
                      <GroupRef Name="PWCatalog" Priority="30000">
                          <GroupParams>
                              <AccessText>G9</AccessText>
                              <GroupLauncherAccessText>9</GroupLauncherAccessText>
                          </GroupParams>
                      </GroupRef>
                      <GroupRef Name="Personal.ac_gui.Content.CC2.0" Priority="31000" MatchProcessing="Override">
                          <GroupParams>
                              <AccessText />
                              <Visibility />
                          </GroupParams>
                      </GroupRef>
                  </TabItems>
              </Tab>
              <Tab Name="MyTab2" Priority="20000">
                  <Label>MyTab2</Label>
                  <TabParams>
                      <AccessText>O</AccessText>
                      <Visibility />
                  </TabParams>
                  <TabItems>
                      <GroupRef Name="Drawing.Attach.ItemTypes" Priority="10000" MatchProcessing="Override">
                          <GroupParams>
                              <AccessText>1</AccessText>
                              <GroupLauncherAccessText>1</GroupLauncherAccessText>
                              <Visibility />
                          </GroupParams>
                      </GroupRef>
                      <GroupRef Name="Modeling.Content.Cells" Priority="20000" MatchProcessing="Override">
                          <GroupParams>
                              <AccessText>2</AccessText>
                              <GroupLauncherAccessText>2</GroupLauncherAccessText>
                              <Visibility />
                          </GroupParams>
                      </GroupRef>
                      <GroupRef Name="Modeling.Content.NamedPresentation" Priority="30000" MatchProcessing="Override">
                          <GroupParams>
                              <AccessText>3</AccessText>
                              <GroupLauncherAccessText>3</GroupLauncherAccessText>
                              <Visibility />
                          </GroupParams>
                      </GroupRef>
                      <GroupRef Name="PWCatalog" Priority="30000" MatchProcessing="Override">
                          <GroupParams>
                              <AccessText>G9</AccessText>
                              <GroupLauncherAccessText>9</GroupLauncherAccessText>
                              <Visibility />
                          </GroupParams>
                      </GroupRef>
                  </TabItems>
              </Tab>
          </Tabs>
          <Groups>
              <Group Name="Personal.ac_gui.Content.CC2.0" Priority="31000" PanelType="Collapsible">
                  <Label>CC2.0</Label>
                  <Icon Type="NamedIcon">
                      <NamedIcon>PlaceActivePoint</NamedIcon>
                  </Icon>
                  <GroupParams>
                      <AccessText />
                      <Visibility />
                  </GroupParams>
                  <GroupItems>
                      <ButtonRef Name="Personal.ac_gui.Content.CC2.0.Launch1" Priority="1000" MatchProcessing="Override">
                          <ButtonParams Size="Large" CollapseToSmall="WhenGroupIsSmall" CollapseToMedium="WhenGroupIsMedium">
                              <AccessText>GP1</AccessText>
                              <PopupAccessText>M</PopupAccessText>
                              <Visibility />
                          </ButtonParams>
                      </ButtonRef>
                  </GroupItems>
              </Group>
          </Groups>
          <GroupPanels>
              <GroupPanel Name="Personal.ac_gui.Content.CC2.0.CC2.0" PanelType="VerticalStacked" Priority="0">
                  <Label>CC2.0</Label>
                  <GroupPanelParams>
                      <Visibility />
                  </GroupPanelParams>
              </GroupPanel>
          </GroupPanels>
          <Buttons>
              <Button Name="Personal.ac_gui.Content.CC2.0.Launch" Priority="0">
                  <ButtonParams Size="Large" CollapseToSmall="WhenGroupIsSmall" CollapseToMedium="WhenGroupIsMedium">
                      <AccessText>GP1</AccessText>
                      <PopupAccessText>M</PopupAccessText>
                      <Visibility />
                  </ButtonParams>
                  <ButtonData>
                      <CommandData Type="UserKeyinCommand">
                          <UserKeyinCommand>
                              <Keyin>bentley.componentscenter.client.microstationaddin helloworld</Keyin>
                              <Icon Type="NamedIcon">
                                  <NamedIcon>3D</NamedIcon>
                              </Icon>
                              <Label>Launch</Label>
                              <Description>Launches Components Center</Description>
                          </UserKeyinCommand>
                      </CommandData>
                  </ButtonData>
              </Button>
              <Button Name="Personal.ac_gui.Content.CC2.0.CC2.0.Launch" Priority="0">
                  <ButtonParams Size="Large" CollapseToSmall="WhenGroupIsSmall" CollapseToMedium="WhenGroupIsMedium">
                      <AccessText>GP1</AccessText>
                      <PopupAccessText>M</PopupAccessText>
                      <Visibility />
                  </ButtonParams>
                  <ButtonData>
                      <CommandData Type="UserKeyinCommand">
                          <UserKeyinCommand>
                              <Keyin>bentley.componentscenter.client.microstationaddin helloworld</Keyin>
                              <Icon Type="NamedIcon">
                                  <NamedIcon>PlaceContent</NamedIcon>
                              </Icon>
                              <Label>Launch</Label>
                              <Description>Launches Components Center</Description>
                          </UserKeyinCommand>
                      </CommandData>
                  </ButtonData>
              </Button>
              <Button Name="Personal.ac_gui.Content.CC2.0.Launch1" Priority="0">
                  <ButtonParams Size="Large" CollapseToSmall="WhenGroupIsSmall" CollapseToMedium="WhenGroupIsMedium">
                      <AccessText>GP1</AccessText>
                      <PopupAccessText>M</PopupAccessText>
                      <Visibility />
                  </ButtonParams>
                  <ButtonData>
                      <CommandData Type="UserKeyinCommand">
                          <UserKeyinCommand>
                              <Keyin>bentley.componentscenter.client.microstationaddin helloworld</Keyin>
                              <Icon Type="NamedIcon">
                                  <NamedIcon>PlaceContent</NamedIcon>
                              </Icon>
                              <Label>Launch</Label>
                              <Description>Launches Components Center</Description>
                          </UserKeyinCommand>
                      </CommandData>
                  </ButtonData>
              </Button>
          </Buttons>
      </RibbonItems>
    ItemTypes
    • Item Types CRUD Operations with Native, COM and Managed API's (Medium, Applies To: Native, Managed, VBA/COM)
    Materials
    • 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.
    Mesh
    • Create a Vertex Colored Mesh (Applies to: Native. Language: Chinese - See Language Tip)
    Namespaces
    • Bentley Namespace Naming Conventions
    PickLists
    • [MSCE U16 C#, C++] Create custom PickListProvider for PickList values (Applies to: Native, Managed)
    • PickList API changes (MSCE U15) - (Medium, Applies To: Native, Managed)
    • Complete steps to create an SDK example on MicroStation CONNECT Edition with managed Pick List APIs (Medium, Applies To: Managed)
    • Basic examples for managed APIs of Pick List (Medium, Applies To: Managed)
    Reports/Tables
    • TextTable API changes (MSCE U16) (Applies To: Managed)
    Solids
    • Q: How can I process a Parametric Cell?
      A: Parametric Cell Instances are XGraphics. Use the ElementGraphics ElementGraphicsOutput class to iterate contents.
    Transforms
    • C API Transforms
    • VBA API Transforms
    Unit Testing
    • Add Unit Testing to the MicroStation SDK
    • MSCE-APIs
    • Share
    • History
    • More
    • Cancel
    • Robert Hook Created by Bentley Colleague Robert Hook
    • When: Mon, Jul 29 2019 11:31 AM
    • Robert Hook Last revision by Bentley Colleague Robert Hook
    • When: Thu, Mar 23 2023 8:54 AM
    • Revisions: 51
    • Comments: 0
    Recommended
    Related
    Communities
    • Home
    • Getting Started
    • Community Central
    • Products
    • Support
    • Secure File Upload
    • Feedback
    Support and Services
    • Home
    • Product Support
    • Downloads
    • Subscription Services Portal
    Training and Learning
    • Home
    • About Bentley Institute
    • My Learning History
    • Reference Books
    Social Media
    •    LinkedIn
    •    Facebook
    •    Twitter
    •    YouTube
    •    RSS Feed
    •    Email

    © 2023 Bentley Systems, Incorporated  |  Contact Us  |  Privacy |  Terms of Use  |  Cookies