BuildingCoder.CmdListViews.GetViewport C# (CSharp) Method

GetViewport() private method

Return the viewport on the given sheet displaying the given view.
private GetViewport ( ViewSheet sheet, View view ) : Element
sheet ViewSheet
view View
return Element
        Element GetViewport( ViewSheet sheet, View view )
        {
            Document doc = sheet.Document;

              // filter for view name:

              BuiltInParameter bip
            = BuiltInParameter.VIEW_NAME;

              ParameterValueProvider provider
            = new ParameterValueProvider(
              new ElementId( bip ) );

              FilterStringRuleEvaluator evaluator
            = new FilterStringEquals();

              FilterRule rule = new FilterStringRule(
            provider, evaluator, view.Name, true );

              ElementParameterFilter name_filter
            = new ElementParameterFilter( rule );

              BuiltInCategory bic
            = BuiltInCategory.OST_Viewports;

              // retrieve the specific named viewport:

              //Element viewport
              //  = new FilteredElementCollector( doc )
              //    .OfCategory( bic )
              //    .WherePasses( name_filter )
              //    .FirstElement();
              //return viewport;

              // unfortunately, there are not just one,
              // but two candidate elements. apparently,
              // we can distibuish them using the
              // owner view id property:

              List<Element> viewports
            = new List<Element>(
              new FilteredElementCollector( doc )
            .OfCategory( bic )
            .WherePasses( name_filter )
            .ToElements() );

              Debug.Assert( viewports[0].OwnerViewId.Equals( ElementId.InvalidElementId ),
            "expected the first viewport to have an invalid owner view id" );

              Debug.Assert( !viewports[1].OwnerViewId.Equals( ElementId.InvalidElementId ),
            "expected the second viewport to have a valid owner view id" );

              int i = 1;

              return viewports[i];
        }