本文主要是介绍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();
这次分享的小知识到这里啦,如果有存在错误,还请指出。谢谢!!
这篇关于Revit二次开发小技巧(二) 用ViewFamily枚举来收集楼层平面视图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!