Imports Autodesk.Revit
Imports Autodesk.Revit.UI
Imports Autodesk.Revit.DB
Imports System
Imports System.Windows.Forms
Public Class Form1
Private myCD As ExternalCommandData
Public Sub New(ByVal commandData As ExternalCommandData)
MyBase.New()
InitializeComponent()
myCD = commandData
End Sub
' ....
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Dim App As Autodesk.Revit.UI.UIApplication = myCD.Application
Dim Doc As UIDocument = App.ActiveUIDocument
ListAllElements()
End Sub
Sub ListAllElements()
Dim App As Autodesk.Revit.UI.UIApplication = myCD.Application
Dim Doc As UIDocument = App.ActiveUIDocument
Dim collector As FilteredElementCollector = New FilteredElementCollector(Doc.Document).WhereElementIsNotElementType
' или Dim collector As FilteredElementCollector = New FilteredElementCollector(Doc.Document).OfClass(GetType(Family))
Me.ListView1.Clear()
Me.ListView1.Columns.Add("№") '0
Me.ListView1.Columns.Add("ID") '1
Me.ListView1.Columns.Add("Class") '2
Me.ListView1.Columns.Add("Category") '3
Me.ListView1.Columns.Add("Name") '4
Dim s As String
Dim e As Element
Dim num As Long = 1
For Each e In collector
Dim LVI As New ListViewItem
With LVI
For i As Long = 0 To 4
.SubItems.Add("")
Next
End With
s = String.Empty
If Not Nothing Is e.Category Then
s = e.Category.Name
End If
If 0 = s.Length AndAlso TypeOf e Is Family AndAlso Not Nothing Is DirectCast(e, Family).FamilyCategory Then
s = DirectCast(e, Family).FamilyCategory.Name
End If
If 0 = s.Length Then
s = "?"
End If
LVI.SubItems(0).Text = num
LVI.SubItems(1).Text = e.Id.IntegerValue.ToString
LVI.SubItems(2).Text = e.GetType.Name
LVI.SubItems(3).Text = s
LVI.SubItems(4).Text = e.Name
If LVI.SubItems(2).Text = "Family" Then
Me.ListView1.Items.Add(LVI)
num += 1
ElseIf LVI.SubItems(2).Text = "Element" Then
Me.ListView1.Items.Add(LVI)
num += 1
End If
Next
For i As Integer = 0 To Me.ListView1.Columns.Count - 1
Me.ListView1.Columns(i).AutoResize(Windows.Forms.ColumnHeaderAutoResizeStyle.ColumnContent)
Next i
End Sub
End Class