using System; using System.Collections.Generic; using System.Text; using Autodesk.Revit; using Autodesk.Revit.DB; using Autodesk.Revit.Collections; namespace RevitLookup.Utils { class View { /// /// Finds all the views in the active document. /// /// the active document public static ViewSet GetAllViews (Document doc) { ViewSet allViews = new ViewSet(); FilteredElementCollector fec = new FilteredElementCollector(doc); ElementClassFilter elementsAreWanted = new ElementClassFilter(typeof(FloorType)); fec.WherePasses(elementsAreWanted); List elements = fec.ToElements() as List; foreach (Element element in elements) { Autodesk.Revit.DB.View view = element as Autodesk.Revit.DB.View; if (null == view) { continue; } else { ElementType objType = doc.get_Element(view.GetTypeId()) as ElementType; if (null == objType || objType.Name.Equals("Drawing Sheet")) { continue; } else { allViews.Insert(view); } } } return allViews; } /// /// Gather up all the available sheets. /// /// /// /// public static ElementSet GetAllSheets (Document doc) { ElementSet allSheets = new ElementSet(); FilteredElementCollector fec = new FilteredElementCollector(doc); ElementClassFilter elementsAreWanted = new ElementClassFilter(typeof(ViewSheet)); fec.WherePasses(elementsAreWanted); List elements = fec.ToElements() as List; foreach (Element element in elements) { ViewSheet viewSheet = element as ViewSheet; if (null == viewSheet) { continue; } else { ElementId objId = viewSheet.GetTypeId(); if (ElementId.InvalidElementId == objId) { continue; } else { allSheets.Insert(viewSheet); } } } return allSheets; } /// /// /// /// /// public static ViewSet GetAvailableViewsToExport (Document doc) { ViewSet viewSet = new ViewSet(); // TBD: using a filter iterator will only give you the base class View, not derived classes // like View3D or ViewDrafting. /*ElementFilterIterator viewIter = m_revitApp.ActiveUIDocument.Document.get_Elements(typeof(Autodesk.Revit.DB.View)); while (viewIter.MoveNext()) { Autodesk.Revit.DB.View tmpView = (Autodesk.Revit.DB.View)viewIter.Current; if (tmpView.CanBePrinted) viewSet.Insert((Autodesk.Revit.DB.View)viewIter.Current); }*/ FilteredElementCollector fec = new FilteredElementCollector(doc); ElementClassFilter elementsAreWanted = new ElementClassFilter(typeof(View)); fec.WherePasses(elementsAreWanted); List elements = fec.ToElements() as List; foreach (Element element in elements) { Autodesk.Revit.DB.View tmpView = element as Autodesk.Revit.DB.View; if ((tmpView != null) && tmpView.CanBePrinted) { viewSet.Insert(tmpView); } } return viewSet; } } }