public Result Execute( ExternalCommandData commandData, ref string message, ElementSet elements) { UIApplication app = commandData.Application; UIDocument uidoc = app.ActiveUIDocument; Document doc = uidoc.Document; List <Element> floors = new List <Element>(); if (!Util.GetSelectedElementsOrAll( floors, uidoc, typeof(Floor))) { Selection sel = uidoc.Selection; message = (0 < sel.GetElementIds().Count) ? "Please select some floor elements." : "No floor elements found."; return(Result.Failed); } List <Face> faces = new List <Face>(); Options opt = app.Application.Create.NewGeometryOptions(); foreach (Floor floor in floors) { GeometryElement geo = floor.get_Geometry(opt); //GeometryObjectArray objects = geo.Objects; // 2012 //foreach( GeometryObject obj in objects ) // 2012 foreach (GeometryObject obj in geo) // 2013 { Solid solid = obj as Solid; if (solid != null) { GetSideFaces(faces, solid); } } } int n = faces.Count; Debug.Print( "{0} side face{1} found.", n, Util.PluralSuffix(n)); using (Transaction t = new Transaction(doc)) { t.Start("Draw Face Triangle Normals"); Creator creator = new Creator(doc); foreach (Face f in faces) { creator.DrawFaceTriangleNormals(f); } t.Commit(); } return(Result.Succeeded); }
public Result Execute( ExternalCommandData commandData, ref string message, ElementSet elements) { UIApplication app = commandData.Application; UIDocument uidoc = app.ActiveUIDocument; Document doc = uidoc.Document; List<Element> floors = new List<Element>(); if( !Util.GetSelectedElementsOrAll( floors, uidoc, typeof( Floor ) ) ) { Selection sel = uidoc.Selection; message = ( 0 < sel.GetElementIds().Count ) ? "Please select some floor elements." : "No floor elements found."; return Result.Failed; } List<Face> faces = new List<Face>(); Options opt = app.Application.Create.NewGeometryOptions(); foreach( Floor floor in floors ) { GeometryElement geo = floor.get_Geometry( opt ); //GeometryObjectArray objects = geo.Objects; // 2012 //foreach( GeometryObject obj in objects ) // 2012 foreach( GeometryObject obj in geo ) // 2013 { Solid solid = obj as Solid; if( solid != null ) { GetSideFaces( faces, solid ); } } } int n = faces.Count; Debug.Print( "{0} side face{1} found.", n, Util.PluralSuffix( n ) ); using ( Transaction t = new Transaction( doc ) ) { t.Start( "Draw Face Triangle Normals" ); Creator creator = new Creator( doc ); foreach ( Face f in faces ) { creator.DrawFaceTriangleNormals( f ); } t.Commit(); } return Result.Succeeded; }