GetUnusedElements Method


Returns the list of element ids that are not used and can be deleted from the document.

Namespace: Autodesk.Revit.DB
Assembly: RevitAPI (in RevitAPI.dll) Version: 24.0.0.0 (24.0.0.0)
Since: 2024

Syntax

C#
public ISet<ElementId> GetUnusedElements(
	ISet<ElementId> categories
)
Visual Basic
Public Function GetUnusedElements ( _
	categories As ISet(Of ElementId) _
) As ISet(Of ElementId)
Visual C++
public:
ISet<ElementId^>^ GetUnusedElements(
	ISet<ElementId^>^ categories
)

Parameters

categories
Type: System.Collections.Generic ISet ElementId
Collection of categories to check for unused elements.

Return Value

Unused elements that can be deleted from the document.

Remarks

This method returns unused element ids that are available in the Purge Unused window in the Revit. To get unused elements that do not have a category assigned add INVALID to the collection of categories. If the input categories collection is empty, the method returns all unused elements in the document.

Examples

Copy C#
public void DeleteAllUnused(Autodesk.Revit.DB.Document document)
{
   using (Transaction transaction = new Transaction(document, "Delete unused elements"))
   {
      transaction.Start();

      ISet<ElementId> unusedElementIds = document.GetUnusedElements(new HashSet<ElementId>());
      while (unusedElementIds.Any())
      {
         document.Delete(unusedElementIds);
         unusedElementIds = document.GetUnusedElements(new HashSet<ElementId>());
      }

      transaction.Commit();
   }
}

public void GetUnusedElements(Autodesk.Revit.DB.Document document)
{
   // Get all unused elements in the document
   var allUnusedElementIds = document.GetUnusedElements(new HashSet<ElementId>());

   // Get unused elements without a category
   var unusedElementIdsWithNoCategory = document.GetUnusedElements(new HashSet<ElementId>() { new ElementId(BuiltInCategory.INVALID) });

   // Get unused wall and floors types
   HashSet<ElementId> categoriesToPurge = new HashSet<ElementId>
   {
      new ElementId(BuiltInCategory.OST_Walls),
      new ElementId(BuiltInCategory.OST_Floors)
   };

   var unusedElementIds = document.GetUnusedElements(categoriesToPurge);
}

Exceptions

Exception Condition
Autodesk.Revit.Exceptions ArgumentNullException A non-optional argument was null

See Also