Browse Source

mxg:添加xyz坐标重叠检查

mengxiangge 5 years ago
parent
commit
56284241a6

+ 2 - 0
Executer/DataCheck/DataCheck.Mode/ConnectorCheck.cs

@@ -98,6 +98,8 @@ namespace ServiceRevitLib.Mode
             var code = element.GetFamilyCode();
             var defineConType = GetDefineConType(code);
             if (defineConType == null) return null;
+            var type= code.Length == 4 ? ElementRangeCheck.DCElementType.Equipment : ElementRangeCheck.DCElementType.EuipmentPart;
+            result.Type = type.GetDescription();
             result.FamilyName = element.GetFamilyName();
             result.Id = element.Id.ToString();
             result.Result = ResultState.Success;

+ 5 - 0
Executer/DataCheck/DataCheck.Mode/ConnectorCheckResult.cs

@@ -19,5 +19,10 @@ namespace ServiceRevitLib.Mode
         /// 族名称
         /// </summary>
         public string FamilyName { get; set; }
+
+        /// <summary>
+        /// 构件类型
+        /// </summary>
+        public string Type { get; set; }
     }
 }

+ 1 - 1
Executer/DataCheck/DataCheck.Mode/EquipPartLocationCheck.cs

@@ -44,8 +44,8 @@ namespace ServiceRevitLib.Mode
                     }
                     else
                     {
-                        result.RefId = partParent.Id.ToString();
                         result.Result = ResultState.Success;
+                        result.ResultMsg = $"关联设备的id为{partParent.Id}";
                     }
                     Content.Add(result);
                 }

+ 0 - 4
Executer/DataCheck/DataCheck.Mode/EquipPartLocationCheckResult.cs

@@ -19,9 +19,5 @@ namespace ServiceRevitLib.Mode
         /// 部件族名称
         /// </summary>
         public string PartFamilyName { get; set; }
-        /// <summary>
-        /// 关联设备id
-        /// </summary>
-        public string RefId { get; set; }
     }
 }

+ 0 - 70
Executer/DataCheck/DataCheck.Mode/InstanceLocationOverlapCheck.cs

@@ -1,70 +0,0 @@
-/* ==============================================================================
- * 功能描述:xyz坐标重叠检查
- * 创 建 者:Garrett
- * 创建日期:2018/10/23 15:08:55
- * ==============================================================================*/
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using Autodesk.Revit.DB;
-using NPOI.SS.UserModel;
-using SAGA.DotNetUtils.Others;
-using SAGA.RevitUtils;
-using SAGA.RevitUtils.Extends;
-using ServiceRevitLib.Extend;
-using ServiceRevitLib.Mode;
-
-namespace Saga.PlugIn.ModelCheck
-{
-    /// <summary>
-    /// 
-    /// </summary>
-    class InstanceLocationOverlapCheck : CheckBase
-    {
-        public InstanceLocationOverlapCheck()
-        {
-        }
-        
-        public override void Check()
-        {
-            var doc = m_Doc;
-            var instances = doc.GetFamilyInstances();
-            var groups = instances.GroupBy(t => t.GetLocationPoint(), new XyzEqualComparer(0.01d));
-            foreach (var group in groups)
-            {
-                var key = group.Key;
-                if (key == null) continue;
-                var list = group.ToList();
-                if (list.Count == 1) continue;
-                var fi = list.FirstOrDefault();
-                var result = GetCheckResult(fi);
-                list.Remove(fi);
-                if (result == null) continue;
-
-                result.ResultMsg = $"与{string.Join(",", list.Select(t => t.Id.ToString()))}的坐标发生重叠,请检查";
-                Content.Add(result);
-            }
-        }
-        /// <summary>
-        /// 获取检测结果
-        /// </summary>
-        /// <param name="fi"></param>
-        /// <returns></returns>
-        private InstanceLocationOverlapCheckResult GetCheckResult(Element fi)
-        {
-            var result = new InstanceLocationOverlapCheckResult(){ Result = ResultState.Failure };
-            result.Id = fi.Id.ToString();
-            result.FamilyName = fi.GetFamilyName();
-            return result;
-        }
-        
-    }
-
-    class InstanceLocationOverlapCheckResult : ResultBase
-    {
-        public string FamilyName { get; set; }
-
-        public string Id { get; set; }
-    }
-}

+ 77 - 0
Executer/DataCheck/DataCheck.Mode/XYZOverlapCheck.cs

