Moin
Rekursiv durch die Blockref hierarchie zu laufen bringt nix, da diese ja nur Verweise auf die eigentlichen Blöcke sind.
Aber du kannst na klar durch alle Blöcke direkt laufen
in etwa so:
dim newblock as acadblock
dim entitys() as acadentity
For each Block in thisdrawing.blocks
for each entity in block
if entity.layer ="willi" then
'geht am einfachsten kann man aber auch mit ner collection etc machen
handles=handles & " " entity.handle
end if
next
next
so nun hast du alle Handles von den Dinxen auf deinem Layer.
Nun verfrachtest du die in ein entity array und kopierst dieses in den neuen Block.
ich mach das immer in ner for next schleife mit nem array welches nur ein element hat.-> dim entitys(0). Das dauert zwar etwas länger nur ist robuster fals so entity schon in dem Block ist etc.
dim SENTS() as string
senst=split(handles)
for i= lbound(sents) to ubound(sents)
set entitys(0)=getentitybyhandle(sents(i))
sents nun in Block kopieren.. hab ich gerade auswendig nicht aufm Schirm siehe F1 Taste Block definieren
next
Der Haken an der Nummer ist der, das die ganzen Subblöcke ja translatiert, verschoben rotiert etc sind. selbst die Elemente in einem Block haben eine eigene Transformationsmatrix. Nun käme in der Tat die Rekursion ins Spiel um diese Translationen rückgängig zu machen.
Aber für deinen Fall geht das einfacher.
Kopiere alle Blockreferenzen die auf dem Modelspace liegen.
Explodiere die alle rekursiv. Dabei wird die Rückwärtsauflösung der Verschiebungen etc. der Elemente automatisch gemacht. Was an Elementen nicht auf dem gewünschten Layer liegt wird gelöscht. Was übrig bleibt wandert in den neuen Block. Ich meine mich aber auch zu entsinnen, das ich mal ne Routine hier gepostet hab, die Elemente zu einem Block hinzufügt ohne den Blockeditor zu bemühen oder den Nullpunkt eines Blockes neu setzt. Siehe dir die doch auch mal an Lieben Gruß Thomas
------------------
Wer es nicht versucht, hat schon verlorn
Und bei 3 Typos gibts den vierten gratis !
<<< for sale !
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP