コード例 #1
0
        public static Element FromElement(DB.Element element)
        {
            if (element is null)
            {
                return(null);
            }

            for (var type = element.GetType(); type != typeof(DB.Element); type = type.BaseType)
            {
                if (ActivatorDictionary.TryGetValue(type, out var activator))
                {
                    return(activator(element));
                }
            }

            if (DocumentExtension.AsCategory(element) is DB.Category category)
            {
                return(new Category(category));
            }

            if (element is DB.PropertySetElement pset)
            {
                if (StructuralAssetElement.IsValidElement(element))
                {
                    return(new StructuralAssetElement(pset));
                }
                else if (ThermalAssetElement.IsValidElement(element))
                {
                    return(new ThermalAssetElement(pset));
                }
            }
            else if (GraphicalElement.IsValidElement(element))
            {
                if (InstanceElement.IsValidElement(element))
                {
                    if (Panel.IsValidElement(element))
                    {
                        return(new Panel(element as DB.FamilyInstance));
                    }

                    return(new InstanceElement(element));
                }

                if (GeometricElement.IsValidElement(element))
                {
                    return(new GeometricElement(element));
                }

                return(new GraphicalElement(element));
            }
            else
            {
                if (DesignOptionSet.IsValidElement(element))
                {
                    return(new DesignOptionSet(element));
                }
            }

            return(new Element(element));
        }
コード例 #2
0
        public static new bool IsValidElement(DB.Element element)
        {
            if (!GraphicalElement.IsValidElement(element))
            {
                return(false);
            }

            using (var options = new DB.Options())
                return(!(element.get_Geometry(options) is null));
        }
コード例 #3
0
        public static Element FromElement(DB.Element element)
        {
            if (element is null)
            {
                return(null);
            }

            if (element.GetType() == typeof(DB.Element))
            {
                try
                {
                    if (DB.Category.GetCategory(element.Document, element.Id) is DB.Category category)
                    {
                        return(new Category(category));
                    }
                }
                catch (Autodesk.Revit.Exceptions.InternalException) { }
            }
            else
            {
                for (var type = element.GetType(); type != typeof(DB.Element); type = type.BaseType)
                {
                    if (ActivatorDictionary.TryGetValue(type, out var activator))
                    {
                        return(activator(element));
                    }
                }
            }

            if (GraphicalElement.IsValidElement(element))
            {
                if (InstanceElement.IsValidElement(element))
                {
                    if (Panel.IsValidElement(element))
                    {
                        return(new Panel(element as DB.FamilyInstance));
                    }

                    return(new InstanceElement(element));
                }

                return(GeometricElement.IsValidElement(element) ?
                       new GeometricElement(element) :
                       new GraphicalElement(element));
            }

            return(new Element(element));
        }
コード例 #4
0
        public static Element FromElement(DB.Element element)
        {
            if (element is null)
            {
                return(null);
            }

            for (var type = element.GetType(); type != typeof(DB.Element); type = type.BaseType)
            {
                if (ActivatorDictionary.TryGetValue(type, out var activator))
                {
                    return(activator(element));
                }
            }

            if (DocumentExtension.AsCategory(element) is DB.Category category)
            {
                return(new Category(category));
            }

            if (GraphicalElement.IsValidElement(element))
            {
                if (InstanceElement.IsValidElement(element))
                {
                    if (Panel.IsValidElement(element))
                    {
                        return(new Panel(element as DB.FamilyInstance));
                    }

                    return(new InstanceElement(element));
                }

                if (GeometricElement.IsValidElement(element))
                {
                    return(new GeometricElement(element));
                }

                return(new GraphicalElement(element));
            }

            return(new Element(element));
        }