123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- /* ==============================================================================
- * 功能描述:编码检查
- * 创 建 者:Garrett
- * 创建日期:2018/10/23 15:08:55
- * ==============================================================================*/
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Linq;
- using Autodesk.Revit.DB;
- using NPOI.SS.UserModel;
- using SAGA.DotNetUtils.Extend;
- using SAGA.DotNetUtils.Others;
- using SAGA.RevitUtils.Extends;
- using SAGA.RevitUtils.MEP;
- namespace Saga.PlugIn.ModelCheck
- {
- /// <summary>
- /// UnitCheck
- /// </summary>
- [ParseIndex(Index = 4)]
- class FamilyNameCheck : ModeCheckBase
- {
- public FamilyNameCheck()
- {
- Name = "设备族编码检查";
- RSPecificationSheet.Add("参考-revit分类");
- }
-
- public override bool Check()
- {
- if (!RBase.IsRight)
- {
- IsRight = RBase.IsRight;
- return IsRight;
- }
- IsRight = FamilyNameCodeCheck();
- return IsRight;
- }
- /// <summary>
- /// 族名称编码规范检查
- /// </summary>
- /// <returns></returns>
- private bool FamilyNameCodeCheck()
- {
- bool unitResult = true;
- var ccategories = DataCheckRule.GetCodeCheckCategories();
- foreach (SagaSignCheckResult signResult in RBase.Results)
- {
- var document = signResult.RDocument;
- var categories = document.Settings.Categories;
- foreach (DCR_CodeCheckCategory ccategory in ccategories)
- {
- try
- {
- var category = categories.get_Item(ccategory.Name);
- if (category == null) continue;
- BuiltInCategory builtInCategory = (BuiltInCategory)category.Id.IntegerValue;
- var elements = document.GetElements<FamilyInstance>(builtInCategory);
- var groupByFamily = elements.GroupBy(t => t.GetFamilyName());
- foreach (IGrouping<string, FamilyInstance> grouping in groupByFamily)
- {
- var subElements = grouping.ToList();
- var subElement = subElements.FirstOrDefault();
- if (subElement is FamilyInstance fi)
- {
- var result = GetCheckResult(fi) as FamilyNameCheckResult;
- if (result == null) continue;
- result.RBase = signResult;
- //由于数量太多,只显示族名称
- Results.Add(result);
- }
- }
- }
- catch (Exception e)
- {
- Console.WriteLine(e);
- }
- }
- }
- var list = Results.ToList();
- list.Sort(new CommonComparer<ModeCheckResultBase>((x, y) => { return x.IsRight.CompareTo(y.IsRight); }));
- Results =new ObservableCollection<ModeCheckResultBase>(list);
- return Results.All(t => t.IsRight);
- }
- /// <summary>
- /// 获取检测结果
- /// </summary>
- /// <param name="fi"></param>
- /// <returns></returns>
- private ModeCheckResultBase GetCheckResult(FamilyInstance fi)
- {
- var result = new FamilyNameCheckResult();
- result.FamilyName = fi.GetFamilyName();
- if (fi.IsEquipment())
- {
- result.IsRight = true;
- result.Type = DCElementType.Equipment;
- }
- else if (fi.IsEquipmentPart())
- {
- result.IsRight = true;
- result.Type = DCElementType.EuipmentPart;
- }
- else if (fi.IsBeacon())
- {
- result.IsRight = true;
- result.Type = DCElementType.Beacon;
- }
- else
- {
- result.IsRight = false;
- result.Type = DCElementType.None;
- result.RMessage = "请检查族名称编码是否符合要求";
- }
- return result;
- }
-
- public override void Export()
- {
- try
- {
- IWorkbook book = DCRExport.GetWorkbook();
- //ISheet sheet = book.CreateSheet(Name);
- ISheet sheet = book.GetSheet(Name);
- #region 添加数据
- int index = 3;
- foreach (FamilyNameCheckResult result in Results)
- {
- //全部显示
- //if (result.IsRight) continue;
- index++;
- IRow rowN = sheet.CreateRow(index);
- DataCheckNPOIStyle style = result.IsRight ? DataCheckNPOIStyle.Content : DataCheckNPOIStyle.Error;
- int j = -1;
- rowN.AddCell(++j, result.FamilyName, style);
- //rowN.AddCell(++j, result.Type.GetDescription(), style);
- string rowN4 = result.IsRight ? "通过" : "不通过";
- rowN.AddCell(++j, rowN4, style);
- rowN.AddCell(++j, result.RMessage, style);
- }
- #endregion
- }
- catch (Exception e)
- {
- MessageShowBase.Show(e);
- }
- }
- }
- class FamilyNameCheckResult : ModeCheckResultBase
- {
- public string FamilyName { get; set; }
- public DCElementType Type { get; set; }
-
- }
- }
|