/* ============================================================================== * 功能描述:单位检查 * 创 建 者:Garrett * 创建日期:2018/10/23 15:08:55 * ==============================================================================*/ using System; using System.Linq; using Autodesk.Revit.DB; using NPOI.SS.UserModel; using SAGA.DotNetUtils.Others; namespace Saga.PlugIn.ModelCheck { /// /// UnitCheck /// [ParseIndex(Index = 3)] class UnitCheck : ModeCheckBase { public UnitCheck() { Name = "项目长度单位检查"; } public override bool Check() { if (!RBase.IsRight) { IsRight = RBase.IsRight; return IsRight; } bool unitResult = true; foreach (SagaSignCheckResult signResult in RBase.Results) { var ismmUnit = IsLengthMMUnit(signResult.RDocument); var unitItem = new UnitCheckResult() { RBase = signResult }; Results.Add(unitItem); unitItem.IsRight = ismmUnit; if (!ismmUnit) { unitItem.RMessage = "单位异常,请修改长度单位为毫米(mm)"; unitResult = ismmUnit; } } IsRight = Results.All(t => t.IsRight); ; return IsRight; } /// /// 判断长度单位是否为毫米 /// /// public static bool IsLengthMMUnit(Document doc) { var units = doc.GetUnits(); var formatOptions = units.GetFormatOptions(UnitType.UT_Length); return formatOptions.DisplayUnits == DisplayUnitType.DUT_MILLIMETERS; } //[DataCheckProcessAspect] public override void Export() { IWorkbook book = DCRExport.GetWorkbook(); try { //ISheet sheet = book.CreateSheet(Name); ISheet sheet = book.GetSheet(Name); #region 添加数据 int index = 3; IRow rowF = null; foreach (var result in Results) { index++; DataCheckNPOIStyle style = result.IsRight ? DataCheckNPOIStyle.Content : DataCheckNPOIStyle.Error; IRow rowN = sheet.CreateRow(index); SagaSignCheckResult rbase = result.RBase as SagaSignCheckResult; if (rbase == null) continue; int j = -1; string rowN4 = result.IsRight ? "通过" : "不通过"; rowN.AddCell(++j, rowN4, style); rowN.AddCell(++j, result.RMessage, style); } #endregion } catch (Exception e) { MessageShowBase.Show(e); } } } /// /// UnitCheckResult /// class UnitCheckResult : ModeCheckResultBase { } }