12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- /* ==============================================================================
- * 功能描述:CheckFactory
- * 创 建 者:Garrett
- * 创建日期:2019/6/11 16:26:56
- * ==============================================================================*/
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Reflection;
- using System.Text;
- using System.Threading.Tasks;
- using ServiceRevitLib.Mode;
- using Autodesk.Revit.DB;
- using ServiceRevitLib.DataCheck.Mode;
- using ServiceRevitLib.Extend;
- namespace ServiceRevitLib
- {
- /// <summary>
- /// CheckFactory
- /// </summary>
- public class CheckFactory:ResultBase
- {
- public CheckFactory()
- {
- Content=new List<CheckBase>();
- }
-
- #region 序列化的属性
- public List<CheckBase> Content { get; set; }
- public string FloorName { get; set; }
- #endregion
- #region Method
- /// <summary>
- /// 由传入字符串获取检查项
- /// 传入的检查列表使用“,”进行分割
- /// </summary>
- /// <param name="checkItemStrs"></param>
- public void SetCheckItems(string str)
- {
- //SagaCheck,UnitCheck,FamilyNameCheck,EquipPartLocationCheck,ColumnCheck,ElementRangeCheck,ConnectorCheck,SystemNameCheck,EquipInSpaceCheck,SystemReferEquipCheck,ParameterIntegrityCheck,PipeCheck,XYZOverlapCheck
- var checkItemStrs = str.Split(',');
- var nameSpace = typeof(CheckBase).Namespace;
- foreach (string itemStr in checkItemStrs)
- {
- //子类与父类应该使用同一命名空间;如果为Program+BaseClass格式,会出错; 如果出现此情况,请更改方法
- string fullPath = nameSpace + "." + itemStr;
- Assembly tempAsembly = Assembly.GetExecutingAssembly();
- var check = (tempAsembly.CreateInstance(fullPath)) as CheckBase;
- Content.Add(check);
- }
- }
- public void Check(Document doc)
- {
- FloorName = doc.PathName;
- //Document doc = DocumentUtils.GetDocument(path);
- try
- {
- Content.ForEach(t => t.SetDoc(doc));
- Content.ForEach(t => t.Check());
- }
- catch (Exception e)
- {
- ResultMsg = e.Message;
- Result = ResultState.Failure;
- }
- finally
- {
- //doc.CloseExt();
- }
- }
- #endregion
- }
- }
|