public Result Execute(
ExternalCommandData commandData,
ref string message,
ElementSet elements)
{
UIDocument uidoc = commandData.Application
.ActiveUIDocument;
Options options = new Options();
options.ComputeReferences = true;
GeometryElement geomElement
= uidoc.Selection.PickObject(
ObjectType.Element )
.Element.get_Geometry( options );
int edgeCount = 0;
foreach( GeometryObject geomObj
in geomElement.Objects )
{
if( geomObj is GeometryInstance )
{
GeometryInstance inst = geomObj
as GeometryInstance;
if( inst != null )
{
GeometryElement geomElem
= inst.GetSymbolGeometry();
foreach( Object o in geomElem.Objects )
{
Solid solid = o as Solid;
if( solid != null )
{
foreach( Face face in solid.Faces )
{
foreach( EdgeArray edgeArray
in face.EdgeLoops )
{
edgeCount += edgeArray.Size;
}
}
}
}
}
}
}
TaskDialog.Show( "Revit", "Edges: "
+ edgeCount.ToString() );
return Result.Succeeded;
}