public Result ExecuteWithoutRecursion(
ExternalCommandData commandData,
ref string message,
ElementSet elements)
{
UIApplication app = commandData.Application;
Document doc = app.ActiveUIDocument.Document;
FilteredElementCollector instances
= new FilteredElementCollector( doc );
instances.OfClass( typeof( FamilyInstance ) );
Dictionary<string, Family> families
= new Dictionary<string, Family>();
foreach ( FamilyInstance i in instances )
{
Family family = i.Symbol.Family;
if ( !families.ContainsKey( family.Name ) )
{
families[family.Name] = family;
}
}
List<string> keys = new List<string>(
families.Keys );
keys.Sort();
foreach ( string key in keys )
{
Family family = families[key];
if ( family.IsInPlace )
{
Debug.Print( "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(
"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 name = i.ObjectType.Name; // 2011
string name = doc.GetElement( i.GetTypeId() ).Name; // 2012
Debug.Print( " '{0}'", name );
}
}
}
}
return Result.Failed;
}