Bezieht sich auf | |||
Produkt(e): | MicroStation | ||
Version(en): | 08.11.09.578 | ||
Umgebung: | Windows 7 64 bit | ||
Produktbereich: | Programmierung | ||
Produktunterbereich: | VBA | ||
Ursprünglicher Autor: | Artur Goldsweer, Bentley Technical Support Group | ||
Es kommt gelegentlich vor, dass Zeichnungen eine Vielzahl von Punkten enthält. Dies können durch vielfältige Manipulationen entstanden sein und sind zunächst vielleicht nicht weiter störend, aber beim Plotten können diese aufgrund von Strichbreiten plötzlich sichtbar werden und sollten aus der Zeichnung entfernt werden.
Diese Punkte zu finden und zu löschen kann von Hand zeitraubend sein und kann durch VBA schnell ausgeführt werden.
Punkte werden in MicroStation durch Linien der Länge repräsentiert. Eine Lösung mit VBA könnte also so aussehen, dass zunächst einmal alle Linien gewählt werden und diese auf ihre Länge geprüft werden. Ist die Länge 0, können sie dann gelöscht werden.
Eine mögliche Umsetzung in VBA könnte dann so aussehen:
Sub LinienLaenge0Loeschen() Dim Ee As ElementEnumerator Dim Sc As New ElementScanCriteria Dim Anzahl As Long ' Zähler der gelöschten Elemente ' Punkte = Linien der Länge 0, nur Linien gesucht und geprüft: Sc.ExcludeAllTypes Sc.IncludeType msdElementTypeLine Set Ee = ActiveModelReference.Scan(Sc) Anzahl = 0 Do While Ee.MoveNext With Ee.Current.AsLineElement ' Wenn Linie die Länge 0 dann wird sie gelöscht: If Ee.Current.AsLineElement.Length = 0 Then ActiveModelReference.RemoveElement Ee.Current Anzahl = Anzahl + 1 End If End With Loop MessageCenter.AddMessage "Es wurden " + str(Anzahl) + " Linien der Länge 0 gelöscht", , msdMessageCenterPriorityInfo End Sub
Das Ergebnis, d.h. die Anzahl der gelöschten Elemente wird in der Nachrichtenzentrale als Information ausgegeben.
Daten in einer Zeichnung mit VBA suchen und auswerten, Teil 2 – Eigenschaften von Elementen auslesen