Parameter & Type Remover
Professional Revit family cleanup tool for removing unnecessary parameters and family types with nested family support and safety validation.
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
Data Integrity
Safety validation prevents deleting all types; built-in parameters are excluded from removal
Bulk Operations
Process multiple nested families in one run with per-document transaction handling
Debug Logging
Timestamped operation log for troubleshooting and audit trails