<?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: Revision help: which views show this object? in Revit API Forum</title>
    <link>https://forums.autodesk.com/t5/revit-api-forum/revision-help-which-views-show-this-object/m-p/5012832#M76841</link>
    <description>&lt;P&gt;Dear Duncan,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This might be a lot simpler than you think.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;One overload of the FlteredElementCollector constructor takes a view element id as an input argument and returns all&amp;nbsp;&lt;SPAN style="line-height: 1.2;"&gt;visible elements in that view.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You could therefore simply cycle through all views, instantiate a view-specific element collector for each, and check whether the elements it returns include your target element.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Best regards,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Jeremy&lt;/P&gt;</description>
    <pubDate>Mon, 05 May 2014 18:14:32 GMT</pubDate>
    <dc:creator>jeremytammik</dc:creator>
    <dc:date>2014-05-05T18:14:32Z</dc:date>
    <item>
      <title>Revision help: which views show this object?</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/revision-help-which-views-show-this-object/m-p/5012746#M76840</link>
      <description>&lt;P&gt;The wonderful thing about working in 3d is that every view is just a view of the same database. The horrible thing about delivering drawings from a 3d model is that every view is just a view of the same database. So when there is a revision to already issued drawings how do I find all the views that need revision clouds? ...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Does anyone know of a way in the API to find all views showing an object with a given ID number? I'm thinking a first sweep maybe comparing views on sheets and their depths to object geometri, then a second sweep checking visability against views with view templates, and a third checking for view specific overrides. Otherwise this kind of thing would take forever.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Ideas anyone? I'd like to add this to my list of API projects ...&lt;/P&gt;</description>
      <pubDate>Mon, 05 May 2014 17:52:06 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/revision-help-which-views-show-this-object/m-p/5012746#M76840</guid>
      <dc:creator>duncan.lithgow</dc:creator>
      <dc:date>2014-05-05T17:52:06Z</dc:date>
    </item>
    <item>
      <title>Re: Revision help: which views show this object?</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/revision-help-which-views-show-this-object/m-p/5012832#M76841</link>
      <description>&lt;P&gt;Dear Duncan,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This might be a lot simpler than you think.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;One overload of the FlteredElementCollector constructor takes a view element id as an input argument and returns all&amp;nbsp;&lt;SPAN style="line-height: 1.2;"&gt;visible elements in that view.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You could therefore simply cycle through all views, instantiate a view-specific element collector for each, and check whether the elements it returns include your target element.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Best regards,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Jeremy&lt;/P&gt;</description>
      <pubDate>Mon, 05 May 2014 18:14:32 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/revision-help-which-views-show-this-object/m-p/5012832#M76841</guid>
      <dc:creator>jeremytammik</dc:creator>
      <dc:date>2014-05-05T18:14:32Z</dc:date>
    </item>
    <item>
      <title>Re: Revision help: which views show this object?</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/revision-help-which-views-show-this-object/m-p/5027968#M76842</link>
      <description>&lt;P&gt;Hi Jeremy&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Great news. I thought someone would know how to do this. I'll see if we can convince someone to implement this functionality (my coding skills are still pretty hopeless.)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Duncan&lt;/P&gt;</description>
      <pubDate>Tue, 13 May 2014 11:57:14 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/revision-help-which-views-show-this-object/m-p/5027968#M76842</guid>
      <dc:creator>duncan.lithgow</dc:creator>
      <dc:date>2014-05-13T11:57:14Z</dc:date>
    </item>
    <item>
      <title>Re: Revision help: which views show this object?</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/revision-help-which-views-show-this-object/m-p/5027974#M76843</link>
      <description>&lt;P&gt;Hi Duncan,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Please provide a sample model and an exact description of the required input, user interaction and output.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;That will enable interested parties to take a look at it.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Cheers,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Jeremy&lt;/P&gt;</description>
      <pubDate>Tue, 13 May 2014 11:59:56 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/revision-help-which-views-show-this-object/m-p/5027974#M76843</guid>
      <dc:creator>jeremytammik</dc:creator>
      <dc:date>2014-05-13T11:59:56Z</dc:date>
    </item>
    <item>
      <title>Re: Revision help: which views show this object?</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/revision-help-which-views-show-this-object/m-p/5029772#M76844</link>
      <description>&lt;P&gt;The solution as Jeremy suggested is certainly possible, BUT in a model with many views, it can take an extremely long time to run.&lt;/P&gt;&lt;P&gt;The reason for this is, (as far as I can tell), when using a view-specific FilteredElementCollector, Revit effectively opens that view and checks whether the element is visible in the view. &amp;nbsp;&lt;/P&gt;&lt;P&gt;The result of this is that getting a list of views where an element is present takes the same amount of time as opening every view that is checked.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;That being said, here is the code that I have for this:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;public&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;static&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;IEnumerable&lt;/SPAN&gt;&amp;lt;&lt;SPAN&gt;View&lt;/SPAN&gt;&amp;gt;&amp;nbsp;FindAllViewsWhereAllElementsVisible(&lt;SPAN&gt;this&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;IList&lt;/SPAN&gt;&amp;lt;&lt;SPAN&gt;Element&lt;/SPAN&gt;&amp;gt;&amp;nbsp;elements)
