*如何創建一個Revit AddIn 項目參考:Revit API 開發 (1): Hello World
下面這個例子是找到文檔當中所有的門(Door)。 邏輯主線: 1. Door在Revit里面的element類型是FamilyInstance。 2. Door在Revit里面的category類型是OST_Doors。 3. 想要過濾特定類型的element需要ElementClassFilter。 4. 想要過濾特定類型的category需要ElementCategoryFilter。 5. 想要讓兩種類型的filter同時起作用需要LogicalAndFilter。 6. 找到文檔(Document)里的element需要FilteredElementCollector,可以將其認為是文檔中element的管理器。 7. 將filter傳遞給FilteredElementCollector即可得到所有能夠通過filter的element。
public ICollection<Element> CreateLogicAndFilter(Autodesk.Revit.DB.Document document){ // 找到當前項目中所有的 family instances,并且它們的 category 是 door。 // 創建 ElementClassFilter 過濾器用以獲得所有的 FamilyInstance。 ElementClassFilter familyInstanceFilter = new ElementClassFilter(typeof(FamilyInstance)); // 創建 ElementCategoryFilter 過濾器用以獲得所有的 OST_Doors。 ElementCategoryFilter doorsCategoryfilter = new ElementCategoryFilter(BuiltInCategory.OST_Doors); // 創建 logic And filter 將上面的兩個過濾器合并。 LogicalAndFilter doorInstancesFilter = new LogicalAndFilter(familyInstanceFilter, doorsCategoryfilter); // 將上面的過濾器應用到當前活動的 document。 FilteredElementCollector collector = new FilteredElementCollector(document); IList<Element> doors = collector.WherePasses(doorInstancesFilter).ToElements(); return doors;}新聞熱點
疑難解答