The version provided in the initial release of the Revit 2011 SDK had several pretty fundamental problems. We are in a continuous process of improving it, and now have a version available with the following enhancements:
- ElementType instances
- Revit MEP connectors
- Revit Structure analytical model
Retrieving all Revit Database Elements
Regarding the ElementType instances, the initial version for Revit 2011 employed the FilteredElementCollector method WhereElementIsNotElementType, so no ElementType instances were displayed, including all family symbols. This has now been fixed by using the following algorithm to retrieve all Revit database elements by creating a Boolean union of the non-element-type instances with the element type ones:
FilteredElementCollector elemTypeCtor = ( new FilteredElementCollector( doc ) ) .WhereElementIsElementType(); FilteredElementCollector notElemTypeCtor = ( new FilteredElementCollector( doc ) ) .WhereElementIsNotElementType(); FilteredElementCollector allElementCtor = elemTypeCtor.UnionWith( notElemTypeCtor ); ICollection<Element> founds = allElementCtor.ToElements();
Please be aware that RevitLookup is always distributed including the full source code, so you can easily fix any problem that you run into yourself.
I did that and described the detailed procedure for some MEP specific properties back in the Revit 2010 timeframe.
Here is today's snapshot of the updated RevitLookup including its full source code and Visual Studio solution.