Autor
|
Thema: Suchfunktionen (2868 mal gelesen)
|
Sebastian Nold Mitglied Anlagenplaner
Beiträge: 5 Registriert: 24.10.2011 Microstation V8i
|
erstellt am: 24. Okt. 2011 07:23 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich bin erst seit kurzem MS V8i User und wollte nachfragen ob es eine Möglichkeit gibt, vorhandene Elemente nach ihren Längen zu durchsuchen bzw. alle Elemente die die Länge <= 0.05 haben zu makieren. Vielen Dank für eure Hilfe! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sebastian Nold Mitglied Anlagenplaner
Beiträge: 5 Registriert: 24.10.2011 Microstation V8i
|
erstellt am: 28. Okt. 2011 08:52 <-- editieren / zitieren --> Unities abgeben:
Achso und falls dies nur durch ein Makro durchführbar ist, wäre ich dankbar wenn ihr mir Tipps für die Erstellung geben könntet. Kenne mich zwar durch Excel - Makroprogrammierung mit VBA aus, kenne aber noch kaum befehle in MicroStation. Danke. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sebastian Nold Mitglied Anlagenplaner
Beiträge: 5 Registriert: 24.10.2011 Microstation V8i
|
erstellt am: 09. Nov. 2011 13:33 <-- editieren / zitieren --> Unities abgeben:
|
LAG-FK Mitglied CAD-Techniker/Admin
Beiträge: 315 Registriert: 24.11.2010 MS-V8i-SS4 Vers. 08.11.09.833, PowerDraft-V8i-SS4 Vers. 08.11.09.833, MS-XM Vers. 08.09.02.82, FME-2013, Corel-X5, ACAD 2016, GeoMedia Plus
|
erstellt am: 22. Nov. 2011 07:59 <-- editieren / zitieren --> Unities abgeben: Nur für Sebastian Nold
Hallo, Anbei ein Macro das kannst Du im ->VBA-Projektmanager->Visual Basic Editor auf die gesuchte Länge anpassen, die Elemente werden entsprechend der Vorgabe selektiert. Endung .txt entfernen Gruß Franz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sebastian Nold Mitglied Anlagenplaner
Beiträge: 5 Registriert: 24.10.2011 Microstation V8i
|
erstellt am: 22. Nov. 2011 11:06 <-- editieren / zitieren --> Unities abgeben:
|
Sebastian Nold Mitglied Anlagenplaner
Beiträge: 5 Registriert: 24.10.2011 Microstation V8i
|
erstellt am: 24. Nov. 2011 09:17 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, das Makro von Franz funktioniert fast perfekt. Jetzt hab ich aber Aufgrund der Dateigröße ein kleines Problem. Ich hab das Makro noch leicht ergänzt. Es werden jetzt die makierten Linien immer auch noch gelöscht. Der Code hierzu: Sub SelectLineLength() Dim ee As ElementEnumerator Dim elem As Element Dim x As Integer Dim Zaehler As Long Dim Zaehler1 As Integer Dim t As Long Zaehler = 0 Zaehler1 = 0 t = Timer Set ee = ActiveModelReference.Scan While ee.MoveNext If ee.Current.IsChainableElement Then Set elem = ee.Current If elem.AsChainableElement.Length < 0.02 Then ActiveModelReference.SelectElement elem elem.Redraw Zaehler = Zaehler + 1 Zaehler1 = Zaehler1 + 1 If Zaehler1 = 200 Then Zaehler1 = 0 CadInputQueue.SendCommand "DELETE ELEMENT" End If End If End If Wend CadInputQueue.SendCommand "DELETE ELEMENT" MsgBox Timer - t & " sec", , "Makrolaufzeit" x = MsgBox("Das Makro wurde erfolgreich ausgeführt! Es wurden " & (Zaehler) & "Linien gelöscht", , "Hinweis!") End Sub Er muss in der größten Datei nun 420000 Linien makieren. Deshalb hab ich einen Zaehler eingebaut der alle 200 makierten Linien ein Löschvorgang durchführt. Das hat die Ausführungsdauer des Makros auf ca. 35 min reduziert. Jetzt ist das aber leider immernoch relativ lang. Hat jemand eine Idee wie ich die Linien die kürzer als 0.02 m sind löschen kann bzw. wie ich das oben aufgeführte Makro optimieren kann damit es schneller läuft? Vielen Dank. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cdv Mitglied Freiberufler
Beiträge: 15 Registriert: 24.11.2011 Win V7 Prof 64 bit V8, V8i
|
erstellt am: 24. Nov. 2011 15:25 <-- editieren / zitieren --> Unities abgeben: Nur für Sebastian Nold
Ich würde behaupten, mit mdl geht's fixer. Schick mir doch eine Beispieldatei (muss ja nicht der riesen Klopper sein), dann probier ich das aus. P.S. Hab's gerade ausprobiert. Die angehängte delline.ma läuft bei mir ca. 10x so schnell, u.A., weil das Löschen der Grafik für jede Linie unterdrückt ist und erst am Ende ein Update erfolgt. Aufruf mit mdl l delline 0.03 löscht alles < 0.03, ohne Parameter ist 0.02 als Grenze eingestellt. Grüße Thomas [Diese Nachricht wurde von cdv am 25. Nov. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |