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
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 . . .
k = k + 1
Debug.Print "triangle " + Str(k)
Answer Verified By: Mark Stefanchuk
Not sure how I missed dtm.GetMeshElement(). Works as expected.
FYI - When I try to use the enumerator to GetVertices() MicroStation locks up and eventually the Abort dialog is displayed.