Bentley Communities
Bentley Communities
  • Site
  • User
  • Site
  • Search
  • User
  • Welcome
  • Products
  • Support
  • About
  • More
  • Cancel
MicroStation
  • Product Communities
  • More
MicroStation
MicroStation Wiki Cleaning Property Data with VBA
    • 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

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

    Cleaning Property Data with VBA

       
      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

    In the application of complex cells, factual data that is already attached and fit with default values is common. These default values are specified when creating the cells, and they may no longer be the current values. You can now use VBA to clean up property data values by searching for sepcific factual data and adjusting the values. The attribute data itself will not be deleted, only the contents will be cleared.

    Here is a simple example that makes a selection of all active model cells which are then checked to see whether or not factual data is available. If so, it reads and checks the name.

    If the correct factual data is found, the values are reset, and the values are added to an empty string:

    Option Explicit
     
    Sub tag_clear()
    Dim Sc As New ElementScanCriteria
    Dim Ee As ElementEnumerator
    Dim otags() As TagElement
    Dim i As Integer
     
    ' Looking for cells:
    Sc.ExcludeAllTypes
    Sc.IncludeType msdElementTypeSharedCell    'Pseudo-cells (Type 35)
    Sc.IncludeType msdElementTypeCellHeader    'Type 2 Cells
    Set Ee = ActiveModelReference.Scan(Sc)
     
    ' Check each cell for factual data
    ' If factual data was found and the name matches, clean it up:
    Do While Ee.MoveNext
          If Ee.Current.HasAnyTags Then
              otags = Ee.Current.GetTags
              For i = LBound(otags) To UBound(otags)
                If otags(i).TagSetName = "tagsetname" Then  ' Example names tagset
                  If otags(i).TagDefinitionName = "tagname" Then ' Example names tag
                      otags(i).Value = ""
                      otags(i).Rewrite
                  End If
                End If
              Next
           End If
    Loop
    End Sub

    In the above example, the name of the attribute data-set and attribute data are fixed. In this way, this VBA routine can be used in batch mode, but would add several different names each time a change in the program is made.

    Therefore, to be able to apply the routine a little bit easier for differenet names, here is an extended example which the routine must be given names to be tested as a parameter when running it. The call parameters are found in the Key-in arguments that stop here in the components and are stored in the array sNames. A separator space is assumed.

    If 0 or only 1 parameter has been given, it stops the routine with a message in the message center.

    Option Explicit
     
    Sub tag_clear()
    Dim Sc As New ElementScanCriteria
    Dim Ee As ElementEnumerator
    Dim otags() As TagElement
    Dim i As Integer
    Dim sNames() As String
     
    sNames = Split(KeyinArguments, " ")
    If UBound(sNames) <= 0 Then    ' there were only 1 or no given parameters
        MessageCenter.AddMessage "Es fehlen Parameter zum Bereinigen der Sachdaten", , msdMessageCenterPriorityError
        Exit Sub    ' end of the routine
    End If
     
    ' Looking for cells:
    Sc.ExcludeAllTypes
    Sc.IncludeType msdElementTypeSharedCell    'Pseudo-cells (Type 35)
    Sc.IncludeType msdElementTypeCellHeader    'Type 2 Cells
    Set Ee = ActiveModelReference.Scan(Sc)
     
    ' Check each cell on factual data
    ' If factual information is available and the name matches, clean it up:
    Do While Ee.MoveNext
          If Ee.Current.HasAnyTags Then
              otags = Ee.Current.GetTags
              For i = LBound(otags) To UBound(otags)
                If otags(i).TagSetName = Trim(sNames(0)) Then  ' Example names tagset
                  If otags(i).TagDefinitionName = Trim(sNames(1)) Then ' Example names tag
                      otags(i).Value = ""
                      otags(i).Rewrite
                  End If
                End If
              Next
           End If
    Loop
    End Sub

    Calling this routine must be done with at least 2 parameters, the first of which is the name of the attribute data set and the second is assumed to be the name of the property date.

    The following call can be used to open the VBA routine in order to achieve the same result as the first example:

    vba run tag_clear tagsetname tagname

    • VBAWindows 7 32 bit
    • MicroStation
    • Windows 7 64 bit
    • Programming
    • en
    • 08.11.09.578
    • SELECTsupport
    • Share
    • History
    • More
    • Cancel
    • Tristan Anderson Created by Bentley Colleague Tristan Anderson
    • When: Thu, Jul 9 2015 10:25 AM
    • Maggie Fortescue Last revision by Bentley Colleague Maggie Fortescue
    • When: Thu, Jul 9 2015 4:07 PM
    • Revisions: 3
    • 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

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