/// <summary> /// Get all the views to be displayed /// </summary> private void GetViews() { FilteredElementCollector collector = new FilteredElementCollector(m_activeDoc); FilteredElementIterator itor = collector.OfClass(typeof(View)).GetElementIterator(); itor.Reset(); ViewSet views = new ViewSet(); ViewSet floorPlans = new ViewSet(); ViewSet ceilingPlans = new ViewSet(); ViewSet engineeringPlans = new ViewSet(); while (itor.MoveNext()) { View view = itor.Current as View; // skip view templates because they're invalid for import/export if (view == null || view.IsTemplate) { continue; } else if (view.ViewType == Autodesk.Revit.DB.ViewType.FloorPlan) { floorPlans.Insert(view); } else if (view.ViewType == Autodesk.Revit.DB.ViewType.CeilingPlan) { ceilingPlans.Insert(view); } else if (view.ViewType == Autodesk.Revit.DB.ViewType.EngineeringPlan) { engineeringPlans.Insert(view); } } foreach (View floorPlan in floorPlans) { foreach (View ceilingPlan in ceilingPlans) { if (floorPlan.Name == ceilingPlan.Name) { views.Insert(floorPlan); } } } foreach (View engineeringPlan in engineeringPlans) { if (engineeringPlan.Name == engineeringPlan.GenLevel.Name) { views.Insert(engineeringPlan); } } View activeView = m_activeDoc.ActiveView; Autodesk.Revit.DB.ViewType viewType = activeView.ViewType; if (viewType == Autodesk.Revit.DB.ViewType.FloorPlan || viewType == Autodesk.Revit.DB.ViewType.CeilingPlan) { m_views.Insert(activeView); foreach (View view in views) { if (view.GenLevel.Elevation < activeView.GenLevel.Elevation) { m_views.Insert(view); } } } else if (viewType == Autodesk.Revit.DB.ViewType.EngineeringPlan) { if (views.Contains(activeView)) { m_views.Insert(activeView); } foreach (View view in views) { if (view.GenLevel.Elevation < activeView.GenLevel.Elevation) { m_views.Insert(view); } } } else//Get view of the lowest elevation { int i = 0; double elevation = 0; View viewLowestElevation = null; foreach (View view in views) { if (i == 0) { elevation = view.GenLevel.Elevation; viewLowestElevation = view; } else { if (view.GenLevel.Elevation <= elevation) { elevation = view.GenLevel.Elevation; viewLowestElevation = view; } } i++; } m_views.Insert(viewLowestElevation); } }
/// <summary> /// Get all the views to be displayed /// </summary> private void GetViews() { FilteredElementCollector collector = new FilteredElementCollector(m_activeDoc); FilteredElementIterator itor = collector.OfClass(typeof(View)).GetElementIterator(); itor.Reset(); ViewSet views = new ViewSet(); ViewSet floorPlans = new ViewSet(); ViewSet ceilingPlans = new ViewSet(); ViewSet engineeringPlans = new ViewSet(); while (itor.MoveNext()) { View view = itor.Current as View; // skip view templates because they're invalid for import/export if (view == null || view.IsTemplate) { continue; } else if (view.ViewType == Autodesk.Revit.DB.ViewType.FloorPlan) { floorPlans.Insert(view); } else if (view.ViewType == Autodesk.Revit.DB.ViewType.CeilingPlan) { ceilingPlans.Insert(view); } else if (view.ViewType == Autodesk.Revit.DB.ViewType.EngineeringPlan) { engineeringPlans.Insert(view); } } foreach (View floorPlan in floorPlans) { foreach (View ceilingPlan in ceilingPlans) { if (floorPlan.ViewName == ceilingPlan.ViewName) { views.Insert(floorPlan); } } } foreach (View engineeringPlan in engineeringPlans) { if (engineeringPlan.ViewName == engineeringPlan.GenLevel.Name) { views.Insert(engineeringPlan); } } View activeView = m_activeDoc.ActiveView; Autodesk.Revit.DB.ViewType viewType = activeView.ViewType; if (viewType == Autodesk.Revit.DB.ViewType.FloorPlan || viewType == Autodesk.Revit.DB.ViewType.CeilingPlan) { m_views.Insert(activeView); foreach (View view in views) { if (view.GenLevel.Elevation < activeView.GenLevel.Elevation) { m_views.Insert(view); } } } else if (viewType == Autodesk.Revit.DB.ViewType.EngineeringPlan) { if (views.Contains(activeView)) { m_views.Insert(activeView); } foreach (View view in views) { if (view.GenLevel.Elevation < activeView.GenLevel.Elevation) { m_views.Insert(view); } } } else//Get view of the lowest elevation { int i = 0; double elevation = 0; View viewLowestElevation = null; foreach (View view in views) { if (i == 0) { elevation = view.GenLevel.Elevation; viewLowestElevation = view; } else { if (view.GenLevel.Elevation <= elevation) { elevation = view.GenLevel.Elevation; viewLowestElevation = view; } } i++; } m_views.Insert(viewLowestElevation); } }