Hallo liebe VBA-Profis,
ein gutes neuen Jahr noch.
Als nur gelegentlicher Nutzer von VBA habe ich ein Problem, das sich vielleicht auf eine
einfache Frage reduzieren lässt:
Kann es sein, dass Blockreferenzen mit "Explode" nur unvollständig aufgelöst werden?
Ich habe in einem größeren Programm etwa folgenden Abschnitt:
Dim BlockCol As Collection
Dim Object As AcadObject
Dim AktBlock As AcadBlockReference
Dim i, ii, j As Integer
Dim Block As AcadBlock
Dim BlockRef As AcadBlockReference
Dim aobject As Variant
Anfang:
1 Set BlockCol = New Collection
For Each Object In ThisDrawing.ModelSpace
If TypeName(Object) = "IAcadBlockReference2" Then
BlockCol.Add Object
End If
2 Next
3 For Each aobject In BlockCol 'Alle (noch) vorhandenen Blöcke in der Zeichnung sollen durchsucht werden
Set BlockRef = aobject
Set Block = ThisDrawing.Blocks(BlockRef.Name)
'Ab hier enthält "Block" die einzelnen Elemente des Blocks
5 For i = 0 To Block.Count - 1
'Wenn das gefundene Objekt ein Block ist, so wird der äußere Block aufgelöst
7 If TypeName(Block.Item(i)) = "IAcadBlockReference2" Then
'*****Hier ist das Problem**********
BlockRef.Explode
'***********************************
GoTo Anfang
8 End If
6 Next i
4 Next
Zweck ist folgender:
Das Programm sammelt alle Blockreferenzen des Modells (1-2). Danach werden alle Elemente
(5-6) jedes Blocks (3-4) durchsucht.
Wenn das Programm geschachtelte Blockreferenzen findet, wird jeweils die äußerste aufgelöst(7-8).
Was passiert ist folgendes:
Der äußerste Block wird aufgelöst. Wenn ich die entstandenen Linien anklicke, wird als Objekttyp
"Linie" angezeigt ( -soweit wie ich es erwartet habe!). Wenn ich aber mit der Schnellauswahl nach
allen Blockreferenzen suche, werden auch die aufgelösten Linien mit ausgewählt, die früher zur
Blockreferenz gehört haben ( und nicht nur die noch vorhandenen inneren Blöcke!!!).
Normalerweise sollten in meinem Programm alle Blöcke bis auf den innersten aufgelöst werden.
Aufgelöst wird aber nur der äußerste. Ich vermute, dass das an dem Effekt liegt, den ich
beschrieben habe.
Kann mir da jemand weiterhelfen - das wäre sehr sehr freudlich!
------------------
GN
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP