namespace Yw.WinFrmUI
|
{
|
/// <summary>
|
/// 标注辅助类
|
/// </summary>
|
public class HydroMarkHelper
|
{
|
/// <summary>
|
/// 获取设置列表
|
/// </summary>
|
public static List<HydroMarkSetViewModel> GetSetList(Yw.Model.HydroModelInfo hydroInfo)
|
{
|
if (hydroInfo == null)
|
{
|
return default;
|
}
|
var list = new List<HydroMarkSetViewModel>();
|
|
//水库
|
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;
|
}
|
|
/// <summary>
|
/// 获取结果列表
|
/// </summary>
|
public static List<HydroMarkResultViewModel> GetResultList(Yw.Model.HydroModelInfo hydroInfo, List<HydroMarkSetViewModel> allSetList)
|
{
|
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<HydroMarkResultViewModel>();
|
allVisualList.ForEach(x =>
|
{
|
var result = GetResult(x, allSetList);
|
if (result != null)
|
{
|
list.Add(result);
|
}
|
});
|
return list;
|
}
|
|
/// <summary>
|
/// 获取结果
|
/// </summary>
|
public static HydroMarkResultViewModel GetResult(Yw.Model.HydroVisualInfo visual, List<HydroMarkSetViewModel> allSetList)
|
{
|
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.Value, 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;
|
}
|
|
|
|
|
}
|
}
|