Hallo an Alle,
ich verwende den Code unten um alle meine Blockreferenzen in einem bestimmten Layout aus zufiltern. Das klappt gut, ist aber sehr langsam. Hat jemand eine Idee wie es schneller ginge. Auch kleine Verschnellerungen wären schon von Vorteil weil der Code oft abläuft.
Public Sub Aktuell()
Dim xtypeOut As Object
Dim xdataOut As Object
Dim Bezeichnung As AcadBlockReference
Dim Attrib As Object
Dim i As Integer
Dim A As Integer
Dim B As Integer
Dim Entity As AcadEntity
Dim Thing(0) As AcadEntity
sstext = ThisDrawing.SelectionSets.Add("111")
For Each Entity In ThisDrawing.ActiveLayout.Block
If Entity.ObjectName = "AcDbBlockReference" Then
Try
Entity.GetXData("", xtypeOut, xdataOut)
If Strings.UCase(xdataOut(0)) = "HERMANNSBEZEICHNUNG" Then
Thing(0) = Entity
sstext.AddItems(Thing)
End If
Catch ex As Exception
End Try
End If
Next Entity
Ich habe auch schon folgendes verwendet:
FilterType(0) = 0
FilterData(0) = "INSERT"
FilterType(1) = 1001
FilterData(1) = "HermannsBezeichnung"
sstext.Delete()
sstext = ThisDrawing.SelectionSets.Add("111")
sstext.Select(Common.AcSelect.acSelectionSetAll, , , FilterType, FilterData)
Das ist viel schneller, dursucht aber die ganze Zeichnung.
kann ich im nachhinein irgendwie herausfinden in welchem Layout sich die Blockref befindet? Dann könnte ich in einer weiteren Schleife die aus dem aktuellem Layout finden.
Danke im Vorraus.
Gruß, Theo
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP