<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Get ViewSheet from View in Revit API Forum</title>
    <link>https://forums.autodesk.com/t5/revit-api-forum/get-viewsheet-from-view/m-p/9296814#M58472</link>
    <description>&lt;P&gt;As&amp;nbsp;respresso suggests using the BIP for viewport sheet number with an ElementParameterFilter is probably the best approach. Sheet numbers are unique in each Revit model so it is safe to search by them and get the right result.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt; Public Function TObj43(ByVal commandData As Autodesk.Revit.UI.ExternalCommandData, _
              ByRef message As String, ByVal elements As Autodesk.Revit.DB.ElementSet) As Result

        If commandData.Application.ActiveUIDocument Is Nothing Then Return Result.Cancelled Else 
        Dim AcView As View = commandData.Application.ActiveUIDocument.ActiveGraphicalView

        Dim P_Ns As Parameter = AcView.Parameter(BuiltInParameter.VIEWPORT_SHEET_NUMBER)
        If P_Ns Is Nothing Then
            GoTo Monday
        End If

        Dim Txt As String = P_Ns.AsString
        If String.IsNullOrEmpty(Txt) Then GoTo Monday Else 
        Dim SeFR As FilterRule = ParameterFilterRuleFactory.CreateEqualsRule(New ElementId(BuiltInParameter.SHEET_NUMBER), Txt, True)
        Dim PFilt As New ElementParameterFilter(SeFR, False)

        Dim FEC As New FilteredElementCollector(AcView.Document)
        Dim ECF As New ElementClassFilter(GetType(ViewSheet))
        Dim LandF As New LogicalAndFilter(ECF, PFilt)
        Dim Els As List(Of Element) = FEC.WherePasses(LandF).ToElements

        If Els.Count &amp;lt;&amp;gt; 1 Then
            GoTo Monday
        Else
            Dim TD As New TaskDialog("Was this your sheet...")
            TD.MainInstruction = Txt &amp;amp; "-" &amp;amp; Els(0).Name
            TD.MainContent = "Note that view types that can appear on multiple sheets (Legends, Images, Schedules etc.) will not be returned by this method."
            TD.Show()
            GoTo Friday
        End If
Monday:
        TaskDialog.Show("Something went amiss...", "We looked hard in many places but were unable to find your sheet on this occasion.")
        Return Result.Failed
Friday:
        Return Result.Succeeded
    End Function&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 04 Feb 2020 22:43:12 GMT</pubDate>
    <dc:creator>RPTHOMAS108</dc:creator>
    <dc:date>2020-02-04T22:43:12Z</dc:date>
    <item>
      <title>Get ViewSheet from View</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/get-viewsheet-from-view/m-p/7075550#M58466</link>
      <description>&lt;P&gt;Is there a way to get the ViewSheet or ElementId of the ViewSheet from a View that is placed on that sheet? &amp;nbsp;I can get the sheet name and sheet number from the provided parameters but do not see one for the actual ViewSheet. &amp;nbsp;Am I missing something? &amp;nbsp;The only thing i can think of to do without this info is to loop through all ViewSheets to match the one with the same sheet number (since sheet number is required to be unique). &amp;nbsp; Thanks.&lt;/P&gt;</description>
      <pubDate>Wed, 10 May 2017 19:58:10 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/get-viewsheet-from-view/m-p/7075550#M58466</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2017-05-10T19:58:10Z</dc:date>
    </item>
    <item>
      <title>Re: Get ViewSheet from View</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/get-viewsheet-from-view/m-p/7075684#M58467</link>
      <description>&lt;P&gt;&lt;SPAN&gt;Dear Michael,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Thank you for your query.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Have you looked at the sample code provided in the description of the ViewSheet class?&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;A href="http://www.revitapidocs.com/2017/af2ee879-173d-df3a-9793-8d5750a17b49.htm" target="_blank"&gt;http://www.revitapidocs.com/2017/af2ee879-173d-df3a-9793-8d5750a17b49.htm&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;PRE&gt;&amp;nbsp; ICollection&amp;lt;ElementId&amp;gt; views = viewSheet.GetAllPlacedViews();
