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