BuildingCoder.CmdImportsInFamilies.ListImportsAndSearchForMore C# (CSharp) Method

ListImportsAndSearchForMore() public method

List all import instances in all the given families. Retrieve nested families and recursively search in these as well.
public ListImportsAndSearchForMore ( int recursionLevel, Document doc, Family>.Dictionary families ) : void
recursionLevel int
doc Document
families Family>.Dictionary
return void
        void ListImportsAndSearchForMore(
            int recursionLevel,
            Document doc,
            Dictionary<string, Family> families)
        {
            string indent
            = new string( ' ', 2 * recursionLevel );

              List<string> keys = new List<string>(
            families.Keys );

              keys.Sort();

              foreach ( string key in keys )
              {
            Family family = families[key];

            if ( family.IsInPlace )
            {
              Debug.Print( indent
            + "Family '{0}' is in-place.",
            key );
            }
            else
            {
              Document fdoc = doc.EditFamily( family );

              FilteredElementCollector c
            = new FilteredElementCollector( doc );

              c.OfClass( typeof( ImportInstance ) );

              IList<Element> imports = c.ToElements();

              int n = imports.Count;

              Debug.Print( indent
            + "Family '{0}' contains {1} import instance{2}{3}",
            key, n, Util.PluralSuffix( n ),
            Util.DotOrColon( n ) );

              if ( 0 < n )
              {
            foreach ( ImportInstance i in imports )
            {
              string s = i.Pinned ? "" : "not ";

              //string name = i.ObjectType.Name; // 2011
              string name = doc.GetElement( i.GetTypeId() ).Name; // 2012

              Debug.Print( indent
                + "  '{0}' {1}pinned",
                name, s );

              i.Pinned = !i.Pinned;
            }
              }

              Dictionary<string, Family> nestedFamilies
            = GetFamilies( fdoc );

              ListImportsAndSearchForMore(
            recursionLevel + 1, fdoc, nestedFamilies );
            }
              }
        }