/*------------------------------------------------------------------------- * 功能描述:SystemCalcUtil * 作者:xulisong * 创建时间: 2019/1/2 17:55:55 * 版本号:v1.0 * -------------------------------------------------------------------------*/ using Autodesk.Revit.DB; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using Newtonsoft.Json.Linq; using SAGA.DotNetUtils.Cache; using SAGA.MBI.RequestData; using SAGA.Models; using SAGA.RevitUtils.Extends; using MBIEquipItem = SAGA.Models.EquipmentItem; namespace SAGA.GplotRelationComputerManage { /// /// 系统计算相关 /// public class SystemCalcUtil { /// /// 判断元素是否是开始元素 /// /// /// public static bool IsStart(Element element) { if (element is FamilyInstance) { var name = element.GetFamily().Name; return Regex.IsMatch(name, AppSetting.FamilyStartFlag); } return (element.GetParameterString(BuiltInParameter.ALL_MODEL_INSTANCE_COMMENTS)??string.Empty).StartsWith(AppSetting.StartFlag); } /// /// 创建房间缓冲集合 /// /// public static CacheItems CreateRoomItems() { CacheItems items = new CacheItems((s) => { var rooms = new Dictionary(); var str = new string[] {MBIBuiltInCategory.Si}; List datas = CommonConvert.QueryObjectInfoByTypes(str); foreach (var data in datas) { var roomItem = MBIItemFactory.Create(data); rooms[roomItem.BimId] = roomItem; } return rooms; }); return items; } /// /// 创建楼层缓冲集合 /// /// public static CacheItems CreateFloorItems() { CacheItems items = new CacheItems(null, (path) => { var floorId = Path.GetFileNameWithoutExtension(path); Dictionary miss = new Dictionary(); if (File.Exists(path)) { var uiApp = ExternalDataWrapper.Current.UiApp.Application; var doc = uiApp.OpenDocumentFile(path); var floor = new FloorSystemItem(doc); miss[floorId] = floor; } return miss; }, Path.GetFileNameWithoutExtension); return items; } /// /// 创建关系类型壳对象 /// /// public static CacheItems CreateRelationShellItems() { CacheItems items = new CacheItems((s) => { var shells = new Dictionary(); foreach (var relationItem in RelationTypeManager.Items) { shells[relationItem.Type] = new RelationTypeShell(relationItem); } return shells; }); return items; } /// /// 创建设备缓存对象 /// /// public static CacheItems CreateEquipmentItems() { CacheItems items = new CacheItems((s) => { var equipmentItems = new Dictionary(); var types = new string[] { MBIBuiltInCategory.Eq }; List equipDatas = CommonConvert.QueryObjectInfoByTypes(types); foreach (var jobject in equipDatas) { var item = MBIItemFactory.Create(jobject); if (item != null && string.IsNullOrWhiteSpace(item.BimId)) { equipmentItems[item.BimId]= item; } } return equipmentItems; }); return items; } } }