TransientElement Error

could any one can help me with below error in VBA?

code:

Sub ShowTransientElementsold()
    Dim tec1 As TransientElementContainer
    Dim ele1 As Element
    Dim flags As MsdTransientFlags
    Dim eleEnum As ElementEnumerator
    Set eleEnum = ActiveModelReference.GraphicalElementCache.Scan
    Set tec1 = CreateTransientElementContainer1(Nothing, flags, msdView1 + msdView4, msdDrawingModeHilite)
   
    Do While eleEnum.MoveNext
    Set ele1 = eleEnum.Current
    tec1.AppendCopyOfElement ele1
    Loop
 
End Sub

 

error image :

 

 

i'm using V8i select series 2

 

regards,

vinoth

 

regards,

vinoth

Parents Reply Children
  • Hi,

    pls have a look under Tools/References in your IDE.

    Anything suspicious in there?

    Regards, Stefan.

  • Below your hilighted Error, you have declared a Function ClearDisplay that appears not to return a Value data type that all functions are required to.  If you have no data to return, consider declaring ClearDisplay as a Sub(routine) that by definition does not return any values.

    I would highly recommend the following options be used for debugging all your VBA projects to help identify real problems that VBA is nicely hiding to protect the more casual programmer.

    Recommended settings to configure in a development VBA debugging environment

    • Add “Option Explicit” to the top of all your project source code files (classes, modules, and forms)
    • Validate the following VBA Editor options (Tools > Options) are set in your environment:
      • Editor (Tab) > Require Variable Declaration
      • General (Tab) > Error Trapping: Break on All Errors”.  Use this option for your development cycle setting.   Use the less strict (default) setting “Break on Unhandled Errors” in a production environment setting
      • When atttempting to Run your project and receive Errors, occasionally try:
        Debug > Compile {ProjectName} this can help identify errors elsewhere in the project that may not be obvious.

    HTH,
    Bob



  • Thanks Jon for the comments. i had written other vba applications and there was no problem while compiling. i have doubt , i'm missing any of the references. because while typing "Dim tec1 as ", the TransientElementContainer is not listing for selection. this code i prepared with inormation through net search. Also, in objectbrowser i searched for "TransientElementContainer" , but 'no items found'.

     

    Vinoth Joseph

    ATKINS

    Bangalore, India

  • thanks stefan. i checked there in references. nothing is 'missing' and i don't know anything specially i need to add for this code.

     

    Vinoth Joseph

    ATKINS

    Bangalore, India

  • Robert, thanks for the information that you passed.

    i feel, i done correctly what you suggested. but, still the issue is there.

    and, my appologize on partial information of function cleardisplay. please ignore that function. issue is with TransientElementContainer.

     

    Vinoth Joseph

    ATKINS

    Bangalore, India

  • i missed to attach few of the screen shorts to describe clearly.

    TransientElementContainer not displaying in object browser:

     

    references addequipmentattribute image:

    and "TransientElementContainert"  is missing in declaration list:

     

    regards,

    Vinoth

     

     

    Vinoth Joseph

    ATKINS

    Bangalore, India

  • I think you are not working in Select Series. In your references, 'Bentley Microstation DGN 8.0 Object Library' is for V8.05*

    For select series, it should 8.9 Object Library.

    Sivag

  • TranslientElementContainer class was introduced in MicroStation 08.09.02

    You may want to implement VBA class as follows:

    Private Declare Sub mdlTransient_free Lib "stdmdlbltin.dll" _
      (ByRef freeTedPP As LongByVal eraseDisplay As Long)

    Private Declare Function mdlTransient_addElemDescr Lib "stdmdlbltin.dll" _
      (ByVal tedP As LongByVal edP As LongByVal snappable As Long, _
      ByVal viewMask As LongByVal displayMode As Long, _
      ByVal displayFirst As LongByVal atHead As Long, _
      ByVal initialDisplay As LongAs Long
      
    Dim tedP As Long

    Private Sub Class_Initialize()
      tedP = 0
    End Sub

    Private Sub Class_Terminate()
      Reset
    End Sub

    Public Property Get MdlTransientDescrP() As Long
      MdlTransientDescrP = tedP
    End Property

    Public Function AppendCopyOfElement( _
      elem As Element, _
      Optional drawNow As Boolean = True, _
      Optional snappable As Boolean = True, _
      Optional views As MsdViews = msdViewAll, _
      Optional drawMode As MsdDrawingMode = msdDrawingModeNormal, _
      Optional displayFirst As Boolean = True, _
      Optional atHead As Boolean = True _
      )
        tedP = mdlTransient_addElemDescr(tedP, elem.MdlElementDescrP, _
        IIf(snappable, 10), views, drawMode, IIf(displayFirst, 10), _
        IIf(atHead, 10), IIf(drawNow, 10))
    End Function

    Public Sub Reset()
      If tedP <> 0 Then mdlTransient_free tedP, 1
      tedP = 0
    End Sub
  • Unknown said:
    TransientElementContainer not displaying in object browser

    Here's what you should be seeing — the Bentley MicroStation DGN 8.9 Object library

    I don't know what Bentley vbprct0 type library is, but it is not VBA.

    As others have indicated, you're using the V8.5 version of VBA with MicroStation SS2.  At some point someone must have installed the earlier version of MicroStation after SS2.  The solution is to reinstall SS2, which will add the necessary data to the Windows Registry.

     
    Regards, Jon Summers
    LA Solutions

  • Thanks Jon.

    In "About microstation" dialogue box, it is indicating select series 2 version 08.11.07.443.

    as you suggested, let me reinstall, then i will update you.

    regards,

    vinoth

     

    Vinoth Joseph

    ATKINS

    Bangalore, India