11 articles

A pool of generic ExternalEvent workers that accept Action<Document> — eliminating one IExternalEventHandler per operation using a concurrent queue, worker pool, and callback chain.

Replacing the obsolete get_Parameter overload with an enumerator-based lookup that checks InternalDefinition.BuiltInParameter for typed enum-based parameter retrieval in Revit 2015+.

Three methods for retrieving the complete parameter set of a Revit family element — instance+symbol+family union, family document FamilyManager, and ParametersMap vs ParametersSet.

The Revit API hierarchy of Family, FamilySymbol, and FamilyInstance — with FilteredElementCollector queries for instances, families, system types, and navigating between them.

Retrieving Revit parameters by BuiltInParameter, name, and ordered list — reading and setting values by StorageType, and converting between internal and display units with UnitUtils and LabelUtils.

Implementing ISelectionFilter to restrict user selection in a Revit add-in — using BuiltInCategory to allow only door elements through PickElementsByRectangle.

Retrieving room, door, and window parameter values via get_Parameter(BuiltInParameter) — reading doubles, strings, and ElementIds with HasValue guards for safe access.

Getting a Revit family instance's XYZ position — using LocationPoint for free-standing elements and HostParameter + Curve.Evaluate for wall-hosted elements like doors and windows.

Using FilteredElementCollector with OfCategory and ElementLevelFilter to retrieve all doors on a specific level — combining fast and slow filters for efficient querying.