/*-------------------------------------------------------------------------
* 功能描述: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;
}
}
}