Тема: Как организовать цикл по всем блокам?
Как организовать цикл по всем блокам (блоки с атрибутами) на layout1 что бы можно было посчитать их количество, количество атрибутов по каждому блоку, как прочитать Tag блока с атрибутами.
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → Как организовать цикл по всем блокам?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Как организовать цикл по всем блокам (блоки с атрибутами) на layout1 что бы можно было посчитать их количество, количество атрибутов по каждому блоку, как прочитать Tag блока с атрибутами.
Если речь идет имеено о блоках (AcadBlock), то надо искать не в Layou1, а в документе (например, ThisDrawing), а если об экземплярах блоков, вставленных в пространство бумаги (Layou1), то примерно так:
Dim i As Integer, obj As Object, attrs As Variant, attr As AcadAttributeReference, k As Integer
Dim Layout As AcadBlock
Dim a As AcadBlockReference
Set Layout = ThisDrawing.Blocks("*PAPER_SPACE")
For i = 0 To Layout.Count - 1
Set obj = Layout.Item(i)
If StrComp(obj.ObjectName, "AcDbBlockReference", vbTextCompare) = 0 Then
attrs = obj.GetAttributes
For k = LBound(attrs) To UBound(attrs)
Set attr = attrs(k)
... обрабатываем attr.TagString
...
Next k
End If
Next i
Да мне нужен цикл по экземплярам блоков на пространстве бумаги. по твоему коду layount.count у меня 2. И судя по циклу два одинаковых обьекта - AcDbViewport. А обьектов с именем AcDbBlockReference вообще нет, а экземпляры блоков есть на layout1. Походу у тебя цикл по I по количеству layout(1 и 2) получился, а не по числу блоков.
Смотри внимательней:
Layout у меня - это БЛОК с именем *PAPER_SPACE (этот блок представляет собой ПЕРВЫЙ layout - layout1). Последующие именуются *PAPER_SPACEn (n=0,1,2,...).
Далее, Layout.Count - это количества объектов в блоке пространства бумаги, среди которых не только блоки. И если нет объектов с именем AcDbBlockReference, значит нет и экземпляров блоков в первом пространстве бумаги.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → Как организовать цикл по всем блокам?
Форум работает на PunBB, при поддержке Informer Technologies, Inc