Revit二次开发小技巧(二) 用ViewFamily枚举来收集楼层平面视图

用ViewFamily枚举来收集楼层平面视图

我们在写功能的时候,会遇到需要收集特定的楼层平面视图的情况,总会写一个方法,先收集所有的ViewPlan,然后再通过ViewFamilyType的名称去判断是不是楼层平面视图。

public List<ViewPlan> GetFloorViewPlan(Document doc, List<ViewPlan> viewPlans, string floorName)
{
    
    
     List<ViewPlan> views = new List<ViewPlan>();
     foreach (ViewPlan v in viewPlans)
     {
    
    
        ViewFamilyType viewType = doc.GetElement(v.GetTypeId()) as ViewFamilyType;
        if (viewType == null) continue;
        if (viewType.Name != floorName) continue;
        views.Add(v);
     }
     return views;
}

但是由于收集到的ViewPlan中包括太多种视图类型,这样子会大大的提高了我们的运行的循环的次数,也增加代码量。因此,我们完全可以在一开始收集ViewPlan的时候,直接加上一个ViewPlan的ViewFamily类型的判断。

ViewFamiiy枚举值
在这里插入图片描述
ViewFamily枚举中提供了所有视图的枚举类型,其中有我们常用的ThreeDimensional(三维视图)、FloorPlan(楼层平面视图)、CeilingPlan(天花板平面视图)。

因此我们可以这样子去收集楼层平面视图:

List<ViewPlan> floorPlan = new FilteredElementCollector(doc).OfClass(typeof(ViewPlan)).Where(x => (doc.GetElement(x.GetTypeId()) as ViewFamilyType).ViewFamily == ViewFamily.FloorPlan).Cast<ViewPlan>().ToList();

这次分享的小知识到这里啦,如果有存在错误,还请指出。谢谢!!

猜你喜欢

转载自blog.csdn.net/Oneal5354/article/details/107736708
今日推荐