AMEE_in_Revit.Addin.Commands.UpdateCO2eVisualizationCommand.Execute C# (CSharp) Method

Execute() public method

public Execute ( ExternalCommandData commandData, string &message, ElementSet elements ) : Result
commandData ExternalCommandData
message string
elements ElementSet
return Result
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            var uiApp = commandData.Application;
            var doc = uiApp.ActiveUIDocument.Document;

            SetStatusText("Updating CO2e visualisation...");

            var view = new ViewFinder(doc).Get3DViewNamed("CO2e");
            if (view == null)
            {
                TaskDialog.Show("Error", "A 3D view named 'CO2e' must exist to view the AMEE CO2e visualization.");
                return Result.Failed;
            }

            new AnalysisDisplayStyles().SetCO2eAnalysisDisplayStyle(view);

            var sfm = SpatialFieldManager.GetSpatialFieldManager(view);
            if (sfm == null) sfm = SpatialFieldManager.CreateSpatialFieldManager(view, 1); // One measurement value for each point
            sfm.Clear();

            var sw = new Stopwatch();
            sw.Start();
            var collector = new FilteredElementCollector(doc, view.Id);
            ICollection<Element> co2eElements = collector.WherePasses(Settings.CreateFilterForElementsWithCO2eParameter()).WhereElementIsNotElementType().ToElements();
            var count = 0;
            foreach (var element in co2eElements)
            {
                if (count++ > 200)
                {
                    logger.InfoFormat("Skipping CO2e visualisation update for element {0} since we have already updated more than 200", element.Name);
                    continue;
                }
                SetStatusText("Updating CO2e visualisation for element {0}...", element.Name);
                CO2eVisualisationCreator.UpdateCO2eVisualization(sfm, element);
            }

            sw.Stop();
            SetStatusText("Updated all CO2e visualisations in {0}", sw.Elapsed);
            logger.InfoFormat("Updated all CO2e visualisations in {0}", sw.Elapsed);

            return Result.Succeeded;
        }
UpdateCO2eVisualizationCommand