&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;&amp;nbsp;(elements&amp;nbsp;==&amp;nbsp;&lt;SPAN&gt;null&lt;/SPAN&gt;)&amp;nbsp;&lt;SPAN&gt;throw&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;new&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;ArgumentNullException&lt;/SPAN&gt;(&lt;SPAN&gt;"elements"&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;&lt;SPAN&gt;if&lt;/SPAN&gt;&amp;nbsp;(elements.Count&amp;nbsp;==&amp;nbsp;0)&amp;nbsp;&lt;SPAN&gt;return&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;new&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;List&lt;/SPAN&gt;&amp;lt;&lt;SPAN&gt;View&lt;/SPAN&gt;&amp;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;Document&lt;/SPAN&gt;&amp;nbsp;doc&amp;nbsp;=&amp;nbsp;elements.First().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;SPAN&gt;IEnumerable&lt;/SPAN&gt;&amp;lt;&lt;SPAN&gt;View&lt;/SPAN&gt;&amp;gt;&amp;nbsp;relevantViewList&amp;nbsp;=&amp;nbsp;doc.FindAllViewsThatCanDisplayElements();
 
&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;List&lt;/SPAN&gt;&amp;lt;&lt;SPAN&gt;ElementId&lt;/SPAN&gt;&amp;gt;&amp;nbsp;idsToCheck&amp;nbsp;=&amp;nbsp;(&lt;SPAN&gt;from&lt;/SPAN&gt;&amp;nbsp;el&amp;nbsp;&lt;SPAN&gt;in&lt;/SPAN&gt;&amp;nbsp;elements&amp;nbsp;&lt;SPAN&gt;select&lt;/SPAN&gt;&amp;nbsp;el.Id).ToList();
 
&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;return&lt;/SPAN&gt;&amp;nbsp;(&lt;SPAN&gt;from&lt;/SPAN&gt;&amp;nbsp;v&amp;nbsp;&lt;SPAN&gt;in&lt;/SPAN&gt;&amp;nbsp;relevantViewList
&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;let&lt;/SPAN&gt;&amp;nbsp;idList&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;new&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN&gt;FilteredElementCollector&lt;/SPAN&gt;(doc,&amp;nbsp;v.Id)
&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;.WhereElementIsNotElementType().ToElementIds()
&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;where&lt;/SPAN&gt;&amp;nbsp;!idsToCheck.Except(idList).Any()
&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;select&lt;/SPAN&gt;&amp;nbsp;v);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;Helper function:&lt;/P&gt;&lt;PRE&gt;public static IEnumerable&amp;lt;View&amp;gt; FindAllViewsThatCanDisplayElements(this Document doc)
        {
            ElementMulticlassFilter filter =
                new ElementMulticlassFilter(new List&amp;lt;Type&amp;gt; { typeof(View3D), typeof(ViewPlan), typeof(ViewSection) });

            return new FilteredElementCollector(doc).WherePasses(filter).Cast&amp;lt;View&amp;gt;().Where(v =&amp;gt; !v.IsTemplate);
        }&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If you can't tell, I'm a big fan of LINQ... Let me know if you need me to explain anything that's happening here.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Colin&lt;/P&gt;</description>
      <pubDate>Wed, 14 May 2014 00:38:29 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/revision-help-which-views-show-this-object/m-p/5029772#M76844</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2014-05-14T00:38:29Z</dc:date>
    </item>
    <item>
      <title>Re: Revision help: which views show this object?</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/revision-help-which-views-show-this-object/m-p/5043526#M76845</link>
      <description>&lt;P&gt;Hi Colin,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you for the very nice enhancement!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="line-height: 1.2;"&gt;I like it!&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You also seem to like extension methods, performance optimisation and the ElementMulticlassFilter.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So do I.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I therefore integrated your code into The Building Coder samples and implemented a new external command CmdViewsShowingElements to exercise it:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://thebuildingcoder.typepad.com/blog/2014/05/views-displaying-given-element-svg-and-nosql.html#6" target="_blank"&gt;http://thebuildingcoder.typepad.com/blog/2014/05/views-displaying-given-element-svg-and-nosql.html#6&lt;/A&gt;&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;</description>
      <pubDate>Tue, 20 May 2014 12:45:37 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/revision-help-which-views-show-this-object/m-p/5043526#M76845</guid>
      <dc:creator>jeremytammik</dc:creator>
      <dc:date>2014-05-20T12:45:37Z</dc:date>
    </item>
  </channel>
</rss>

