public static bool IsValidElement(DB.Element element) { if (element is DB.ElementType) { return(false); } if (element is DB.View) { return(false); } if (element.Location is object) { return(true); } return ( element is DB.DirectShape || element is DB.CurveElement || element is DB.CombinableElement || element is DB.Architecture.TopographySurface || element is DB.Opening || element is DB.Part || InstanceElement.IsValidElement(element) ); }
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)); }