Exemple #1
0
        /***************************************************/
        /****               Public Methods              ****/
        /***************************************************/

        public static oM.Adapters.Revit.Elements.ViewPlan ViewPlanFromRevit(this ViewPlan revitViewPlan, RevitSettings settings = null, Dictionary <string, List <IBHoMObject> > refObjects = null)
        {
            settings = settings.DefaultIfNull();

            oM.Adapters.Revit.Elements.ViewPlan viewPlan = refObjects.GetValue <oM.Adapters.Revit.Elements.ViewPlan>(revitViewPlan.Id.IntegerValue);
            if (viewPlan != null)
            {
                return(viewPlan);
            }

            viewPlan = BH.Engine.Adapters.Revit.Create.ViewPlan(revitViewPlan.Name, revitViewPlan.GenLevel?.Name);
            View template = revitViewPlan.Document.GetElement(revitViewPlan.ViewTemplateId) as View;

            if (template != null)
            {
                viewPlan.TemplateName = template.Name;
            }

            ElementType elementType = revitViewPlan.Document.GetElement(revitViewPlan.GetTypeId()) as ElementType;

            if (elementType != null)
            {
                viewPlan.InstanceProperties = elementType.InstancePropertiesFromRevit(settings, refObjects);
            }

            viewPlan.Name = revitViewPlan.Name;

            //Set identifiers, parameters & custom data
            viewPlan.SetIdentifiers(revitViewPlan);
            viewPlan.CopyParameters(revitViewPlan, settings.ParameterSettings);
            viewPlan.SetProperties(revitViewPlan, settings.ParameterSettings);

            refObjects.AddOrReplace(revitViewPlan.Id, viewPlan);
            return(viewPlan);
        }
Exemple #2
0
        /***************************************************/
        /****               Public Methods              ****/
        /***************************************************/

        public static ViewPlan ToRevitViewPlan(this oM.Adapters.Revit.Elements.ViewPlan viewPlan, Document document, RevitSettings settings = null, Dictionary <Guid, List <int> > refObjects = null)
        {
            if (viewPlan == null || string.IsNullOrEmpty(viewPlan.LevelName) || string.IsNullOrEmpty(viewPlan.ViewName))
            {
                return(null);
            }

            ViewPlan revitViewPlan = refObjects.GetValue <ViewPlan>(document, viewPlan.BHoM_Guid);

            if (revitViewPlan != null)
            {
                return(revitViewPlan);
            }

            settings = settings.DefaultIfNull();

            ElementId levelElementID = null;

            List <Level> levels = new FilteredElementCollector(document).OfClass(typeof(Level)).Cast <Level>().ToList();

            if (levels == null || levels.Count < 1)
            {
                return(null);
            }

            Level level = levels.Find(x => x.Name == viewPlan.LevelName);

            if (level == null)
            {
                return(null);
            }

            levelElementID = level.Id;

            ElementId viewTemplateId = ElementId.InvalidElementId;

            if (!string.IsNullOrWhiteSpace(viewPlan.TemplateName))
            {
                IEnumerable <ViewPlan> viewPlans = new FilteredElementCollector(document).OfClass(typeof(ViewPlan)).Cast <ViewPlan>();
                ViewPlan viewPlanTemplate        = viewPlans.FirstOrDefault(x => x.IsTemplate && viewPlan.TemplateName == x.Name);
                if (viewPlanTemplate == null)
                {
                    Compute.ViewTemplateNotExistsWarning(viewPlan);
                }
                else
                {
                    viewTemplateId = viewPlanTemplate.Id;
                }
            }

            revitViewPlan = Create.ViewPlan(document, level, viewPlan.ViewName, null, viewTemplateId) as ViewPlan;


            // Copy parameters from BHoM object to Revit element
            revitViewPlan.CopyParameters(viewPlan, settings);

            refObjects.AddOrReplace(viewPlan, revitViewPlan);
            return(revitViewPlan);
        }
        /***************************************************/

        internal static void ViewTemplateNotExistsWarning(this oM.Adapters.Revit.Elements.ViewPlan viewPlan)
        {
            string message = "View Template has not been found for given BHoM ViewPlan.";

            if (viewPlan != null)
            {
                message = string.Format("{0} BHoM Guid: {1} View Template Name: {2}", message, viewPlan.BHoM_Guid, viewPlan.TemplateName);
            }

            BH.Engine.Reflection.Compute.RecordError(message);
        }
Exemple #4
0
        /***************************************************/

        public static Element ToRevit(this oM.Adapters.Revit.Elements.ViewPlan viewPlan, Document document, RevitSettings settings = null, Dictionary <Guid, List <int> > refObjects = null)
        {
            return(viewPlan.ToRevitViewPlan(document, settings, refObjects));
        }