BuildingCoder.CmdCollectorPerformance.GetBeamsIntersectingTwoColumns C# (CSharp) Method

GetBeamsIntersectingTwoColumns() private method

Retrieve all beam family instances intersecting two columns, cf. http://forums.autodesk.com/t5/revit-api/check-to-see-if-beam-exists/m-p/6223562
private GetBeamsIntersectingTwoColumns ( Element column1, Element column2 ) : FilteredElementCollector
column1 Element
column2 Element
return FilteredElementCollector
        FilteredElementCollector GetBeamsIntersectingTwoColumns(
            Element column1,
            Element column2)
        {
            Document doc = column1.Document;

              if( column2.Document.GetHashCode() != doc.GetHashCode() )
              {
            throw new ArgumentException(
              "Expected two columns from same document." );
              }

              FilteredElementCollector intersectingStructuralFramingElements
            = new FilteredElementCollector( doc )
              .OfClass( typeof( FamilyInstance ) )
              .OfCategory( BuiltInCategory.OST_StructuralFraming )
              .WherePasses( new ElementIntersectsElementFilter( column1 ) )
              .WherePasses( new ElementIntersectsElementFilter( column2 ) );

              int n = intersectingStructuralFramingElements.Count<Element>();

              string result = string.Format(
            "{0} structural framing family instance{1} "
            + "intersect{2} the two beams{3}",
            n, Util.PluralSuffix( n ),
            ( 1 == n ? "s" : "" ),
            Util.DotOrColon( n ) );

              string id_list = 0 == n
            ? string.Empty
            : string.Join( ", ",
            intersectingStructuralFramingElements
              .Select<Element, string>(
                x => x.Id.IntegerValue.ToString() ) )
              + ".";

              Util.InfoMsg2( result, id_list );

              return intersectingStructuralFramingElements;
        }