V8i VBA Geopak Point3d() from DTM

Versions: MicroStation V8i 08.11.09.714, Geopak 08.11.09.845

My goal is to get a list of vertices that describe the surface so that I can create a triangulated mesh.

Question: What is the correct way is to get vertices from a DTMLinearFeature - and/or is there an easier way to get the vertices from the DTM directly?

Here's what I've been working on today and demo of where the code fails. dtm is retrieved earlier in the code using ClipByPointString(). The program will enumerate the DTM until I try to extract the vertices from the triangle.

    Dim scDTM As DTMFeatureScanCriteria
    Dim eeDTM As DTMFeatureEnumerator

    Set scDTM = New DTMFeatureScanCriteria
    scDTM.ExcludeAllFeatureTypes
    scDTM.IncludeFeatureType (gpkDTMFeatureTypeTriangle)
    Set eeDTM = dtm.GetFeatures(scDTM)

    Dim df As dtmFeature

    Dim k As Integer    
    k = 0
    Do While eeDTM.MoveNext
        Set df = eeDTM.Current
        If df.IsDTMLinearFeature Then
            Dim lf As DTMLinearFeature
            Set lf = df.AsDTMLinearFeature

            ' Fails on VerticesCount and on GetVertices()

'                Debug.Print "Vertex Count : " + Str(lf.VerticesCount)
'                Dim p() As Point3d
'                p = lf.GetVertices()

            ' . . . get vertices from the triangles . . .


        End If
        
        k = k + 1
        Debug.Print "triangle " + Str(k)
    Loop
Parents Reply Children