/***************************************************/ /**** 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); }
/***************************************************/ /**** 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); }
/***************************************************/ 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)); }