From e358beb08f5be49703009b64f058ecfbcfeefbd9 Mon Sep 17 00:00:00 2001
From: qin <a@163.com>
Date: 星期六, 28 九月 2024 14:27:52 +0800
Subject: [PATCH] 测试standard2.1

---
 HStation.RevitDev/RevitDataExport/Service/RevitMepElementService.cs |  315 +++++++++++++++++++++++++++-------------------------
 1 files changed, 165 insertions(+), 150 deletions(-)

diff --git a/HStation.RevitDev/RevitDataExport/Service/RevitMepElementService.cs b/HStation.RevitDev/RevitDataExport/Service/RevitMepElementService.cs
index c41c0de..35fc267 100644
--- a/HStation.RevitDev/RevitDataExport/Service/RevitMepElementService.cs
+++ b/HStation.RevitDev/RevitDataExport/Service/RevitMepElementService.cs
@@ -1,150 +1,165 @@
-锘縰sing Autodesk.Revit.DB;
-using Autodesk.Revit.DB.Electrical;
-using Autodesk.Revit.DB.Mechanical;
-using Autodesk.Revit.DB.Plumbing;
-using Glodon.Revit.Utility;
-using HStation.RevitDev.RevitDataExport.Common;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-
-namespace HStation.RevitDev.RevitDataExport.Service
-{
-    public class RevitMepElementService
-    {
-        public static IEnumerable<Element> GetSubElements(MEPSystem system)
-        {
-            var elements = new List<Element>();
-            if (system is ElectricalSystem elecSystem)
-            {
-
-            }
-            else if (system is MechanicalSystem mechSystem)
-            {
-
-            }
-            else if (system is PipingSystem pipeSystem)
-            {
-                var network = pipeSystem.PipingNetwork;
-                foreach (Element subElem in network)
-                {
-                    elements.Add(subElem);
-                } 
-            }
-            else
-            {
-                
-            }
-            return elements;
-        }
-
-        public static List<ElementId> GetSubElementIds(MEPSystem system)
-        {
-            var elements = GetSubElements(system);
-            var elemIds = elements.Select(x => x.Id).ToList();
-            return elemIds;
-        }
-
-        public static List<Element> GetSubElements(MEPSystemType systemType)
-        {
-            var systemIds = systemType.GetDependentElements(new ElementClassFilter(typeof(PipingSystem),false));
-            var elements = new List<Element>();
-            foreach (var systemId in systemIds)
-            {
-                var system = systemType.Document.GetElement(systemId) as PipingSystem;
-                if (system == null) { continue; }
-                elements.AddRange(GetSubElements(system));
-            }
-            return elements;
-        }
-
-        public static List<Element> GetSubElements(Document doc, string sysTypeName)
-        {
-            var pipingSystems = new FilteredElementCollector(doc)
-                   .OfClass(typeof(MEPSystem))
-                   .Where(x => x != null && x is PipingSystem && x.Id != ElementId.InvalidElementId && sysTypeName.Any(y => x.Name.Contains(y + " ")))
-                   .OfType<PipingSystem>()
-                   .ToList();
-            var elems = new List<Element>();
-            foreach (var system in pipingSystems)
-            {
-                if (system.PipingNetwork.Size > 0)
-                {
-                    foreach (Element elem in system.PipingNetwork)
-                    {
-                        elems.Add(elem);
-                    }
-                }
-                try
-                {
-                    if (system.Elements.Size > 0)
-                    {
-                        foreach (Element elem in system.Elements)
-                        {
-                            if (elems.Any(x => x.Id.IntegerValue == elem.Id.IntegerValue))
-                            {
-                                continue;
-                            }
-                            elems.Add(elem);
-                        }
-                    }
-                }
-                catch (Exception)
-                {
-                    continue;
-                }
-            }
-            return elems;
-        }
-
-        public static List<Element> GetElements(Document doc, string sysTypeName)
-        {
-            var elems = new List<Element>();
-            if (doc == null || string.IsNullOrEmpty(sysTypeName)) { return elems; }
-
-            elems = GetElementsByPipeSystemTypeName(doc, sysTypeName);
-            return elems;
-        }
-
-        private static List<Element> GetElementsByPipeSystemTypeName(Document doc, string sysTypeName)
-        {
-            var result = new List<Element>();
-            List<Element> instances = GetInstanceAndPipes(doc);
-            foreach (var instance in instances)
-            {
-                var id = instance.Id.IntegerValue;
-                if (id == 3396216)
-                {
-
-                }
-                var systemType = ParameterOperator.GetElementPipingSystemType(instance);
-                if (systemType != null && systemType.Name == sysTypeName)
-                {
-                    result.Add(instance);
-                }
-            }
-            return result;
-        }
-
-        private static List<Element> FamilyInstanceAndPipesCache = null;
-        private static List<Element> GetInstanceAndPipes(Document doc)
-        {
-            if (FamilyInstanceAndPipesCache != null)
-            {
-                return FamilyInstanceAndPipesCache;
-            }
-            var cates = doc.Settings.Categories;
-            var itor = cates.GetEnumerator();
-            var categories = new List<Category>();
-            while (itor.MoveNext())
-            {
-                var cate = itor.Current as Category;
-                categories.Add(cate);
-            }
-            var types = new List<Type> { typeof(FamilyInstance), typeof(Pipe) };
-            var instances = ElementUtil.GetElements(types, isModel: true, categories: categories);
-            FamilyInstanceAndPipesCache = instances;
-            return instances;
-        }
-    }
-}
+锘縰sing Autodesk.Revit.DB;
+using Autodesk.Revit.DB.Electrical;
+using Autodesk.Revit.DB.Mechanical;
+using Autodesk.Revit.DB.Plumbing;
+using Glodon.Revit.Utility;
+using HStation.RevitDev.Model.ModelEnum;
+using HStation.RevitDev.RevitDataExport.Common;
+using HStation.RevitDev.RevitDataExport.Entity;
+using HStation.RevitDev.RevitDataExport.Utility;
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+
+namespace HStation.RevitDev.RevitDataExport.Service
+{
+    public class RevitMepElementService
+    {
+        public static IEnumerable<Element> GetSubElements(MEPSystem system)
+        {
+            var elements = new List<Element>();
+            if (system is ElectricalSystem elecSystem)
+            {
+
+            }
+            else if (system is MechanicalSystem mechSystem)
+            {
+
+            }
+            else if (system is PipingSystem pipeSystem)
+            {
+                var network = pipeSystem.PipingNetwork;
+                foreach (Element subElem in network)
+                {
+                    elements.Add(subElem);
+                } 
+            }
+            else
+            {
+                
+            }
+            return elements;
+        }
+
+        public static List<ElementId> GetSubElementIds(MEPSystem system)
+        {
+            var elements = GetSubElements(system);
+            var elemIds = elements.Select(x => x.Id).ToList();
+            return elemIds;
+        }
+
+        public static List<Element> GetSubElements(MEPSystemType systemType)
+        {
+            var systemIds = systemType.GetDependentElements(new ElementClassFilter(typeof(PipingSystem),false));
+            var elements = new List<Element>();
+            foreach (var systemId in systemIds)
+            {
+                var system = systemType.Document.GetElement(systemId) as PipingSystem;
+                if (system == null) { continue; }
+                elements.AddRange(GetSubElements(system));
+            }
+            return elements;
+        }
+
+        public static List<Element> GetSubElements(Document doc, string sysTypeName)
+        {
+            var pipingSystems = new FilteredElementCollector(doc)
+                   .OfClass(typeof(MEPSystem))
+                   .Where(x => x != null && x is PipingSystem && x.Id != ElementId.InvalidElementId && sysTypeName.Any(y => x.Name.Contains(y + " ")))
+                   .OfType<PipingSystem>()
+                   .ToList();
+            var elems = new List<Element>();
+            foreach (var system in pipingSystems)
+            {
+                if (system.PipingNetwork.Size > 0)
+                {
+                    foreach (Element elem in system.PipingNetwork)
+                    {
+                        elems.Add(elem);
+                    }
+                }
+                try
+                {
+                    if (system.Elements.Size > 0)
+                    {
+                        foreach (Element elem in system.Elements)
+                        {
+                            if (elems.Any(x => x.Id.IntegerValue == elem.Id.IntegerValue))
+                            {
+                                continue;
+                            }
+                            elems.Add(elem);
+                        }
+                    }
+                }
+                catch (Exception)
+                {
+                    continue;
+                }
+            }
+            return elems;
+        }
+
+        public static List<Element> GetElements(Document doc, string sysTypeName)
+        {
+            var elems = new List<Element>();
+            if (doc == null || string.IsNullOrEmpty(sysTypeName)) { return elems; }
+
+            elems = GetElementsByPipeSystemTypeName(doc, sysTypeName);
+            return elems;
+        }
+
+        private static List<Element> GetElementsByPipeSystemTypeName(Document doc, string sysTypeName)
+        {
+            var result = new List<Element>();
+            List<Element> instances = GetInstanceAndPipes(doc);
+            foreach (var instance in instances)
+            {
+                var id = instance.Id.IntegerValue;
+                if (id == 3396216)
+                {
+
+                }
+                var systemType = ParameterOperator.GetElementPipingSystemType(instance);
+                if (systemType != null && systemType.Name == sysTypeName)
+                {
+                    result.Add(instance);
+                }
+            }
+            return result;
+        }
+
+        private static List<Element> FamilyInstanceAndPipesCache = null;
+        private static List<Element> GetInstanceAndPipes(Document doc)
+        {
+            if (FamilyInstanceAndPipesCache != null)
+            {
+                return FamilyInstanceAndPipesCache;
+            }
+            var cates = doc.Settings.Categories;
+            var itor = cates.GetEnumerator();
+            var categories = new List<Category>();
+            while (itor.MoveNext())
+            {
+                var cate = itor.Current as Category;
+                categories.Add(cate);
+            }
+            var types = new List<Type> { typeof(FamilyInstance), typeof(Pipe) };
+            var instances = ElementUtil.GetElements(types, isModel: true, categories: categories);
+            FamilyInstanceAndPipesCache = instances;
+            return instances;
+        }
+
+        public static List<string> GetElementModels(RevitType type)
+        {
+            List<string> ret = new List<string>();
+            if (!GlobalResource.RevitModels.ContainsKey(type)) { return ret; }
+            var doc = GlobalResource.CurrentDocument;
+            var dict = GlobalResource.RevitModels.Find(x=>x.Item1 == doc.Title)?.Item2;
+            if (dict == null) { return ret; }
+
+            return dict[type];
+        }
+    }
+}

--
Gitblit v1.9.3