Тема: Как перенести аттрибуты блока в Excel?

Может быть что то подобное тут уже было.
Как перенести аттрибуты блоков в Excel?  Наверное это можно сделать на VB? Аттрибуты должны сортироваться (отсортирую сам) и заноситься в один столбец (поставленная задача). Слабоват в VB, в основном на LISP. Предложите что нибудь тов. профессионалы?

Re: Как перенести аттрибуты блока в Excel?

'Установи ссылку: Tools >> Referencies... >>
Microsoft Excel 9.0 Object Library

Public Sub AttributesOut()

Dim xlObj As Excel.Application

     Set xlObj = GetObject(, "Excel.Application")
     xlObj.Visible = True

Dim Cnt
Cnt = 2

Dim Ent As AcadEntity
Dim Blck As AcadBlockReference
Dim varAttributes As Variant
Dim I As Integer
Dim TagA
Dim TextA

For Each Ent In ThisDrawing.ModelSpace   '*****
     If Ent.ObjectName = "AcDbBlockReference" Then
        ' MsgBox Ent.Name
         Select Case Ent.Name
         
         Case "Ventsec"  '// Имя блока можно не указывать, т.е. убрать select case проверку. Тогда перебор будет по всем блокам.
                 xlObj.Worksheets(1).Range("H" & Cnt).Value = Ent.Handle
                 varAttributes = Ent.GetAttributes
                               
                 For I = LBound(varAttributes) To UBound(varAttributes)
                 TagA = varAttributes(I).TagString
                 TextA = varAttributes(I).TextString
                  xlObj.Worksheets(1).Range("A" & Cnt).Value = (Cnt - 1)
                 ' xlObj.Worksheets(2).Range("i" & Cnt).Value = Ent.Name
                     Select Case TagA ' Проверка имени атрибута
                     Case "NO" ' Укажи свои названия
                     xlObj.Worksheets(1).Range("B" & Cnt).Value = TextA
                     Case "Velo"
                     xlObj.Worksheets(1).Range("C" & Cnt).Value = TextA
                      Case "DROP"
                     xlObj.Worksheets(1).Range("D" & Cnt).Value = TextA
                       Case "LEN"
                     xlObj.Worksheets(1).Range("E" & Cnt).Value = TextA
                   
                     End Select
                     Next
                 Cnt = Cnt + 1
       
     End Select
End If
Next
End Sub

' Koд старый. Его можно ускорить если проверять не по всем entities , а только блоки. Но это работает.
Время будет - попробуй модернизировать:
     
     Dim objBlk As AcadBlock
     Dim objAllBlks As AcadBlocks
     Set objAllBlks = ThisDrawing.Blocks
     For Each objBlk In objAllBlks  '***** Дальше продолжи как указано выше, только не забудь объявить другие переменные.
............................

Good Luck

Re: Как перенести аттрибуты блока в Excel?

В одном из примеров полной установки A есть код и чертеж как это делать.Папка Sample\ActiveX\ExtAttr\attrib.dwg
Соответственно attrib.dvb файл VBA.
Вообщее почаще туда заглядывай там есть многое.

Re: Как перенести аттрибуты блока в Excel?

У меня нет такого файла attrib.dvb
Только dwg