123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- /*-------------------------------------------------------------------------
- * 功能描述:FloorCheckItem
- * 作者:xulisong
- * 创建时间: 2019/2/28 11:53:22
- * 版本号:v1.0
- * -------------------------------------------------------------------------*/
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using Autodesk.Revit.DB;
- using SAGA.DotNetUtils.Extend;
- using SAGA.DotNetUtils.Utilities;
- using SAGA.RevitUtils.Extends;
- using SAGA.RevitUtils.MEP;
- namespace SAGA.GplotRelationComputerManage.SystemChecks
- {
- /// <summary>
- /// 每层检测结果
- /// </summary>
- public class FloorCheckItem
- {
- #region 构造函数
- /// <summary>
- /// 初始化解析类
- /// </summary>
- /// <param name="doc"></param>
- public FloorCheckItem(Document doc)
- {
- Document = doc;
- }
- #endregion
- #region 属性相关
- /// <summary>
- /// 关联模型信息
- /// </summary>
- public Document Document { get; private set; }
- /// <summary>
- /// 使用关联标高
- /// </summary>
- public Level UseLevel { get; private set; }
- #endregion
- #region 解析方法
- public void Parse(GplotSystemCheckContext context)
- {
- var doc = Document;
- var relations = context.Relations;
- foreach (var relation in relations)
- {
- var shell = context.RelationShells.GetItem(relation);
- ParseSystem(context, shell, shell.IsPipeSystem() ? Domain.DomainPiping : Domain.DomainHvac);
- }
- }
- private void ParseSystem(GplotSystemCheckContext context, RelationTypeShell shell, Domain domain)
- {
- SystemCheckReportItem reportItem = new SystemCheckReportItem();
- reportItem.FloorId = Document.PathName.GetFileName();
- reportItem.GplotType = shell.RelationItem.Type;
- reportItem.BuildingTime = TimeUtil.ToDbString(DateTime.Now);
- #region 测试
- //reportItem.FloorId = Document.PathName.GetFileName();
- //reportItem.GplotType = shell.RelationItem.Type;
- //reportItem.BuildingTime = DateTime.Now.ToString("yyyyMMddHHmmss");
- //for (int i = 0; i < 30; i++)
- //{
- // SystemCheckResultItem item = new SystemCheckResultItem();
- // item.BimId = i.ToString();
- // item.SystemName = "循环供水";
- // item.FlowDirection = "位置";
- // item.IsCorrected = false;
- // item.IsMisinformation = false;
- // item.ErrorCode = "00" + (i % 3 + 1);//ErrorCodeUtil.GetErrorDescription("00" + (i % 3 + 1));
- // reportItem.ResultItems.Add(item);
- //}
- #endregion
- var elements = Document.FilterElements<MEPCurve>().Where(p => shell.IsMatchSystem(p.GetSystemTypeName())).ToList();
- foreach (var element in elements)
- {
- SystemCheckResultItem item = new SystemCheckResultItem();
- item.BimId = element.Id.ToString();
- item.SystemName = element.GetSystemTypeName();
- item.FlowDirection = "未知";
- item.IsCorrected = false;
- item.IsMisinformation = false;
- var connectors = element.GetConnectors(domain);
- if (SystemCalcUtil.IsStart(element))
- {
- //标记立管,所有连接点都未记录则删除
- //if (!connectors.Any(c => c.IsConnected))
- //{
- // item.ErrorCode = "001";
- // reportItem.ResultItems.Add(item);
- //}
- continue;
- }
- if (connectors.Any(c => !c.IsConnected))
- {
- item.ErrorCode = "001";
- reportItem.ResultItems.Add(item);
- continue;
- }
- var endElements = element.GetFirstElements(null,e=>e is MEPCurve|| MBIInfoUtil.IsEquipment(e));
- List<MEPCurve> curves = endElements.OfType<MEPCurve>().ToList();
- foreach (var mepCurve in curves)
- {
- if (item.SystemName != mepCurve.GetSystemTypeName())
- {
- item.ErrorCode = "002";
- reportItem.ResultItems.Add(item);
- break;
- }
- }
- }
- context.ReportItems.Add(reportItem);
- }
- #endregion
- }
- }
|