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 );
}
}
}