Полная версия этой страницы:
Извлечение данных из блоков
Здравствуйте форумчане. Проектирую тепловые сети в том числе тепловые камеры. Как создать блоки оборудования с атрибутами в том числе и труб которые можно вытягивать разобрался. Теперь хочу автоматически собирать спецификацию. Чертежи выполняем пока в 2д, поэтому все оборудование и фасонина разбиты на блоки с двумя а то и тремя видами. То есть к примеру у тройника есть блок "тройник ду200 вид сверху" и блок "тройник ду200 вид спереди". Сделано для того что на разных сечениях и разрезах тепловых камер был нужный вид оборудования. При извлечении данных из блоков автокад создает спецификацию и группирует атрибуты по названию блока. В моих блоках атрибуты внутри блоков одинаковые для одного фасонного элемента или к примеру крана. Вопрос - как заставить автокад объединять блоки в таблице спецификации по содержимому атрибута? Или есть какие то другие способы собрать спецификацию из набора блоков?
Composter
17.5.2019, 14:59
ну как вариант сделать невидимый атрибут "название для спецификации" и сортировать по нему.
В этом то весь и вопрос. Как сортировать?
Composter
17.5.2019, 15:33
так вроде на странице 5/8 есть графа "combine identical rows" самая верхняя, если поставить галочку то должно проссумировать
еще вот есть script на vba который суммириует в excel одинаковые строки
А можно поподробнее? Желательно со скринами.
Composter
18.5.2019, 16:49
да вроде и так должно было понятно
но все равно скрины прикладываю
слева с галкой спарва без
Эта галочка как раз и объединяет по названию блока. И получается что один и тот же элемент в спецификацию попадает дважды.
Composter
19.5.2019, 12:18
дважды один и тот же элемент не попадает в таблицу. два элемента с разным названием но одинаковыми другими параметрами будут учитываться по отдельности даже если отключить отображение имени элемента.
в таком случае вижу несколько выходов из ситуации для вас
- экспортировать без имени в ексель, и с помощью моего скрипта выше обрабатывать в екселе. можно еще экпорт длеть с помощью след скрипты ,если конечно все данные только в атрибутах
http://forum.abok.ru/index.php?s=&show...t&p=1337385- написать лисп для этого дела, который будеь извлекать атрибуты и сортировать и суммировать.
Не обязательно атрибуты, комментария к блоку достаточно, если дружите хоть немного с VBA.
Неудачная загрузка. Вам запрещено загружать такой тип файлов, поэтому текстом дам-
----------------------------------------------------------------------------------------------------------------
Dim elem As Object
Dim n As Long
Dim x As Long
Dim item As Object
Dim bl As AcadBlock
Dim lay As AcadLayer
Dim prop As Variant
Dim s1 As String
Dim s2 As String
Dim BlocksNames() As String
Dim BlocksCount() As Long
Dim Ex As Excel.Application
Dim Book As Excel.Workbook
ReDim BlocksNames(0)
ReDim BlocksCount(0)
For Each elem In ThisDrawing.ModelSpace
If elem.EntityName = "AcDbBlockReference" Then
s2 = elem.Layer
Set lay = ThisDrawing.Layers.item(s2)
If lay.LayerOn = True And lay.Freeze = False Then
s1 = elem.Name
Set bl = ThisDrawing.Blocks.item(s1)
prop = bl.Comments
If prop <> "" Then
If BlocksNames(0) = "" Then
BlocksNames(0) = prop
BlocksCount(0) = 1
prop = ""
Else
For x = 0 To UBound(BlocksNames)
If prop = BlocksNames(x) Then
BlocksCount(x) = BlocksCount(x) + 1
prop = ""
End If
Next x
If prop <> "" Then
ReDim Preserve BlocksNames(UBound(BlocksNames) + 1)
BlocksNames(UBound(BlocksNames)) = prop
ReDim Preserve BlocksCount(UBound(BlocksCount) + 1)
BlocksCount(UBound(BlocksCount)) = 1
prop = ""
End If
End If
End If
End If
End If
Next elem
If BlocksNames(0) <> "" Then
Set Ex = New Excel.Application
Ex.Visible = True
Set Book = Ex.Workbooks.Add
For x = 0 To UBound(BlocksNames)
Book.Sheets(1).Cells(x + 1, 1).Value = BlocksNames(x)
Book.Sheets(1).Cells(x + 1, 2).Value = BlocksCount(x)
Next x
End If
-----------------------------------------------------------------
Данный код подсчитывает блоки с одинаковыми комментариями на включённых и не замороженных слоях, имена блоков при этом могут быть любые. После запускается Эксель и данные экспортируются в тудой. В проекте VBA должна быть подключена объектная библиотека Эксель.
Tools->References->Microsoft Excel xx.x Object Library
Ацетилен
18.5.2020, 18:10
Ацетилен
21.5.2020, 12:16
Ну и по тем значениям атрибутов, которые установлены по умолчанию, теперь тоже можно считать.
Нажмите для просмотра прикрепленного файла
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.