private SpatialFieldManager SetSpatialFieldManager(Autodesk.Revit.DB.View view, out int index) { SpatialFieldManager sfm = null; index = -1; try { sfm = SpatialFieldManager.GetSpatialFieldManager(view); using (Transaction trans = new Transaction(m_doc)) { trans.Start("Create Spatial Manager"); try { if (null == sfm) { sfm = SpatialFieldManager.CreateSpatialFieldManager(view, 1); List <string> names = new List <string>(); List <string> descriptions = new List <string>(); names.Add("Visibility Index"); descriptions.Add("0: area with no views, 1: area with views"); sfm.SetMeasurementNames(names); sfm.SetMeasurementDescriptions(descriptions); } IList <int> resultIndices = sfm.GetRegisteredResults(); foreach (int i in resultIndices) { AnalysisResultSchema resultSchema = sfm.GetResultSchema(i); if (resultSchema.Name == "View Analysis") { index = i; } } if (index == -1) { AnalysisResultSchema resultSchema = new AnalysisResultSchema("View Analysis", "Calculating area with views"); index = sfm.RegisterResult(resultSchema); } trans.Commit(); } catch (Exception ex) { string message = ex.Message; trans.RollBack(); } } } catch (Exception ex) { MessageBox.Show("Set Spatial Field Manager.\n" + ex.Message, "Set Spatial Field Manager", MessageBoxButton.OK, MessageBoxImage.Warning); } return(sfm); }
public bool CreateSpatialField() { bool result = false; try { SpatialFieldManager sfm = SpatialFieldManager.GetSpatialFieldManager(doc.ActiveView); switch (settings.ResultType) { case ResultType.MassAnalysis: if (sfm == null) { sfm = SpatialFieldManager.CreateSpatialFieldManager(doc.ActiveView, settings.NumberOfMeasurement); } sfm.SetMeasurementNames(settings.Configurations.Keys.ToList()); sfm.SetMeasurementDescriptions(settings.Configurations.Values.ToList()); if (IsAnalysisByFaces()) { result = AnalysisByFaces(sfm); } else { result = AnalysisByElements(sfm); } break; case ResultType.FARCalculator: if (sfm == null) { sfm = SpatialFieldManager.CreateSpatialFieldManager(doc.ActiveView, settings.NumberOfMeasurement); } sfm.SetMeasurementNames(settings.Configurations.Keys.ToList()); sfm.SetMeasurementDescriptions(settings.Configurations.Values.ToList()); FARCalculator farCalculator = new FARCalculator(doc, settings, progressBar, sfm); if (farCalculator.MapMassToArea()) { farCalculator.UnitNames = unitNames; farCalculator.Multipliers = multipliers; result = farCalculator.AnalysisByElements(); } break; case ResultType.Topography: break; case ResultType.BuildingNetwork: break; case ResultType.FacadeAnalysis: break; case ResultType.HeatMap: break; case ResultType.RadianceAnalysis: if (sfm == null) { sfm = SpatialFieldManager.CreateSpatialFieldManager(doc.ActiveView, 3); } List <string> measurementNames = new List <string>(); measurementNames.Add("Value 1"); measurementNames.Add("Value 2"); measurementNames.Add("Value 3"); sfm.SetMeasurementNames(measurementNames); sfm.SetMeasurementDescriptions(measurementNames); RadianceDisplay radianceDisplay = new RadianceDisplay(doc, settings, progressBar, sfm); if (File.Exists(settings.ReferenceDataFile)) { if (radianceDisplay.ReadDatFile()) { radianceDisplay.UnitNames = unitNames; radianceDisplay.Multipliers = multipliers; result = radianceDisplay.AnalysisByElements(); } } else { MessageBox.Show("Please import a data file to display the result of the readiance analysis.", "File Not Found : Data File", MessageBoxButtons.OK, MessageBoxIcon.Warning); } break; case ResultType.FieldOfView: if (sfm == null) { sfm = SpatialFieldManager.CreateSpatialFieldManager(doc.ActiveView, settings.NumberOfMeasurement); } sfm.SetMeasurementNames(settings.Configurations.Keys.ToList()); sfm.SetMeasurementDescriptions(settings.Configurations.Values.ToList()); FieldOfViewAnalysis viewAnalysis = new FieldOfViewAnalysis(doc, settings, progressBar, sfm); if (null != viewAnalysis.FindPointOfView()) { viewAnalysis.UnitNames = unitNames; viewAnalysis.Multipliers = multipliers; result = viewAnalysis.AnalysisByElements(); } break; case ResultType.CustomizedAnalysis: break; } } catch (Exception ex) { MessageBox.Show("Failed to create spatial filed. \n" + ex.Message, "AnalysisDataManager : CreateSpatialField", MessageBoxButtons.OK, MessageBoxIcon.Warning); } return(result); }