Selaa lähdekoodia

mxg:优化取Outline速度

mengxiangge 5 vuotta sitten
vanhempi
commit
c68d6accb9

+ 5 - 2
Executer/DataExport/RevitToJBim/ComponentParse/ParsePipe.cs

@@ -63,8 +63,11 @@ namespace RevitToJBim.ComponentParse
             var pipeId = pipe.Id.ToString();
             try
             {
-                var systemTypeName = pipe.Document.GetElement(pipe.MEPSystem.GetTypeId());
-                jPipe.MepSystemTypeName = systemTypeName.Name;
+                if (pipe.MEPSystem != null)
+                {
+                    var systemTypeName = pipe.Document.GetElement(pipe.MEPSystem.GetTypeId());
+                    jPipe.MepSystemTypeName = systemTypeName.Name;
+                }
             }
             catch (Exception e)
             {

+ 25 - 4
Executer/DataExport/RevitToJBim/Extension/SpaceExtension.cs

@@ -89,6 +89,27 @@ namespace RevitToJBim.Extension
             return space.Level?.Id == useViewId.GenLevel?.Id;
         }
 
+        private static string m_DocTitle;
+        private static List<Tuple<Curve, Wall>> m_wallTuples=new List<Tuple<Curve, Wall>>();
+        /// <summary>
+        /// 缓存墙线数组
+        /// </summary>
+        /// <param name="doc"></param>
+        /// <returns></returns>
+        private static List<Tuple<Curve, Wall>> GetWallTuples(Document doc)
+        {
+            var title = doc.GetPathNameOrTitle();
+            if (m_DocTitle != title)
+            {
+                m_DocTitle = title;
+                var allWalls = doc.GetElements<Wall>();
+                var tupleWalls = allWalls
+                    .Select(t => new Tuple<Curve, Wall>(t.GetLocationCurve(), t)).ToList();
+                m_wallTuples = tupleWalls;
+            }
+
+            return m_wallTuples;
+        }
 
         /// <summary>
         /// 获取空间的外轮廓
@@ -106,9 +127,10 @@ namespace RevitToJBim.Extension
                 Document doc = space.Document;
                 double tolerance = doc.Application.ShortCurveTolerance;
 
-                var allWalls = doc.GetElements<Wall>();
-                var tupleWalls = allWalls
-                    .Select(t => new Tuple<Curve, Wall>(t.GetLocationCurve(), t)).ToList();
+                //var allWalls = doc.GetElements<Wall>();
+                //var tupleWalls = allWalls
+                //    .Select(t => new Tuple<Curve, Wall>(t.GetLocationCurve(), t)).ToList();
+                var tupleWalls = GetWallTuples(doc);
                 foreach (var segment in segments)
                 {
                     #region 取外轮廓的点
@@ -187,7 +209,6 @@ namespace RevitToJBim.Extension
             catch (Exception e)
             {
                 Console.WriteLine(e);
-                throw;
             }
 
             return outlines;

+ 1 - 1
Starter/Starter/Program.cs

@@ -40,7 +40,7 @@ namespace ExportStart
                 //command = "DataCheck";
                 path = @"E:\导出测试\testSpace.rvt";
                 path = @"E:\导出测试\系统图修改编码版\冷源系统图模型第一版V1129 .rvt";
-                path = @"C:\Users\SAGACLOUD\Desktop\新建文件夹\展示中心机电模型第二版V1208.rvt";
+                path = @"C:\Users\SAGACLOUD\Desktop\新建文件夹\b2-1964209.rvt";
                 JObject jObject=new JObject();
                 jObject.Add("ResultFileName", @"C:\Users\SAGACLOUD\AppData\Local\RevitService\Result_e26be2fd-2097-462b-bdd0-a2a86b616928.txt");
                 param = jObject.ToString();