&amp;nbsp; message += "\nNumber of views in the sheet : " + views.Count;&lt;/PRE&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;If all else fails, you could use this relationship and invert it.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;The View.Title property also generally consists of the view name plus other modifiers, such as the view type, &lt;U&gt;sheet number&lt;/U&gt;, area scheme, and/or assembly type, depending on the specifics of the view:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;A href="http://www.revitapidocs.com/2017/bfa96650-310e-5385-3a9d-1a1248b623ce.htm" target="_blank"&gt;http://www.revitapidocs.com/2017/bfa96650-310e-5385-3a9d-1a1248b623ce.htm&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;I hope this helps.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Best regards,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Jeremy&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 10 May 2017 20:55:57 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/get-viewsheet-from-view/m-p/7075684#M58467</guid>
      <dc:creator>jeremytammik</dc:creator>
      <dc:date>2017-05-10T20:55:57Z</dc:date>
    </item>
    <item>
      <title>Re: Get ViewSheet from View</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/get-viewsheet-from-view/m-p/7077200#M58468</link>
      <description>&lt;P&gt;Hi Jeremy,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You must have misunderstood my question. &amp;nbsp;I don't have the ViewSheet in order to use the method to get its placed views. &amp;nbsp;I have a view, that I know is on a sheet (because its sheet number parameter is not null), but I want to get a direct reference to that sheet that it is placed on. &amp;nbsp;It seems to me that you are still suggesting that I must loop through all ViewSheets to get the View that I'm concerned with. &amp;nbsp;Thanks.&lt;/P&gt;</description>
      <pubDate>Thu, 11 May 2017 13:02:40 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/get-viewsheet-from-view/m-p/7077200#M58468</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2017-05-11T13:02:40Z</dc:date>
    </item>
    <item>
      <title>Re: Get ViewSheet from View</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/get-viewsheet-from-view/m-p/9294567#M58469</link>
      <description>&lt;P&gt;You can perhaps get&amp;nbsp;VIEWPORT_SHEET_NUMBER from Parameters.&lt;/P&gt;</description>
      <pubDate>Tue, 04 Feb 2020 08:13:17 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/get-viewsheet-from-view/m-p/9294567#M58469</guid>
      <dc:creator>respresso</dc:creator>
      <dc:date>2020-02-04T08:13:17Z</dc:date>
    </item>
    <item>
      <title>Re: Get ViewSheet from View</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/get-viewsheet-from-view/m-p/9294631#M58470</link>
      <description>&lt;P&gt;&lt;SPAN&gt;Dear Michael,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Thank you for your patience.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;The new answer from respresso brought this issue to my attention again.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;You say: It seems to me that you are still suggesting that I must loop through all ViewSheets to get the View that I'm concerned with.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Yes, indeed, that is exactly what I am suggesting.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Get all the view sheets, keep track of them and the views they host, and invert that relationship, as described in one of the very early discussions by The Building Coder back in 2008 on a relationship inverter:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;A href="http://thebuildingcoder.typepad.com/blog/2008/10/relationship-in.html" target="_blank"&gt;http://thebuildingcoder.typepad.com/blog/2008/10/relationship-in.html&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;I hope this helps.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Best regards,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Jeremy&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 04 Feb 2020 08:35:47 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/get-viewsheet-from-view/m-p/9294631#M58470</guid>
      <dc:creator>jeremytammik</dc:creator>
      <dc:date>2020-02-04T08:35:47Z</dc:date>
    </item>
    <item>
      <title>Re: Get ViewSheet from View</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/get-viewsheet-from-view/m-p/9296129#M58471</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you Jeremy and respresso for bringing this topic to my attention.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;I was not aware this question was raised a few years ago.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;I maybe have a workaround for this question, something similar i assume.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Select some views in the Project Browser to know if the views are placed on sheet(s).&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Then, run a macro or IExternalcommand to execute the command, something like inserted (macro)code as an example;&lt;BR /&gt;If view is placed on Sheet, then show the sheetnumber, sheetname or whatever data you interested in of the ViewSheet that is referenced to the selected views in the Project Browser.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Hope this is useful for you or point you to the right direction.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN&gt;public&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;void&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;GetViewSheetFromView&lt;/SPAN&gt;()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UIDocument uidoc =&amp;nbsp;&lt;SPAN&gt;this&lt;/SPAN&gt;.ActiveUIDocument;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Document doc = uidoc.Document;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN&gt;string&lt;/SPAN&gt;&amp;nbsp;data =&amp;nbsp;&lt;SPAN&gt;""&lt;/SPAN&gt;;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ICollection&amp;lt;ElementId&amp;gt;&amp;nbsp;selectedIds = uidoc.Selection.&lt;SPAN&gt;GetElementIds&lt;/SPAN&gt;();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN&gt;foreach&lt;/SPAN&gt;&amp;nbsp;(ElementId selectedid&amp;nbsp;&lt;SPAN&gt;in&lt;/SPAN&gt;&amp;nbsp;selectedIds)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;View e = doc.&lt;SPAN&gt;GetElement&lt;/SPAN&gt;(selectedid)&amp;nbsp;&lt;SPAN&gt;as&lt;/SPAN&gt;&amp;nbsp;View;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN&gt;foreach&lt;/SPAN&gt;&amp;nbsp;(View v&amp;nbsp;&lt;SPAN&gt;in&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;new&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;FilteredElementCollector&lt;/SPAN&gt;(doc).&lt;SPAN&gt;OfClass&lt;/SPAN&gt;(&lt;SPAN&gt;typeof&lt;/SPAN&gt;(View)).Cast&amp;lt;View&amp;gt;().&lt;SPAN&gt;Where&lt;/SPAN&gt;(q =&amp;gt;&amp;nbsp;q.Id.&lt;SPAN&gt;Equals&lt;/SPAN&gt;(e.Id)))&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN&gt;string&lt;/SPAN&gt;&amp;nbsp;thisSheet =&amp;nbsp;&lt;SPAN&gt;""&lt;/SPAN&gt;;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN&gt;foreach&lt;/SPAN&gt;&amp;nbsp;(ViewSheet vs&amp;nbsp;&lt;SPAN&gt;in&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;new&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;FilteredElementCollector&lt;/SPAN&gt;(doc).&lt;SPAN&gt;OfClass&lt;/SPAN&gt;(&lt;SPAN&gt;typeof&lt;/SPAN&gt;(ViewSheet)).Cast&amp;lt;ViewSheet&amp;gt;())&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN&gt;foreach&lt;/SPAN&gt;&amp;nbsp;(ElementId eid&amp;nbsp;&lt;SPAN&gt;in&lt;/SPAN&gt;&amp;nbsp;vs.&lt;SPAN&gt;GetAllPlacedViews&lt;/SPAN&gt;())&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;View ev = doc.&lt;SPAN&gt;GetElement&lt;/SPAN&gt;(eid)&amp;nbsp;&lt;SPAN&gt;as&lt;/SPAN&gt;&amp;nbsp;View;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN&gt;if&lt;/SPAN&gt;(ev.Id == v.Id)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;thisSheet&amp;nbsp;+= vs.SheetNumber&amp;nbsp;+&amp;nbsp;&lt;SPAN&gt;" - "&lt;/SPAN&gt;&amp;nbsp;+&amp;nbsp;vs.Name&amp;nbsp;+&amp;nbsp;Environment.NewLine&amp;nbsp;;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN&gt;break&lt;/SPAN&gt;;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN&gt;if&lt;/SPAN&gt;&amp;nbsp;(thisSheet&amp;nbsp;!=&amp;nbsp;&lt;SPAN&gt;""&lt;/SPAN&gt;)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;data&amp;nbsp;+= v.ViewType&amp;nbsp;+&amp;nbsp;&lt;SPAN&gt;": "&lt;/SPAN&gt;&amp;nbsp;+&amp;nbsp;v.Name&amp;nbsp;+&amp;nbsp;&lt;SPAN&gt;" "&lt;/SPAN&gt;&amp;nbsp;+&amp;nbsp;Environment.NewLine&amp;nbsp;+&amp;nbsp;thisSheet.&lt;SPAN&gt;TrimEnd&lt;/SPAN&gt;(&lt;SPAN&gt;' '&lt;/SPAN&gt;,&lt;SPAN&gt;','&lt;/SPAN&gt;)&amp;nbsp;+&amp;nbsp;Environment.NewLine;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN&gt;else&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;data&amp;nbsp;+=&amp;nbsp;&amp;nbsp;v.ViewType&amp;nbsp;+&amp;nbsp;&lt;SPAN&gt;": "&lt;/SPAN&gt;&amp;nbsp;+&amp;nbsp;v.Name&amp;nbsp;+&amp;nbsp;&lt;SPAN&gt;" "&lt;/SPAN&gt;&amp;nbsp;+&amp;nbsp;Environment.NewLine&amp;nbsp;+&amp;nbsp;thisSheet.&lt;SPAN&gt;TrimEnd&lt;/SPAN&gt;(&lt;SPAN&gt;' '&lt;/SPAN&gt;,&lt;SPAN&gt;','&lt;/SPAN&gt;);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;data&amp;nbsp;+=&amp;nbsp;&lt;SPAN&gt;" NOT ON SHEET "&lt;/SPAN&gt;&amp;nbsp;+&amp;nbsp;&amp;nbsp;&amp;nbsp;Environment.NewLine&amp;nbsp;+&amp;nbsp;&lt;SPAN&gt;"\n"&lt;/SPAN&gt;&amp;nbsp;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TaskDialog.&lt;SPAN&gt;Show&lt;/SPAN&gt;(&lt;SPAN&gt;"View Report"&lt;/SPAN&gt;,&amp;nbsp;data);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/PRE&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="GetViewSheetFromView.png" style="width: 999px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/725708i0BF155821C8353F6/image-size/large?v=v2&amp;amp;px=999" role="button" title="GetViewSheetFromView.png" alt="GetViewSheetFromView.png" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 04 Feb 2020 17:56:53 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/get-viewsheet-from-view/m-p/9296129#M58471</guid>
      <dc:creator>so-chong</dc:creator>
      <dc:date>2020-02-04T17:56:53Z</dc:date>
    </item>
    <item>
      <title>Re: Get ViewSheet from View</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/get-viewsheet-from-view/m-p/9296814#M58472</link>
      <description>&lt;P&gt;As&amp;nbsp;respresso suggests using the BIP for viewport sheet number with an ElementParameterFilter is probably the best approach. Sheet numbers are unique in each Revit model so it is safe to search by them and get the right result.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt; Public Function TObj43(ByVal commandData As Autodesk.Revit.UI.ExternalCommandData, _
              ByRef message As String, ByVal elements As Autodesk.Revit.DB.ElementSet) As Result

        If commandData.Application.ActiveUIDocument Is Nothing Then Return Result.Cancelled Else 
        Dim AcView As View = commandData.Application.ActiveUIDocument.ActiveGraphicalView

        Dim P_Ns As Parameter = AcView.Parameter(BuiltInParameter.VIEWPORT_SHEET_NUMBER)
        If P_Ns Is Nothing Then
            GoTo Monday
        End If

        Dim Txt As String = P_Ns.AsString
        If String.IsNullOrEmpty(Txt) Then GoTo Monday Else 
        Dim SeFR As FilterRule = ParameterFilterRuleFactory.CreateEqualsRule(New ElementId(BuiltInParameter.SHEET_NUMBER), Txt, True)
        Dim PFilt As New ElementParameterFilter(SeFR, False)

        Dim FEC As New FilteredElementCollector(AcView.Document)
        Dim ECF As New ElementClassFilter(GetType(ViewSheet))
        Dim LandF As New LogicalAndFilter(ECF, PFilt)
        Dim Els As List(Of Element) = FEC.WherePasses(LandF).ToElements

        If Els.Count &amp;lt;&amp;gt; 1 Then
            GoTo Monday
        Else
            Dim TD As New TaskDialog("Was this your sheet...")
            TD.MainInstruction = Txt &amp;amp; "-" &amp;amp; Els(0).Name
            TD.MainContent = "Note that view types that can appear on multiple sheets (Legends, Images, Schedules etc.) will not be returned by this method."
            TD.Show()
            GoTo Friday
        End If
