123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- /* ==============================================================================
- * 功能描述:SagaCheck
- * 创 建 者:Garrett
- * 创建日期:2019/6/11 16:09:09
- * ==============================================================================*/
- using System;
- using System.Linq;
- using System.Text.RegularExpressions;
- using Autodesk.Revit.DB;
- using SAGA.DotNetUtils.Extend;
- using ServiceRevitLib.Common;
- using SAGA.RevitUtils.Extends;
- namespace ServiceRevitLib.Mode
- {
- /// <summary>
- /// SagaCheck
- /// </summary>
- class SagaCheck : CheckBase
- {
- public override void Check()
- {
- base.Check();
- #region
- string resultMsg = null;
- ResultState resultState = 0;
- string planName = "";
- //判断是否存在Saga标记
- var document = m_Doc;
- var sagaPlans = document.GetElements<ViewPlan>()
- .Where(t => t.ViewType == ViewType.FloorPlan && t.Name.Contains("-saga")).ToList();
- if (sagaPlans.Count == 0)
- {
- resultState = ResultState.Failure;
- resultMsg = "缺少saga标记";
- }
- else if (sagaPlans.Count() >= 2)
- {
- resultState = ResultState.Failure;
- resultMsg = "有多个saga标记";
- }
- else
- {
- //只有一个saga标记
- var sagaPlan = sagaPlans.FirstOrDefault();
- if (sagaPlan != null)
- {
- planName = sagaPlan.Name;
- //打标记的楼层名称必需为指定格式;B1,B1M,F1,F1M,RFM,RF
- if (Regex.IsMatch(planName, $"{RegexConstPattern.IsMBIView}"))
- {
- var rfLevel = document.GetLevels().FirstOrDefault(t =>
- System.Text.RegularExpressions.Regex.IsMatch(t.Name, $"{RegexConstPattern.IsRF}"));
- if (rfLevel == null)
- {
- resultState = ResultState.Failure;
- resultMsg = $"缺少RF标高";
- }
- else
- {
- if (rfLevel.Elevation.IsThanEq(sagaPlan.GenLevel.Elevation))
- {
- resultState = ResultState.Success;
- }
- else
- {
- resultState = ResultState.Failure;
- resultMsg = $"RF标高的位置不正确,请检查";
- }
- }
- }
- else
- {
- resultState = ResultState.Failure;
- resultMsg = $"楼层 {planName} 不符合楼层命名规范";
- }
- }
- }
- Content.Add(new SagaCheckResult() {PlanName = planName, Result = resultState, ResultMsg = resultMsg});
- #endregion
- }
- }
- }
|