Esempio n. 1
0
        /***************************************************/
        /****               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);
        }
Esempio n. 2
0
        /***************************************************/

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