/* ==============================================================================
* 功能描述:单位检查
* 创 建 者: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
{
}
}