Produkt(e): | MicroStation | ||
Version(en): | 08.11.09.829 | ||
Umgebung: | Windows 8 | ||
Produktbereich: | Programmierung | ||
Produktunterbereich: | VBA |
Für verschiedene Anwendungen kann es von Interesse sein, die gesamten Koordinaten eines Polygonzugs (Linestring) zu erhalten.
Im folgenden Beispiel wird eine VBA Routine vorgestellt, die als Ansatz verwendet werden kann.
Dieser Ansatz einer VBA Routine erstellt zunächst eine Auswahl aller Polygonzüge des aktiven Modells und liest von jedem Polygonzug alle Koordinaten (Vertices) aus, um diese dann in eine Textdatei zu schreiben.
Diese Textdatei wird im selben Verzeichnis angelegt, in dem sich die Zeichnung befindet.
Hier nun das Beispiel
Sub ls2file() Dim Ee As ElementEnumerator Dim Sc As New ElementScanCriteria Dim pList() As Point3d Dim p As Point3d Dim i As Long Open ActiveDesignFile.FullName + "-coords.txt" For Output As #1 Sc.ExcludeAllTypes Sc.IncludeType msdElementTypeLineString Set Ee = ActiveModelReference.Scan(Sc) Do While Ee.MoveNext pList = Ee.Current.AsVertexList.GetVertices Print #1, "Linestring with id: " + Str(DLongToLong(Ee.Current.ID)) For i = LBound(pList) To UBound(pList) p = pList(i) ' pList enthält jeweils alle Vertices eines Linestrings Print #1, "Vertex " + Str(i) + " (x,y,z): " + Str(p.X) + ", " + Str(p.Y) + ", " + Str(p.Z) Next Print #1, " " Loop Close #1 End Sub
Ursprünglicher Autor: | Artur Goldsweer |