Пример #1
0
        public static T Find <T>(Document document, IntegerId integerId, double min = Tolerance.Distance, double max = Tolerance.MacroDistance) where T : Element
        {
            if (document == null || integerId == null)
            {
                return(null);
            }

            T result = Core.Revit.Query.Element <T>(document, integerId);

            if (result != null)
            {
                return(result);
            }

            if (!integerId.TryGetValue(RevitIdParameter.Location, out ISAMGeometry3D sAMGeometry))
            {
                return(null);
            }

            List <Element> elements = null;

            if (integerId.TryGetValue(Core.Revit.RevitIdParameter.CategoryId, out int categoryId) && categoryId != -1)
            {
                BuiltInCategory builtInCategory = (BuiltInCategory)categoryId;

                elements = new FilteredElementCollector(document).OfCategory(builtInCategory).ToList();
            }

            return(Find <T>(elements, sAMGeometry, min, max));
        }
Пример #2
0
        public static T Element <T>(this Document document, IntegerId integerId, bool includeName = false) where T : Element
        {
            if (integerId == null || document == null)
            {
                return(null);
            }

            T result = null;

            ElementId elementId = integerId.ElementId();

            if (elementId != null && elementId != Autodesk.Revit.DB.ElementId.InvalidElementId)
            {
                result = document.GetElement(elementId) as T;
            }

            if (result == null)
            {
                string uniqueId = integerId.UniqueId();
                if (!string.IsNullOrWhiteSpace(uniqueId))
                {
                    result = document.GetElement(uniqueId) as T;
                }
            }

            if (result == null && includeName)
            {
                if (integerId.TryGetValue(RevitIdParameter.FullName, out string fullName) && !string.IsNullOrWhiteSpace(fullName))
                {
                    BuiltInCategory?builtInCategory = integerId.BuiltInCategory();
                    if (builtInCategory != null && builtInCategory.HasValue && builtInCategory.Value != Autodesk.Revit.DB.BuiltInCategory.INVALID)
                    {
                        List <Element> elements = new FilteredElementCollector(document).OfCategory(builtInCategory.Value).ToList();
                        if (elements != null)
                        {
                            foreach (Element element in elements)
                            {
                                T t = element as T;
                                if (t == null)
                                {
                                    continue;
                                }

                                string fullName_Element = FullName(t);
                                if (fullName.Equals(fullName_Element))
                                {
                                    return(t);
                                }
                            }
                        }
                    }
                }
            }

            return(result);
        }
Пример #3
0
        public static string UniqueId(this IntegerId integerId)
        {
            if (integerId == null)
            {
                return(null);
            }

            if (!integerId.TryGetValue(RevitIdParameter.UniqueId, out string result))
            {
                return(null);
            }

            return(result);
        }