|
@@ -26,6 +26,98 @@ namespace SAGA.MBI.Calc
|
|
|
/// </summary>
|
|
|
public class ObjectCalc
|
|
|
{
|
|
|
+
|
|
|
+
|
|
|
+ #region 简单计算,只获取岗位
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 常规计算
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="floor"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public static CalcContext Calc_Simple(MFloor floor)
|
|
|
+ {
|
|
|
+ CalcContext context = new CalcContext(floor);
|
|
|
+ context.OpenDocument();
|
|
|
+ try
|
|
|
+ {
|
|
|
+ CalcSpace_Simple(context);
|
|
|
+ CalcEquipPartRlt_Simple(context);
|
|
|
+ }
|
|
|
+ catch (Exception e)
|
|
|
+ {
|
|
|
+ MessageShowBase.Show(e);
|
|
|
+ }
|
|
|
+ finally
|
|
|
+ {
|
|
|
+ context.RevitDoc.CloseDoc();
|
|
|
+ }
|
|
|
+ return context;
|
|
|
+ }
|
|
|
+ /// <summary>
|
|
|
+ /// 计算模型中的空间
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="context"></param>
|
|
|
+ private static void CalcSpace_Simple(CalcContext context)
|
|
|
+ {
|
|
|
+ var spaces = context.RevitDoc.GetSpaces();
|
|
|
+ foreach (Space space in spaces)
|
|
|
+ {
|
|
|
+ if (!space.IsSpace()) continue;
|
|
|
+ MISpace mspace = DalSpace.GetSpace(space);
|
|
|
+ if (mspace == null) continue;
|
|
|
+ mspace.Operator = DocumentChangedOperator.Add;
|
|
|
+ context.MSpaces.Add(mspace);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /// <summary>
|
|
|
+ /// 读取空间中的设备、部件、设备所在空间的关系
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="context"></param>
|
|
|
+ private static void CalcEquipPartRlt_Simple(CalcContext context)
|
|
|
+ {
|
|
|
+ var familyInstances = context.RevitDoc.GetFamilyInstances();
|
|
|
+ List<FamilyInstance> parts = new List<FamilyInstance>();
|
|
|
+ foreach (FamilyInstance fi in familyInstances)
|
|
|
+ {
|
|
|
+ if (!fi.IsValidObject) continue;
|
|
|
+ if (fi.IsEquipment())
|
|
|
+ {
|
|
|
+ MEquipment equipment = DalEquip.GetEquipment(fi);
|
|
|
+ if (equipment == null) continue;
|
|
|
+ equipment.Operator = DocumentChangedOperator.Add;
|
|
|
+ context.MEquipments.Add(equipment);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //在这里处理信标
|
|
|
+ else if (fi.IsBeacon())
|
|
|
+ {
|
|
|
+ MBeacon mode = DalBeacon.GetBeacon(fi);
|
|
|
+ if (mode == null) continue;
|
|
|
+ mode.Operator = DocumentChangedOperator.Add;
|
|
|
+ context.MBeacons.Add(mode);
|
|
|
+
|
|
|
+ }
|
|
|
+ else if (fi.IsEquipmentPart())
|
|
|
+ {
|
|
|
+ parts.Add(fi);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //单独处理部件,因为部件要依赖设备
|
|
|
+ foreach (FamilyInstance fi in parts)
|
|
|
+ {
|
|
|
+ // 在这里处理部件
|
|
|
+ MEquipmentPart equipment = DalEquipPart.GetEquipPart(fi);
|
|
|
+ if (equipment?.MEquipment == null) continue;
|
|
|
+
|
|
|
+ equipment.Operator = DocumentChangedOperator.Add;
|
|
|
+ context.MEquipmentParts.Add(equipment);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
/// <summary>
|
|
|
/// 常规计算
|
|
|
/// </summary>
|