Bentley Communities
Bentley Communities
  • Site
  • User
  • Site
  • Search
  • User
  • Welcome
  • Products
  • Support
  • About
  • More
  • Cancel
MicroStation
  • Product Communities
  • More
MicroStation
MicroStation Wiki Linking to VBA Elements with User Attributes
    • Sign in
    • -MicroStation Wiki
      • +Learning Tips
      • -MicroStation
        • +3D Printing - MicroStation
        • +Animation - MicroStation
        • +Archive / Backup - MicroStation
        • +Base Geometry - MicroStation
        • +Batch Processing - MicroStation
        • +CONNECT Advisor - MicroStation
        • CONNECT Integration - MicroStation
        • +CONNECTION Client
        • +Cells - MicroStation
        • +Change Tracking - MicroStation
        • +Configuration - MicroStation
        • +Coordinate Systems - MicroStation
        • +Curves - MicroStation
        • +Custom Linestyles - MicroStation
        • +DGN - MicroStation
        • +DWG - MicroStation
        • +Database - MicroStation
        • +Detailing Symbols - MicroStation
        • +Dimensions - MicroStation
        • +Documentation & Help - MicroStation
        • +Drawing Aids - MicroStation
        • +Exception - MicroStation
        • +FAQ - MicroStation
        • +Feature Based Solids Modeling - MicroStation
        • +File Access - MicroStation
        • +GUI - MicroStation
        • +General - MicroStation
        • +Graphics Display - MicroStation
        • +Groups - MicroStation
        • +Hardware / Input Devices - MicroStation
        • +Import/Export - MicroStation
        • +Installation - MicroStation
        • +Interchange - MicroStation
        • +Interference - MicroStation
        • +Internationalization - MicroStation
        • +Levels - MicroStation
        • +Licensing - MicroStation
        • +Manipulation - MicroStation
        • +Markup / Redline - MicroStation
        • +Measure - MicroStation
        • +Mesh - MicroStation
        • +Models - MicroStation
        • +Multi-Lines - MicroStation
        • +OLE - MicroStation
        • +Other - MicroStation
        • +Parametrics - MicroStation
        • +Patterning - MicroStation
        • +Point Cloud - MicroStation
        • +Printing - MicroStation
        • -Programming - MicroStation
          • +General - Programming - MicroStation
          • +Macro Recorder - Programming - MicroStation
          • +MDL - Programming - MicroStation
          • -VBA - Programming - MicroStation
            • Automatic execution when opening or closing drawings
            • Automatic Subroutine Loading
            • Automatically generate plots with VBA
            • Avoiding Inaccuracies in VBA Methods - .FacetSolidAsShapes for SmartSolids
            • Bring All Text to a New Level with VBA
            • Browsing References for Specific Items
            • Calculating the range of Rotated Cells
            • Changing Colors of Levels in VBA
            • Changing display priority for references
            • Changing Element Colors from RGB to Indexed Color
            • Changing Layer Colors from RGB to an Indexed Color
            • Changing the Alignment of All Texts with VBA
            • Changing the display order of elements
            • Changing the presentation order of Layers
            • Changing the Transparency Settings of Levels with VBA
            • Cleaning Property Data with VBA
            • COM Server error
            • Create Engineering (HTML) Links in VBA
            • Creating Coordinates as Latitude and Longitude using VBA Lines
            • Creating VBA Levels - 'Level name is duplicate'
            • Deleting Lines of Length 0 Using VBA
            • Errors Attempting to Load VBA Projects
            • Errors while attempting to load VBA
            • Exporting the RGB Values of the Color Table to a Text File in VBA
            • Forms in an .mvba do not open some pc's
            • How to read the RGB values of the Attached Color Table
            • Keyin to load the VBA Project Manager in MicroStation Connect
            • Leaving a VBA Tools Dialog Box Open
            • Linking to VBA Elements with User Attributes
            • New Text Font Cannot be Assigned
            • Placing annotation cells with VBA
            • Print Organizer Control with VBA
            • Printing all Sheet Models to PDF Using VBA
            • Reading the Length of All Arcs
            • Removing All Object Data from Selected Cells in VBA
            • Replacing Points with Circles Using VBA
            • Replacing Text with VBA - Part 1: Introduction
            • Replacing Text with VBA - Part 2: Complex Structures
            • Running a VBA Routine by Keyin
            • +Searching and Evaluating Data in a drawing with VBA
            • Searching and Selecting Text Fields with VBA
            • Updating sequence control with VBA
            • Using a VBA Macro
            • Using the VBA object PropertyHandler to change the Element Information
            • VBA - Interface Error: 0x80040502
            • VBA Error in Execution: Project or Library Not Found
            • What are these "Default.mvba" files?
        • +Project Navigation - MicroStation
        • +Properties - MicroStation
        • +RSS Feeds - MicroStation
        • +Reference - MicroStation
        • +Security - MicroStation
        • +Selection - MicroStation
        • +Settings - MicroStation
        • +Sheet Composition - MicroStation
        • +Solids - MicroStation
        • +Standards - MicroStation
        • +Surfaces - MicroStation
        • +Tables - MicroStation
        • +Text - MicroStation
        • +UI Customization - MicroStation
        • +Units - MicroStation
        • +View - MicroStation
        • +Visualization - MicroStation
        • Welcome Page - MicroStation
        • +Accreditation - MicroStation
        • +i.Models - MicroStation
        • +ProjectWise Integration
        • +Raster - MicroStation
    • +Administration Wiki
    • +Annotations Wiki
    • +Bentley View Wiki
    • +MicroStation PowerDraft
    • +Programming Wiki
    • +Visualization Wiki

    You are currently reviewing an older revision of this page.

    • History View current version

    Linking to VBA Elements with User Attributes

       
      Applies To 
       
      Product(s): MicroStation
      Version(s): 08.11.09.578
      Environment:  Windows 7 32 bit,Windows 7 64 bit
      Area:  Programming
      Subarea:  VBA
      Original Author: Tristan Anderson, Bentley Technical Support Group
       

     Background Information

    There are several ways to provide additional information about elements in a drawing. They are used most commonly for retrieving attribute data, creating functions, and attaching and evaluating. However, this data has drawbacks because the attribute data itself are also elements like texts, and they are linked to the basic elements of links.

    These links can be seperate even during the conversion. For example, the DWG format can be lost because it only supports attribute data in cells (in DWG blocks). There is also the possibility of data linking directly with elements. The advantage here is the close link with the element itself. These linkages are not seperate elements, and must be maintained in the DWG format. This must be selected when saving to a DWG file in the options so that the application data is retained.

    Steps

    Here is a simple example that depends on the active model found in lines as a text attribute.

    ' Example using VBA to help attach strings as attributes to elements:
    Const myID As Long = 22526   ' only example from Help
     
    Sub AddStringAttribute(ele As element, str As String)
        Dim dblk As New DataBlock
        dblk.CopyString str, True
        ele.AddUserAttributeData myID, dblk
        ele.Rewrite
    End Sub
     
    Sub Attribute_append()
    Dim Ee As ElementEnumerator
    Dim Db As DataBlock
    Set Ee = ActiveModelReference.GraphicalElementCache.Scan
    Do While Ee.MoveNext
        If Ee.Current.Type = msdElementTypeLine Then
            AddStringAttribute Ee.Current, "This is an example text"
        End If
    Loop
    End Sub

    Now, when this routine is started Attribute_Append, all the elements of the active model are first selected and checked to see whether it is a line in each case.

    If there is a line, then the text "This is an example text" is attached as a custom attribute on the line.

    After passing thrgouh the routine, this can be checked by using the Keying command "Analyze element", which starts the old analyze tool and selects a line. Under the tab "Attributes", the data will be displayed as shown in the example below:

    PICTURE

    Although the data is stored in binary form, the text can be seen from the text display. With the new element information tool, this data is also displayed, but only binary and not text mode.

    It also immediately raises the question of how one can read such data again. The following is a small example which checks each line for the presence of this data and then outputs:

    Sub Attribute_append()
    Dim Ee As ElementEnumerator
    Dim Db() As DataBlock
    Dim sText As String
    Set Ee = ActiveModelReference.GraphicalElementCache.Scan
    Do While Ee.MoveNext
        If Ee.Current.Type = msdElementTypeLine Then
            Db = Ee.Current.GetUserAttributeData(myID)
            sText = ""
            If UBound(Db) >= 0 Then
                Db(0).CopyString sText, False
                If Len(sText) > 0 Then
                    Debug.Print sText, Ee.Current.AsLineElement.startPoint.x, Ee.Current.AsLineElement.startPoint.y
                End If
            End If
        End If
    Loop
    End Sub

    The output is shown below. It shows the found text and the xy coordinates of the starting point of the line.

    PICTURE

    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

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