@@ -0,0 +1,77 @@
+/* ==============================================================================
+ * 功能描述:xyz坐标重叠检查
+ * 创 建 者:Garrett
+ * 创建日期:2018/10/23 15:08:55
+ * ==============================================================================*/
+
+using System;
+using System.Linq;
+using Autodesk.Revit.DB;
+using NPOI.SS.UserModel;
+using SAGA.DotNetUtils.Others;
+using SAGA.RevitUtils;
+using SAGA.RevitUtils.Extends;
+using ServiceRevitLib.Extend;
+using ServiceRevitLib.Mode;
+
+namespace ServiceRevitLib.DataCheck.Mode
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    class XYZOverlapCheck : CheckBase
+    {
+        public override void Check()
+        {
+            try
+            {
+                base.Check();
+
+                #region
+
+                var doc = m_Doc;
+                var instances = doc.GetFamilyInstances();
+                var groups = instances.GroupBy(t => t.GetLocationPoint(), new XyzEqualComparer(0.01d));
+                foreach (var group in groups)
+                {
+                    var key = group.Key;
+                    if (key == null) continue;
+                    var list = group.ToList();
+                    if (list.Count == 1) continue;
+                    var fi = list.FirstOrDefault();
+                    var result = GetCheckResult(fi);
+                    list.Remove(fi);
+                    if (result == null) continue;
+
+                    result.ResultMsg = $"与{string.Join(",", list.Select(t => t.Id.ToString()))}的坐标发生重叠,请检查";
+                    Content.Add(result);
+                }
+                #endregion
+            }
+            catch (Exception e)
+            {
+                Result = ResultState.Failure;
+                ResultMsg = $"{e.Message}\r\n{e.StackTrace}";
+            }
+        }
+        /// <summary>
+        /// 获取检测结果
+        /// </summary>
+        /// <param name="fi"></param>
+        /// <returns></returns>
+        private XYZOverlapCheckResult GetCheckResult(Element fi)
+        {
+            var result = new XYZOverlapCheckResult(){ Result = ResultState.Failure};
+            result.Id = fi.Id.ToString();
+            result.FamilyName = fi.GetFamilyName();
+            return result;
+        }
+    }
+
+    class XYZOverlapCheckResult : ResultBase
+    {
+        public string FamilyName { get; set; }
+
+        public string Id { get; set; }
+    }
+}

BIN
Executer/DataCheck/DataCheckResource/模型检查结果输出格式-模版.xlsx


+ 1 - 1
Executer/DataCheck/ServiceDataCheck.csproj

@@ -79,7 +79,7 @@
     <Compile Include="CheckFactory.cs" />
     <Compile Include="Common\MBIConst.cs" />
     <Compile Include="Common\RegexConstPattern.cs" />
-    <Compile Include="DataCheck.Mode\InstanceLocationOverlapCheck.cs" />
+    <Compile Include="DataCheck.Mode\XYZOverlapCheck.cs" />
     <Compile Include="DataCheck.Mode\PipeCheck.cs" />
     <Compile Include="DataCheck.Mode\PipeCheckResult.cs" />
     <Compile Include="Extend\DocExtend.cs" />

+ 1 - 1
Executer/DataCheck/TestCommand.cs

@@ -26,7 +26,7 @@ namespace ServiceRevitLib
             try
             {
                 var factory = new CheckFactory();
-                factory.SetCheckItems("SagaCheck,UnitCheck,FamilyNameCheck,EquipPartLocationCheck,ColumnCheck,ElementRangeCheck,ConnectorCheck,SystemNameCheck,EquipInSpaceCheck,SystemReferEquipCheck,ParameterIntegrityCheck,PipeCheck");
+                factory.SetCheckItems("SagaCheck,UnitCheck,FamilyNameCheck,EquipPartLocationCheck,ColumnCheck,ElementRangeCheck,ConnectorCheck,SystemNameCheck,EquipInSpaceCheck,SystemReferEquipCheck,ParameterIntegrityCheck,PipeCheck,XYZOverlapCheck");
                 factory.Check(doc);
                 result = Serialze(factory);
                 string fileName = DateTime.Now.ToString("yyyyMMddHHmmss");

+ 3 - 1
Executer/DataExport/RevitToJBim/ComponentParse/ParseSpace.cs

@@ -57,7 +57,9 @@ namespace RevitToJBim.ComponentParse
 
             //Parameters
             bimObject.Parameters = RevitUtil.GetSpaceParameters(space);
-            var segments = space.GetBoundarySegments(new SpatialElementBoundaryOptions());
+            var options = new SpatialElementBoundaryOptions();
+            options.SpatialElementBoundaryLocation = SpatialElementBoundaryLocation.Finish;
+            var segments = space.GetBoundarySegments(options);
             if (segments != null)
             {
                 foreach (IList<BoundarySegment> segmentList in segments)

+ 2 - 2
Starter/Starter/Program.cs

@@ -38,8 +38,8 @@ namespace ExportStart
             {
                 command = "DataExport";
                 //command = "DataCheck";
-                path = @"E:\导出测试\testR17.rvt";
-                path = @"E:\导出测试\拓扑图-计算示例\B2.rvt";
+                path = @"E:\导出测试\testSpace.rvt";
+                path = @"E:\导出测试\徐州系统图模型1127\冷源系统图模型第一版V1128 .rvt";
                 JObject jObject=new JObject();
                 jObject.Add("ResultFileName", @"C:\Users\SAGACLOUD\AppData\Local\RevitService\Result_e26be2fd-2097-462b-bdd0-a2a86b616928.txt");
                 param = jObject.ToString();