/* ============================================================================== * 功能描述:xyz坐标重叠检查 * 创 建 者:Garrett * 创建日期:2018/10/23 15:08:55 * ==============================================================================*/ using System; using System.Linq; using Autodesk.Revit.DB; using SAGA.RevitUtils; using SAGA.RevitUtils.Extends; using ServiceRevitLib.Extend; using ServiceRevitLib.Mode; namespace ServiceRevitLib.DataCheck.Mode { /// /// /// class XYZOverlapCheck : CheckBase { public override void Check() { try { base.Check(); #region var doc = m_Doc; var instances = doc.GetFamilyInstances().Where(t=>t.GetLocationPoint()!=null); 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}"; Result = ResultState.Success; ResultMsg = $""; } } /// /// 获取检测结果 /// /// /// 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; } } }