Jul 1, 2021

Get ViewSheet from a given View

Sometimes you might want to get a Sheet of your Active view, or any other. Check out this snippet of a function that will return ViewSheet of any given View.

About snippet:

I assume you were looking on the internet how to get ViewSheet from a given View just like I was doing it before I decided to create my own solution and post it for you.

I feel like there is not much for me to explain since most of the work here is done with FilteredElementCollector(doc).WherePasses(filter) and filters deserve their own article and even a video explaining them with lots of examples.

So you can use the code below and adapt it in your own scripts.

PyRevit example script

# -*- coding: utf-8 -*-
__title__ = "Get sheet from View"
__author__ = "Erik Frits"

#>>>>>>>>>>>>>>>>>>>> IMPORTS
import clr, os
from Autodesk.Revit.DB import *

#>>>>>>>>>>>>>>>>>>>> VARIABLES
doc = __revit__.ActiveUIDocument.Document
uidoc = __revit__.ActiveUIDocument
app = __revit__.Application


#>>>>>>>>>>>>>>>>>>>> FUNCTIONS
def create_string_equals_filter(key_parameter, element_value, caseSensitive = True):
    """Function to create ElementParameterFilter based on FilterStringRule."""
    f_parameter         = ParameterValueProvider(ElementId(key_parameter))
    f_parameter_value   = element_value
    caseSensitive       = True
    f_rule              = FilterStringRule(f_parameter, FilterStringEquals(), f_parameter_value, caseSensitive)
    return ElementParameterFilter(f_rule)

def get_sheet_from_view(view):
    #type:(View) -> ViewPlan
    """Function to get ViewSheet associated with the given ViewPlan"""
    
    #>>>>>>>>>> CREATE FILTER 
    my_filter = create_string_equals_filter(key_parameter=BuiltInParameter.SHEET_NUMBER,
                                            element_value=view.get_Parameter(BuiltInParameter.VIEWER_SHEET_NUMBER).AsString() )
    #>>>>>>>>>> GET SHEET
    return FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Sheets).WhereElementIsNotElementType()\
                                    .WherePasses(my_filter).FirstElement()

#>>>>>>>>>>>>>>>>>>>> MAIN
if __name__ == '__main__':

    #>>>>>>>>>> ACTIVE VIEW
    active_view = doc.ActiveView
    sheet       = get_sheet_from_view(active_view)

    #>>>>>>>>>> PRINT RESULTS
    if sheet:   print('Sheet Found: {} - {}'.format(sheet.SheetNumber, sheet.Name))
    else:       print('No sheet associated with the given view: {}'.format(active_view.Name))


Want to Learn More?

🔥 Amazing Revit API Resources!

Join Revit API

Newsletter Today!

Join Us!

which is already read by 4000+ people!

Get short Revit API Lessons and Tips directly in your mail!