Let’s look at a way to get all insertions of a block without using ssget and without iterating through all objects in the drawing. This method will also get nested block insertions.
Let’s say the block we want is named “Test2”.
We can use tblobjname to get the block definition entity, thus:
(tblobjname "block" "test2")This will get us an entity name which we can run through entget to get the following:
((-1 . <Entity name: 7ee414c8>)Here we have the beginning of the block definition – the objects that make up the block. If we do an entget on the entity name at assoc 330, we get something like the following:
(0 . "BLOCK")
(330 . <Entity name: 7ee414c0>)
(5 . "181")
(100 . "AcDbEntity")
(67 . 0)
(8 . "0")
(100 . "AcDbBlockBegin")
(70 . 0)
(10 0.0 0.0 0.0)
(-2 . <Entity name: 7ee414d0>)
(2 . "test2")
(1 . "")
)
((-1 . <Entity name: 7ee414c0>)Note the 331 entries. These are the entity names for each insertion of Test2.
(0 . "BLOCK_RECORD")
(330 . <Entity name: 7ee3fc08>)
(5 . "180")
(100 . "AcDbSymbolTableRecord")
(100 . "AcDbBlockTableRecord")
(2 . "test2")
(360 . <Entity name: 7ee414c8>)
(340 . <Entity name: 0>)
(102 . "{BLKREFS")
(331 . <Entity name: 7ee414e8>)
(331 . <Entity name: 7ee41540>)
(102 . "}")
(70 . 1)
(280 . 1)
(281 . 0)
)
This approach has distinct advantages over ssget, primarily because this will show nested insertions. Also, with a bit of trickery, this can be used with objectdbx documents – avoiding the need to iterate every object in the drawing looking for block insertions.
For more information see my entry on Getting block insertions with objectdbx.
No comments:
Post a Comment