revit api 过滤器获取元素
通过过滤器取到元素
using System;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI.Selection;
using System.Collections.Generic;
namespace HelloRevit
{
 [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Automatic)]
   public class Class1 : IExternalCommand
   {
      public Autodesk.Revit.UI.Result Execute(ExternalCommandData revit,
          ref string message, ElementSet elements)
      {
         try
         {
            Document document = revit.Application.ActiveUIDocument.Document;
            // 创建一个类过滤器来过滤出所有的FamilyInstance类的元素。
            ElementClassFilter familyInstanceFilter = new  ElementClassFilter(typeof(FamilyInstance));
            // 创建一个类别过滤器来过滤出所有的内建类型为OST_Doors的元素。
            ElementCategoryFilter doorsCategoryfilter =
                new ElementCategoryFilter(BuiltInCategory.OST_Doors);
            // 创建一个逻辑过滤器来组合前面两个过滤器,实现过滤出所有Door元素。
            LogicalAndFilter doorInstancesFilter =
                new LogicalAndFilter(familyInstanceFilter, doorsCategoryfilter);
            FilteredElementCollector collector = new FilteredElementCollector(document);
            ICollection<ElementId> doors = collector.WherePasses(doorInstancesFilter).ToElementIds();
            String prompt = "The ids of the doors in the current document are:";
            foreach (ElementId id in doors)
            {
               prompt += "\n\t" + id.IntegerValue;
            }
            TaskDialog.Show("Revit", prompt);
         }
         catch (Exception e)
         {
            message = e.Message;
            return Autodesk.Revit.UI.Result.Failed;
         }
         return Autodesk.Revit.UI.Result.Succeeded;
      }
   }
}
 
                    
                     
                    
                 
                    
                 
                
            
         
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号