Retrieve MEP Elements revit api
static FilteredElementCollector GetConnectorElements(
Document doc,
bool include_wires )
{
// what categories of family instances
// are we interested in?
BuiltInCategory[] bics = new BuiltInCategory[] {
//BuiltInCategory.OST_CableTray,
BuiltInCategory.OST_CableTrayFitting,
//BuiltInCategory.OST_Conduit,
BuiltInCategory.OST_ConduitFitting,
//BuiltInCategory.OST_DuctCurves,
BuiltInCategory.OST_DuctFitting,
BuiltInCategory.OST_DuctTerminal,
BuiltInCategory.OST_ElectricalEquipment,
BuiltInCategory.OST_ElectricalFixtures,
BuiltInCategory.OST_LightingDevices,
BuiltInCategory.OST_LightingFixtures,
BuiltInCategory.OST_MechanicalEquipment,
//BuiltInCategory.OST_PipeCurves,
BuiltInCategory.OST_PipeFitting,
BuiltInCategory.OST_PlumbingFixtures,
BuiltInCategory.OST_SpecialityEquipment,
BuiltInCategory.OST_Sprinklers,
//BuiltInCategory.OST_Wire,
};
IList<ElementFilter> a
= new List<ElementFilter>( bics.Count() );
foreach( BuiltInCategory bic in bics )
{
a.Add( new ElementCategoryFilter( bic ) );
}
LogicalOrFilter categoryFilter
= new LogicalOrFilter( a );
LogicalAndFilter familyInstanceFilter
= new LogicalAndFilter( categoryFilter,
new ElementClassFilter(
typeof( FamilyInstance ) ) );
IList<ElementFilter> b
= new List<ElementFilter>( 6 );
b.Add( new ElementClassFilter( typeof( CableTray ) ) );
b.Add( new ElementClassFilter( typeof( Conduit ) ) );
b.Add( new ElementClassFilter( typeof( Duct ) ) );
b.Add( new ElementClassFilter( typeof( Pipe ) ) );
if( include_wires )
{
b.Add( new ElementClassFilter( typeof( Wire ) ) );
}
b.Add( familyInstanceFilter );
LogicalOrFilter classFilter
= new LogicalOrFilter( b );
FilteredElementCollector collector
= new FilteredElementCollector( doc );
collector.WherePasses( classFilter );
return collector;
}