Back to Projects

Parameter & Type Remover

Professional Revit family cleanup tool for removing unnecessary parameters and family types with nested family support and safety validation.

Python pyRevit IronPython WinForms Revit API

Project Overview

Parameter & Type Remover is a pyRevit tool designed for BIM managers and family authors who need to streamline Revit family libraries through systematic cleanup. Over time, families accumulate unused parameters and redundant types that bloat project performance and complicate schedules. This tool provides a professional, safe interface for bulk removal of parameters and family types while enforcing data integrity rules.

Built with the pyRevit framework using IronPython and WinForms UI, the tool operates seamlessly in both Family Editor mode and from Project context. When used in Family Editor, it can work on the current family or—when elements are selected—open nested families via EditFamily and manage their parameters and types. Operations are grouped by source document with proper transaction handling, commit/rollback, and automatic reload of modified nested families back into the parent.

Key Features

  • Dual-tab interface: Parameters tab and Family Types tab for focused workflows
  • Family Editor and Project mode: Works in current family document or picks a family instance from project to open
  • Nested family support: Select nested family instances in Family Editor to edit parameters and types in nested families via EditFamily
  • Parameter detection and filtering: Skips BuiltInParameter with negative IntegerValue IDs to protect system parameters
  • Parameters tab: CheckedListBox with Select All / Deselect All; displays [Type] / [Instance] / [Shared] labels
  • Types tab: CheckedListBox with safety validation—cannot delete all types; at least one must remain per family
  • Multi-family handling: Groups operations by source document for processing multiple nested families simultaneously
  • Transaction management: Per-family transactions with proper commit and rollback on failure
  • Automatic reload: IFamilyLoadOptions implementation auto-overwrites parameters and uses Family source for shared families
  • Real-time debug log: Timestamped TextBox showing operation details
  • Status bar: Live progress and operation feedback

Technical Implementation

  • IronPython and pyRevit: Extends Revit via pyRevit framework
  • WinForms UI: System.Windows.Forms for CheckedListBox, TabControl, buttons, and debug TextBox
  • FamilyTypeSet iteration: Uses ForwardIterator for proper .NET collection handling
  • Type deletion: FamilyManager.CurrentType = target; FamilyManager.DeleteCurrentType()
  • IFamilyLoadOptions: OnFamilyFound and OnSharedFamilyFound for overwrite and Family source control
  • Document context: EditFamily for nested access; LoadFamily with IFamilyLoadOptions for reload

Specifications

Architecture
  • Framework: pyRevit, IronPython
  • UI: WinForms (System.Windows.Forms)
  • API: Autodesk Revit API (DB, UI)
  • Runtime: .NET / IronPython
  • Platform: Windows
Core Components
  • ParameterRemoverForm: Main WinForms form with TabControl
  • FamilyLoadOptions: IFamilyLoadOptions for reload behavior
  • param_listbox / types_listbox: CheckedListBox for selection
  • Transaction grouping: params_by_doc / types_by_doc for multi-document handling
  • ForwardIterator: FamilyTypeSet iteration

Use Cases

Family library cleanup

Remove obsolete parameters and types from legacy families before deploying to new projects

Nested family maintenance

Edit parameters and types in nested families without manually opening each family file

Schedule simplification

Eliminate unused type parameters to reduce schedule column noise and improve performance

Impact

Safe
Data Integrity

Safety validation prevents deleting all types; built-in parameters are excluded from removal

Efficient
Bulk Operations

Process multiple nested families in one run with per-document transaction handling

Transparent
Debug Logging

Timestamped operation log for troubleshooting and audit trails