コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }