BuildingCoder.CmdSlabBoundaryArea.Execute C# (CSharp) Метод

Execute() публичный Метод

public Execute ( ExternalCommandData commandData, string &message, ElementSet elements ) : System.Result
commandData ExternalCommandData
message string
elements ElementSet
Результат System.Result
        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;
              }

              Options opt = app.Application.Create.NewGeometryOptions();

              List<List<XYZ>> polygons
            = CmdSlabBoundary.GetFloorBoundaryPolygons(
              floors, opt );

              List<List<UV>> flat_polygons
            = Flatten( polygons );

              int i = 0, n = flat_polygons.Count;
              double[] areas = new double[n];
              double a, maxArea = 0.0;
              foreach( List<UV> polygon in flat_polygons )
              {
            a = GetSignedPolygonArea( polygon );
            if( Math.Abs( maxArea ) < Math.Abs( a ) )
            {
              maxArea = a;
            }
            areas[i++] = a;
              }

              Debug.Print(
            "{0} boundary loop{1} found.",
            n, Util.PluralSuffix( n ) );

              for( i = 0; i < n; ++i )
              {
            Debug.Print(
              "  Loop {0} area is {1} square feet{2}",
              i,
              Util.RealString( areas[i] ),
              ( areas[i].Equals( maxArea )
            ? ", outer loop of largest floor slab"
            : "" ) );
              }

              using ( Transaction t = new Transaction( doc ) )
              {
            t.Start( "Draw Polygons" );

            Creator creator = new Creator( doc );
            creator.DrawPolygons( polygons );

            t.Commit();
              }
              return Result.Succeeded;
        }