/***************************************************/ /**** Public Methods ****/ /***************************************************/ public static Element ToRevitElement(this ModelInstance modelInstance, Document document, RevitSettings settings = null, Dictionary <Guid, List <int> > refObjects = null) { if (modelInstance == null || document == null) { return(null); } Element element = refObjects.GetValue <Element>(document, modelInstance.BHoM_Guid); if (element != null) { return(element); } if (modelInstance.Properties == null) { Compute.NullObjectPropertiesWarning(modelInstance); return(null); } settings = settings.DefaultIfNull(); BuiltInCategory builtInCategory = modelInstance.BuiltInCategory(document); if (modelInstance.Location is ISurface || modelInstance.Location is ISolid) { Solid brep = ToRevit(modelInstance.Location as dynamic); if (brep == null) { Compute.GeometryConvertFailed(modelInstance); return(null); } DirectShape directShape = DirectShape.CreateElement(document, new ElementId((int)builtInCategory)); directShape.AppendShape(new List <GeometryObject> { brep }); element = directShape; } else { ElementType elementType = modelInstance.Properties.ElementType(document, new List <BuiltInCategory> { builtInCategory }, settings); element = modelInstance.IToRevitElement(elementType, settings); } if (element == null) { return(null); } // Copy parameters from BHoM object to Revit element element.CopyParameters(modelInstance, settings); refObjects.AddOrReplace(modelInstance, element); return(element); }
/***************************************************/ public static Element ToRevit(this ModelInstance modelInstance, Document document, RevitSettings settings = null, Dictionary <Guid, List <int> > refObjects = null) { switch (modelInstance.BuiltInCategory(document)) { case BuiltInCategory.OST_Lines: return(modelInstance.ToCurveElement(document, settings, refObjects)); default: return(modelInstance.ToRevitElement(document, settings, refObjects)); } }