Revit API取得全部元素

时间:2024-11-26 16:35:56

//取得全部元素
[Transaction(TransactionMode.Manual)]
[Regeneration(RegenerationOption.Manual)]
public class cmdGetAll : IExternalCommand
{
    public Result Execute(ExternalCommandData cmdData, ref string msg, ElementSet elements)
    {
        UIDocument uiDoc = cmdData.Application.ActiveUIDocument;
        //全部元素
        FilteredElementCollector collectorAll = new FilteredElementCollector(uiDoc.Document);
        collectorAll.WherePasses(new LogicalOrFilter(new ElementIsElementTypeFilter(false), new ElementIsElementTypeFilter(true)));
        TaskDialog.Show("全部", collectorAll.Count().ToString());
        //IsElement
        FilteredElementCollector collectorIs = new FilteredElementCollector(uiDoc.Document);
        collectorIs.WherePasses(new ElementIsElementTypeFilter(true));
        TaskDialog.Show("IsElement", collectorIs.Count().ToString());
        //IsNotElement
        FilteredElementCollector collectorIsNot = new FilteredElementCollector(uiDoc.Document);
        collectorIsNot.WherePasses(new ElementIsElementTypeFilter(false));
        TaskDialog.Show("IsNotElement", collectorIsNot.Count().ToString());         //数量
        int ductAll = ;
        int ductIs = ;
        int ductIsNot = ;
        foreach (Element el in collectorAll)
        {
            if (el is Duct)
                ductAll += ;
        }
        foreach (Element el in collectorIs)
        {
            if (el is Duct)
                ductIs += ;
        }
        foreach (Element el in collectorIsNot)
        {
            if (el is Duct)
                ductIsNot += ;
        }
        TaskDialog.Show("duct", ductAll + "," + ductIs + "," + ductIsNot);         return Result.Succeeded;
    }
}

url:http://greatverve.cnblogs.com/p/get-all-element.html