Monday:
        TaskDialog.Show("Something went amiss...", "We looked hard in many places but were unable to find your sheet on this occasion.")
        Return Result.Failed
Friday:
        Return Result.Succeeded
    End Function&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 04 Feb 2020 22:43:12 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/get-viewsheet-from-view/m-p/9296814#M58472</guid>
      <dc:creator>RPTHOMAS108</dc:creator>
      <dc:date>2020-02-04T22:43:12Z</dc:date>
    </item>
    <item>
      <title>Re: Get ViewSheet from View</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/get-viewsheet-from-view/m-p/9298100#M58473</link>
      <description>&lt;P&gt;Here is a pretty quick way of checking for a specific sheet.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;        private ViewSheet CheckSheet(string _sheetNumber)
        {
            ParameterValueProvider pvp = new ParameterValueProvider(new ElementId(BuiltInParameter.SHEET_NUMBER));
            FilterStringRuleEvaluator fsr = new FilterStringEquals();
            FilterRule fRule = new FilterStringRule(pvp, fsr, _sheetNumber, true);
            ElementParameterFilter filter = new ElementParameterFilter(fRule);

            if (new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Sheets).WherePasses(filter).FirstOrDefault() is ViewSheet vs)
            {
                return vs;
            }
            else
            {
                return null;
            }
        }&lt;/PRE&gt;</description>
      <pubDate>Wed, 05 Feb 2020 13:01:27 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/get-viewsheet-from-view/m-p/9298100#M58473</guid>
      <dc:creator>TorsionTools</dc:creator>
      <dc:date>2020-02-05T13:01:27Z</dc:date>
    </item>
    <item>
      <title>Re: Get ViewSheet from View</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/get-viewsheet-from-view/m-p/9298571#M58474</link>
      <description>&lt;P&gt;I believe this solution is unbeatable if you are interested in one single lookup.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It uses a parameter filter and the SHEET_NUMBER built-in parameter.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Probably RPThomas' solution is similarly efficient.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So-chong demonstrates the lookup of the inverted relationship I described, but just for one single view.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;His code could be used to store the entire sheet to hosted views and the inverted view to hosting sheet relationships for all views and sheets. That might possibly be more efficient if you frequently need to look up several different view to sheet relationships.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you all for the very illuminating and helpful answers!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Cheers,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Jeremy&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 05 Feb 2020 15:18:07 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/get-viewsheet-from-view/m-p/9298571#M58474</guid>
      <dc:creator>jeremytammik</dc:creator>
      <dc:date>2020-02-05T15:18:07Z</dc:date>
    </item>
    <item>
      <title>Re: Get ViewSheet from View</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/get-viewsheet-from-view/m-p/9315377#M58475</link>
      <description>&lt;P&gt;Thanks again for the interesting discussion.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Now summarised and cleaned up for posterity:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://thebuildingcoder.typepad.com/blog/2020/02/get-title-block-data-and-viewsheet-from-view.html" target="_blank"&gt;https://thebuildingcoder.typepad.com/blog/2020/02/get-title-block-data-and-viewsheet-from-view.html&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 13 Feb 2020 10:22:33 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/get-viewsheet-from-view/m-p/9315377#M58475</guid>
      <dc:creator>jeremytammik</dc:creator>
      <dc:date>2020-02-13T10:22:33Z</dc:date>
    </item>
    <item>
      <title>Re: Get ViewSheet from View</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/get-viewsheet-from-view/m-p/10491156#M58476</link>
      <description>&lt;P&gt;For every &lt;STRONG&gt;python&lt;/STRONG&gt; developer out there still looking for a solution:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You can use my snippet made with FilteredElementCollector and FilterStringRule:&lt;/P&gt;&lt;P&gt;&lt;A href="https://www.erikfrits.com/blog/get-viewsheet-from-given-view-with-filteredelementcollector-and-filterstringrule/" target="_blank"&gt;https://www.erikfrits.com/blog/get-viewsheet-from-given-view-with-filteredelementcollector-and-filterstringrule/&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 23 Jul 2021 15:38:48 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/get-viewsheet-from-view/m-p/10491156#M58476</guid>
      <dc:creator>Erik_Frits</dc:creator>
      <dc:date>2021-07-23T15:38:48Z</dc:date>
    </item>
    <item>
      <title>Re: Get ViewSheet from View</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/get-viewsheet-from-view/m-p/10603347#M58477</link>
      <description>&lt;P&gt;Thank you for sharing your Python solution! Edited and preserved for posterity on the blog:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://thebuildingcoder.typepad.com/blog/2021/09/view-sheet-from-view-and-select-all-on-level.html#5" target="_blank"&gt;https://thebuildingcoder.typepad.com/blog/2021/09/view-sheet-from-view-and-select-all-on-level.html#4&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 06 Sep 2021 16:28:36 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/get-viewsheet-from-view/m-p/10603347#M58477</guid>
      <dc:creator>jeremy_tammik</dc:creator>
      <dc:date>2021-09-06T16:28:36Z</dc:date>
    </item>
    <item>
      <title>Re: Get ViewSheet from View</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/get-viewsheet-from-view/m-p/13407309#M58478</link>
      <description>&lt;P&gt;Why can't Autodesk just provide a simple property that is the sheet's ElementId?&amp;nbsp; Is it really that hard?&amp;nbsp; Sheet collections are now another problem that have to be contended with.&lt;/P&gt;</description>
      <pubDate>Thu, 03 Apr 2025 17:05:29 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/get-viewsheet-from-view/m-p/13407309#M58478</guid>
      <dc:creator>Michael_Coffey_G</dc:creator>
      <dc:date>2025-04-03T17:05:29Z</dc:date>
    </item>
    <item>
      <title>Re: Get ViewSheet from View</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/get-viewsheet-from-view/m-p/13407343#M58479</link>
      <description>&lt;P&gt;Please submit a wish for this in the Revit Idea Station. Thank you!&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 03 Apr 2025 17:26:48 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/get-viewsheet-from-view/m-p/13407343#M58479</guid>
      <dc:creator>jeremy_tammik</dc:creator>
      <dc:date>2025-04-03T17:26:48Z</dc:date>
    </item>
    <item>
      <title>Re: Get ViewSheet from View</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/get-viewsheet-from-view/m-p/13817983#M84705</link>
      <description>&lt;P&gt;Here is a version that will work for Legends and Schedules.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="csharp"&gt;public static class ViewExtensions
{
    /// &amp;lt;summary&amp;gt;
    /// Tests if the view is a view that represents the model rather than a drafting view or schedule.
    /// &amp;lt;/summary&amp;gt;
    /// &amp;lt;param name="view"&amp;gt;The view to test.&amp;lt;/param&amp;gt;
    /// &amp;lt;returns&amp;gt; &amp;lt;see langword="true"/&amp;gt; for views of types
    /// &amp;lt;see cref="Autodesk.Revit.DB.ViewType.FloorPlan"/&amp;gt;,
    /// &amp;lt;see cref="Autodesk.Revit.DB.ViewType.EngineeringPlan"/&amp;gt;,
    /// &amp;lt;see cref="Autodesk.Revit.DB.ViewType.AreaPlan"/&amp;gt;,
    /// &amp;lt;see cref="Autodesk.Revit.DB.ViewType.CeilingPlan"/&amp;gt;,
    /// &amp;lt;see cref="Autodesk.Revit.DB.ViewType.Elevation"/&amp;gt;,
    /// &amp;lt;see cref="Autodesk.Revit.DB.ViewType.Section"/&amp;gt;, or
    /// &amp;lt;see cref="Autodesk.Revit.DB.ViewType.ThreeD"/&amp;gt;.
    /// &amp;lt;see langword="false"/&amp;gt; otherwise.
    /// &amp;lt;/returns&amp;gt;
    public static bool IsAModelView(this View view)
    {
        return view.ViewType switch
        {
            ViewType.FloorPlan or ViewType.EngineeringPlan or ViewType.AreaPlan or ViewType.CeilingPlan or ViewType.Elevation or ViewType.Section or ViewType.ThreeD =&amp;gt; true,
            _ =&amp;gt; false,
        };
    }
    /// &amp;lt;summary&amp;gt;
    /// Gets the sheet that this view is placed on, or &amp;lt;see langword="null"/&amp;gt; if not placed.
    /// For legends or schedules that may appear on multiple sheets, only the first is returned.
    /// &amp;lt;/summary&amp;gt;
    /// &amp;lt;returns&amp;gt;
    /// The first found sheet that this view is placed on, or &amp;lt;see langword="null"/&amp;gt; if not placed.
    /// &amp;lt;/returns&amp;gt;
    public static ViewSheet? GetSheet(this View? view)
    {
        return view.GetSheets().FirstOrDefault();
    }
    /// &amp;lt;summary&amp;gt;
    /// Gets all sheets that this view is placed on. Returns an empty collection if not placed.
    /// Handles regular views (via Viewport), legends, and schedules.
    /// &amp;lt;/summary&amp;gt;
    /// &amp;lt;returns&amp;gt;
    /// An IEnumerable of ViewSheets containing the view, or an empty IEnumerable if there are no ViewSheets containing the view
    /// &amp;lt;/returns&amp;gt;
    public static IEnumerable&amp;lt;ViewSheet&amp;gt; GetSheets(this View? view)
    {
        if (view is null)
        {
            return Enumerable.Empty&amp;lt;ViewSheet&amp;gt;();
        }
        return view switch
        {
            PanelScheduleView panelScheduleView =&amp;gt; GetSheetsForPanelSchedules(panelScheduleView),
            ViewSchedule viewSchedule =&amp;gt; GetSheetsForSchedules(viewSchedule),
            View modelView when modelView.IsAModelView() =&amp;gt; GetSheetsForViewViaSheetNumber(modelView),
            _ =&amp;gt; GetSheetsForViewViaViewport(view),
        };
    }
    private static ElementFilter CreateFilterBySheetNumber(string sheetNumber)
    {
        var sheetNumberParameterId = new ElementId(BuiltInParameter.SHEET_NUMBER);
#if REVIT2023_OR_GREATER
        FilterRule filterBySheetNumberRule = ParameterFilterRuleFactory.CreateEqualsRule(sheetNumberParameterId, sheetNumber);
#else
        FilterRule filterBySheetNumberRule = ParameterFilterRuleFactory.CreateEqualsRule(sheetNumberParameterId, sheetNumber, true);
#endif
        ElementParameterFilter filterBySheetNumber = new ElementParameterFilter(filterBySheetNumberRule, false);
        ElementClassFilter isViewSheetFilter = new ElementClassFilter(typeof(ViewSheet));
        LogicalAndFilter isViewSheetWithSheetNumberFilter = new LogicalAndFilter(isViewSheetFilter, filterBySheetNumber);
        return isViewSheetWithSheetNumberFilter;
    }
    private static IEnumerable&amp;lt;ViewSheet&amp;gt; GetSheetsForViewViaSheetNumber(View view)
    {
        Parameter? sheetNumberParameter = view.get_Parameter(BuiltInParameter.VIEWPORT_SHEET_NUMBER);
        string? sheetNumber = sheetNumberParameter?.AsString();
        if (string.IsNullOrEmpty(sheetNumber))
        {
            return Enumerable.Empty&amp;lt;ViewSheet&amp;gt;();
        }

        ElementFilter filterBySheetNumber = CreateFilterBySheetNumber(sheetNumber!);
        FilteredElementCollector fec = new FilteredElementCollector(view.Document);
        IList&amp;lt;Element&amp;gt; viewSheets = fec.WherePasses(filterBySheetNumber).ToElements();
        return viewSheets.Cast&amp;lt;ViewSheet&amp;gt;();
    }
    private static IEnumerable&amp;lt;ViewSheet&amp;gt; GetSheetsForViewViaViewport(View view)
    {
        return new FilteredElementCollector(view.Document)
            .OfClass(typeof(Viewport))
            .Cast&amp;lt;Viewport&amp;gt;()
            .Where(vp =&amp;gt; vp.ViewId == view.Id)
            .Select(vp =&amp;gt; view.Document.GetElement(vp.SheetId))
            .OfType&amp;lt;ViewSheet&amp;gt;()
            .Distinct();
    }
    private static IEnumerable&amp;lt;ViewSheet&amp;gt; GetSheetsForSchedules(ViewSchedule view)
    {
        return new FilteredElementCollector(view.Document)
                .OfClass(typeof(ScheduleSheetInstance))
                .Cast&amp;lt;ScheduleSheetInstance&amp;gt;()
                .Where(ssi =&amp;gt; ssi.ScheduleId == view.Id)
                .Select(ssi =&amp;gt; view.Document.GetElement(ssi.OwnerViewId))
                .OfType&amp;lt;ViewSheet&amp;gt;()
                .Distinct();
    }
    private static IEnumerable&amp;lt;ViewSheet&amp;gt; GetSheetsForPanelSchedules(PanelScheduleView view)
    {
        return new FilteredElementCollector(view.Document)
                .OfClass(typeof(PanelScheduleSheetInstance))
                .Cast&amp;lt;PanelScheduleSheetInstance&amp;gt;()
                .Where(pssi =&amp;gt; pssi.ScheduleId == view.Id)
                .Select(pssi =&amp;gt; view.Document.GetElement(pssi.OwnerViewId))
                .OfType&amp;lt;ViewSheet&amp;gt;()
                .Distinct();
    }
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 19 Sep 2025 14:45:54 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/get-viewsheet-from-view/m-p/13817983#M84705</guid>
      <dc:creator>mwagnerfrey6</dc:creator>
      <dc:date>2025-09-19T14:45:54Z</dc:date>
    </item>
  </channel>
</rss>

