namespace Yw.WinFrmUI
{
///
/// 标注辅助类
///
public class HydroMarkHelper
{
///
/// 获取设置列表
///
public static List GetSetList(Yw.Model.HydroModelInfo hydroInfo)
{
if (hydroInfo == null)
{
return default;
}
var list = new List();
//水库
if (hydroInfo.Reservoirs != null && hydroInfo.Reservoirs.Count > 0)
{
list.Add(new HydroMarkSetViewModel()
{
Catalog = Yw.Hydro.ParterCatalog.Reservoir,
CatalogName = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Reservoir),
PropName = HydroMarkProp.None
});
}
//水池
if (hydroInfo.Tanks != null && hydroInfo.Tanks.Count > 0)
{
list.Add(new HydroMarkSetViewModel()
{
Catalog = Yw.Hydro.ParterCatalog.Tank,
CatalogName = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Tank),
PropName = HydroMarkProp.None
});
}
//水箱
if (hydroInfo.Waterboxs != null && hydroInfo.Waterboxs.Count > 0)
{
list.Add(new HydroMarkSetViewModel()
{
Catalog = Yw.Hydro.ParterCatalog.Waterbox,
CatalogName = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Waterbox),
PropName = HydroMarkProp.None
});
}
//管道
if (hydroInfo.Pipes != null && hydroInfo.Pipes.Count > 0)
{
list.Add(new HydroMarkSetViewModel()
{
Catalog = Yw.Hydro.ParterCatalog.Pipe,
CatalogName = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Pipe),
PropName = HydroMarkProp.None
});
}
//过渡件
if (hydroInfo.Translations != null && hydroInfo.Translations.Count > 0)
{
list.Add(new HydroMarkSetViewModel()
{
Catalog = Yw.Hydro.ParterCatalog.Translation,
CatalogName = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Translation),
PropName = HydroMarkProp.None
});
}
//水泵
if (hydroInfo.Pumps != null && hydroInfo.Pumps.Count > 0)
{
list.Add(new HydroMarkSetViewModel()
{
Catalog = Yw.Hydro.ParterCatalog.Pump,
CatalogName = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Pump),
PropName = HydroMarkProp.None
});
}
//阀门
if (hydroInfo.Valves != null && hydroInfo.Valves.Count > 0)
{
list.Add(new HydroMarkSetViewModel()
{
Catalog = Yw.Hydro.ParterCatalog.Valve,
CatalogName = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Valve),
PropName = HydroMarkProp.None
});
}
//换热器
if (hydroInfo.Exchangers != null && hydroInfo.Exchangers.Count > 0)
{
list.Add(new HydroMarkSetViewModel()
{
Catalog = Yw.Hydro.ParterCatalog.Exchanger,
CatalogName = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Exchanger),
PropName = HydroMarkProp.None
});
}
//压缩机
if (hydroInfo.Compressors != null && hydroInfo.Compressors.Count > 0)
{
list.Add(new HydroMarkSetViewModel()
{
Catalog = Yw.Hydro.ParterCatalog.Compressor,
CatalogName = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Compressor),
PropName = HydroMarkProp.None
});
}
//喷嘴
if (hydroInfo.Nozzles != null && hydroInfo.Nozzles.Count > 0)
{
list.Add(new HydroMarkSetViewModel()
{
Catalog = Yw.Hydro.ParterCatalog.Nozzle,
CatalogName = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Nozzle),
PropName = HydroMarkProp.None
});
}
//消火栓
if (hydroInfo.Hydrants != null && hydroInfo.Hydrants.Count > 0)
{
list.Add(new HydroMarkSetViewModel()
{
Catalog = Yw.Hydro.ParterCatalog.Hydrant,
CatalogName = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Hydrant),
PropName = HydroMarkProp.None
});
}
return list;
}
///
/// 获取结果列表
///
public static List GetResultList
(
Yw.Model.HydroModelInfo hydroInfo,
List allSetList,
Dictionary allCalcuResultDict
)
{
if (hydroInfo == null)
{
return default;
}
if (allSetList == null || allSetList.Count < 1)
{
return default;
}
var allVisualList = hydroInfo.GetAllVisuals();
if (allVisualList == null || allVisualList.Count < 1)
{
return default;
}
var list = new List();
allVisualList.ForEach(x =>
{
var result = GetResult(x, allSetList, allCalcuResultDict);
if (result != null)
{
list.Add(result);
}
});
return list;
}
///
/// 获取结果
///
public static HydroMarkResultViewModel GetResult
(
Yw.Model.HydroVisualInfo visual,
List allSetList,
Dictionary allCalcuResultDict
)
{
if (visual == null)
{
return default;
}
var set = allSetList?.Find(x => x.Catalog == visual.Catalog);
if (set == null)
{
return default;
}
HydroMarkResultViewModel result = null;
switch (set.Catalog)
{
case Yw.Hydro.ParterCatalog.Reservoir:
{
var reservoir = visual as Yw.Model.HydroReservoirInfo;
switch (set.PropName)
{
case Yw.Hydro.ParterProp.PoolElev:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
//Text = $"池底标高:{Math.Round(reservoir.PoolElev, 4)}m"
};
}
break;
case Yw.Hydro.ParterProp.Head:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"总水头:{Math.Round(reservoir.Head, 2)}m"
};
}
break;
default: break;
}
}
break;
case Yw.Hydro.ParterCatalog.Tank:
{
var tank = visual as Yw.Model.HydroTankInfo;
switch (set.PropName)
{
case Yw.Hydro.ParterProp.PoolElev:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"池底标高:{Math.Round(tank.PoolElev, 4)}m"
};
}
break;
case Yw.Hydro.ParterProp.InitLevel:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"初始水位:{Math.Round(tank.InitLevel, 4)}m"
};
}
break;
case Yw.Hydro.ParterProp.MinLevel:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"最小水位:{Math.Round(tank.MinLevel, 4)}m"
};
}
break;
case Yw.Hydro.ParterProp.MaxLevel:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"最高水位:{Math.Round(tank.MaxLevel, 4)}m"
};
}
break;
case Yw.Hydro.ParterProp.DN:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"公称直径:{Math.Round(tank.DN, 4)}m"
};
}
break;
case Yw.Hydro.ParterProp.MinVol:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"最小容积:{Math.Round(tank.MinVol, 1)}m³"
};
}
break;
default: break;
}
}
break;
case Yw.Hydro.ParterCatalog.Waterbox:
{
var waterbox = visual as Yw.Model.HydroWaterboxInfo;
switch (set.PropName)
{
case Yw.Hydro.ParterProp.PoolElev:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"池底标高:{Math.Round(waterbox.PoolElev, 4)}m"
};
}
break;
case Yw.Hydro.ParterProp.InitLevel:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"初始水位:{Math.Round(waterbox.InitLevel, 4)}m"
};
}
break;
case Yw.Hydro.ParterProp.MinLevel:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"最小水位:{Math.Round(waterbox.MinLevel, 4)}m"
};
}
break;
case Yw.Hydro.ParterProp.MaxLevel:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"最高水位:{Math.Round(waterbox.MaxLevel, 4)}m"
};
}
break;
case Yw.Hydro.ParterProp.DN:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"公称直径:{Math.Round(waterbox.DN, 4)}m"
};
}
break;
case Yw.Hydro.ParterProp.MinVol:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"最小容积:{Math.Round(waterbox.MinVol, 1)}m³"
};
}
break;
default: break;
}
}
break;
case Yw.Hydro.ParterCatalog.Pipe:
{
var pipe = visual as Yw.Model.HydroPipeInfo;
switch (set.PropName)
{
case Yw.Hydro.ParterProp.Diameter:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"直径:{Math.Round(pipe.Diameter, 1)}mm"
};
}
break;
case Yw.Hydro.ParterProp.Length:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"长度:{Math.Round(pipe.Length, 4)}m"
};
}
break;
case Yw.Hydro.ParterProp.Roughness:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"粗糙系数:{Math.Round(pipe.Roughness, 1)}"
};
}
break;
case Yw.Hydro.ParterProp.MinorLoss:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"局阻系数:{Math.Round(pipe.MinorLoss, 1)}"
};
}
break;
default: break;
}
}
break;
case Yw.Hydro.ParterCatalog.Translation:
{
var translation = visual as Yw.Model.HydroTranslationInfo;
switch (set.PropName)
{
case Yw.Hydro.ParterProp.Diameter:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"直径:{Math.Round(translation.Diameter, 1)}mm"
};
}
break;
case Yw.Hydro.ParterProp.Length:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"长度:{Math.Round(translation.Length, 4)}m"
};
}
break;
case Yw.Hydro.ParterProp.Roughness:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"粗糙系数:{Math.Round(translation.Roughness, 1)}"
};
}
break;
case Yw.Hydro.ParterProp.MinorLoss:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"局阻系数:{Math.Round(translation.MinorLoss, 1)}"
};
}
break;
default: break;
}
}
break;
case Yw.Hydro.ParterCatalog.Pump:
{
var pump = visual as Yw.Model.HydroPumpInfo;
switch (set.PropName)
{
case Yw.Hydro.ParterProp.LinkStatus:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"开机状态:{Yw.WinFrmUI.HydroLinkStatusHelper.GetStatusName(pump.LinkStatus)}"
};
}
break;
case Yw.Hydro.ParterProp.RatedQ:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"额定流量:{pump.RatedQ}m³/h"
};
}
break;
case Yw.Hydro.ParterProp.RatedH:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"额定扬程:{pump.RatedH}m"
};
}
break;
case Yw.Hydro.ParterProp.RatedP:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"额定功率:{pump.RatedP}kW"
};
}
break;
case Yw.Hydro.ParterProp.RatedN:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"额定转速:{pump.RatedN}r/min"
};
}
break;
case Yw.Hydro.ParterProp.CurrentHz:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"设定频率:{Math.Round(pump.RatedHz * pump.SpeedRatio, 1)}hz"
};
}
break;
default: break;
}
}
break;
case Yw.Hydro.ParterCatalog.Valve:
{
var valve = visual as Yw.Model.HydroValveInfo;
switch (set.PropName)
{
case Yw.Hydro.ParterProp.LinkStatus:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"阀门状态:{HydroLinkStatusHelper.GetStatusName(valve.LinkStatus)}"
};
}
break;
case Yw.Hydro.ParterProp.ValveType:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"阀门类型:{HydroValveTypeHelper.GetTypeName(valve.ValveType)}"
};
}
break;
case Yw.Hydro.ParterProp.OpeningDegree:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"阀门开度:{valve.OpeningDegree}%"
};
}
break;
case Yw.Hydro.ParterProp.Diameter:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"直径:{valve.Diameter}mm"
};
}
break;
case Yw.Hydro.ParterProp.MinorLoss:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"局阻系数:{valve.MinorLoss}"
};
}
break;
default: break;
}
}
break;
case Yw.Hydro.ParterCatalog.Exchanger:
{
var exchanger = visual as Yw.Model.HydroExchangerInfo;
switch (set.PropName)
{
case Yw.Hydro.ParterProp.LinkStatus:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"运行状态:{HydroLinkStatusHelper.GetStatusName(exchanger.LinkStatus)}"
};
}
break;
case Yw.Hydro.ParterProp.Diameter:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"直径:{exchanger.Diameter}mm"
};
}
break;
case Yw.Hydro.ParterProp.MinorLoss:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"局阻系数:{exchanger.MinorLoss}"
};
}
break;
default: break;
}
}
break;
case Yw.Hydro.ParterCatalog.Compressor:
{
var compressor = visual as Yw.Model.HydroCompressorInfo;
switch (set.PropName)
{
case Yw.Hydro.ParterProp.LinkStatus:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"运行状态:{HydroLinkStatusHelper.GetStatusName(compressor.LinkStatus)}"
};
}
break;
case Yw.Hydro.ParterProp.Diameter:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"直径:{compressor.Diameter}mm"
};
}
break;
case Yw.Hydro.ParterProp.MinorLoss:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"局阻系数:{compressor.MinorLoss}"
};
}
break;
default: break;
}
}
break;
case Yw.Hydro.ParterCatalog.Nozzle:
{
var nozzle = visual as Yw.Model.HydroNozzleInfo;
switch (set.PropName)
{
case Yw.Hydro.ParterProp.Elev:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"标高:{Math.Round(nozzle.Elev, 4)}m"
};
}
break;
case Yw.Hydro.ParterProp.Demand:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"需水量:{nozzle.Demand}m³/h"
};
}
break;
case Yw.Hydro.ParterProp.Coefficient:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"喷射系数:{nozzle.Coefficient}"
};
}
break;
default: break;
}
}
break;
case Yw.Hydro.ParterCatalog.Hydrant:
{
var hydrant = visual as Yw.Model.HydroHydrantInfo;
switch (set.PropName)
{
case Yw.Hydro.ParterProp.Elev:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"标高:{Math.Round(hydrant.Elev, 4)}m"
};
}
break;
case Yw.Hydro.ParterProp.Demand:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"需水量:{hydrant.Demand}m³/h"
};
}
break;
case Yw.Hydro.ParterProp.Coefficient:
{
result = new HydroMarkResultViewModel()
{
Code = visual.Code,
Text = $"喷射系数:{hydrant.Coefficient}"
};
}
break;
default: break;
}
}
break;
default: break;
}
return result;
}
}
}