namespace Yw.WinFrmUI
|
{
|
/// <summary>
|
/// 阀门视图
|
/// </summary>
|
public class HydroValveViewModel : HydroLinkViewModel
|
{
|
/// <summary>
|
///
|
/// </summary>
|
public HydroValveViewModel() { }
|
|
/// <summary>
|
///
|
/// </summary>
|
public HydroValveViewModel(Yw.Model.HydroValveInfo rhs, Yw.Model.HydroModelInfo hydroInfo) : base(rhs, hydroInfo)
|
{
|
this.Material = rhs.Material;
|
this.UpdatePropStatus(nameof(this.Material), rhs, nameof(rhs.Material));
|
this.Diameter = rhs.Diameter;
|
this.UpdatePropStatus(nameof(this.Diameter), rhs, nameof(rhs.Diameter));
|
this.MinorLoss = rhs.MinorLoss;
|
this.UpdatePropStatus(nameof(this.MinorLoss), rhs, nameof(rhs.MinorLoss));
|
this.ValveType = HydroValveTypeHelper.GetTypeName(rhs.ValveType);
|
this.UpdatePropStatus(nameof(this.ValveType), rhs, nameof(rhs.ValveType));
|
this.OpeningDegree = rhs.OpeningDegree;
|
this.UpdatePropStatus(nameof(this.OpeningDegree), rhs, nameof(rhs.OpeningDegree));
|
this.ValveSetting = rhs.ValveSetting;
|
this.UpdatePropStatus(nameof(this.ValveSetting), rhs, nameof(rhs.ValveSetting));
|
this.Vmo = rhs;
|
UpdateValveSetting();
|
}
|
|
|
/// <summary>
|
/// 阀门状态
|
/// </summary>
|
[Category("数据")]
|
[DisplayName("阀门状态")]
|
[Description("[默认]使用阀门设置;[开启]使用局阻系数")]
|
[PropertyOrder(1003)]
|
[Browsable(true)]
|
[TypeConverter(typeof(HydroValveStatusConverter))]
|
public override string LinkStatus { get; set; }
|
|
/// <summary>
|
/// 材料
|
/// </summary>
|
[Category("数据")]
|
[DisplayName("材料")]
|
[PropertyOrder(2001)]
|
[Browsable(true)]
|
public string Material { get; set; }
|
|
/// <summary>
|
/// 直径
|
/// </summary>
|
[Category("数据")]
|
[DisplayName("直径")]
|
[PropertyOrder(2002)]
|
[Browsable(true)]
|
[DisplayUnit("mm")]
|
public double Diameter { get; set; }
|
|
/// <summary>
|
/// 局阻系数
|
/// </summary>
|
[Category("数据")]
|
[DisplayName("局阻系数")]
|
[PropertyOrder(2003)]
|
[Browsable(true)]
|
public double MinorLoss { get; set; }
|
|
/// <summary>
|
/// 阀门类型
|
/// </summary>
|
[Category("数据")]
|
[DisplayName("阀门类型")]
|
[PropertyOrder(2004)]
|
[Browsable(true)]
|
[TypeConverter(typeof(HydroValveTypeConverter))]
|
public string ValveType { get; set; }
|
|
/// <summary>
|
/// 阀门开度
|
/// </summary>
|
[Category("数据")]
|
[DisplayName("阀门开度")]
|
[PropertyOrder(2005)]
|
[Browsable(true)]
|
public double OpeningDegree { get; set; }
|
|
/// <summary>
|
/// 阀门设置
|
/// </summary>
|
[Category("数据")]
|
[DisplayName("阀门设置")]
|
[PropertyOrder(2006)]
|
[Browsable(true)]
|
public string ValveSetting { get; set; }
|
|
/// <summary>
|
/// 压强设置
|
/// </summary>
|
[Category("数据")]
|
[DisplayName("压强设置")]
|
[Display(Name = "压强设置(m)")]
|
[DisplayUnit("m")]
|
[HydroRealPro("ValveSetting")]
|
[PropertyOrder(2007)]
|
[Browsable(true)]
|
public double? ValvePress { get; set; }
|
|
/// <summary>
|
/// 压强设置
|
/// </summary>
|
[Category("数据")]
|
[DisplayName("流量设置")]
|
[Display(Name = "流量设置(m³/h)")]
|
[DisplayUnit("m³/h")]
|
[HydroRealPro("ValveSetting")]
|
[PropertyOrder(2008)]
|
[Browsable(true)]
|
public double? ValveFlow { get; set; }
|
|
/// <summary>
|
/// 开度损失曲线
|
/// </summary>
|
[Category("数据")]
|
[DisplayName("开度损失曲线")]
|
[HydroRealPro("ValveSetting")]
|
[HydroCurvePro(HydroCurve.ValveOL, HydroCurveType.CurveOL)]
|
[PropertyOrder(2009)]
|
[Browsable(true)]
|
public string ValveOL { get; set; }
|
|
/// <summary>
|
/// 水头损失曲线
|
/// </summary>
|
[Category("数据")]
|
[DisplayName("水头损失曲线")]
|
[HydroRealPro("ValveSetting")]
|
[HydroCurvePro(HydroCurve.ValveQL, HydroCurveType.CurveQL)]
|
[PropertyOrder(2010)]
|
[Browsable(true)]
|
public string ValveQL { get; set; }
|
|
/// <summary>
|
/// 水头损失
|
/// </summary>
|
[Category("计算结果")]
|
[DisplayName("水头损失")]
|
[Display(Name = "水头损失(m)")]
|
[PropertyOrder(10003)]
|
[DisplayUnit("m")]
|
[HydroCalcuPro]
|
[ShowEditor(false)]
|
[Browsable(false)]
|
public override double? CalcuHeadLoss { get; set; }
|
|
/// <summary>
|
/// 沿程损失
|
/// </summary>
|
[Category("计算结果")]
|
[DisplayName("沿程损失")]
|
[Display(Name = "沿程损失(m)")]
|
[PropertyOrder(10005)]
|
[DisplayUnit("m")]
|
[HydroCalcuPro]
|
[ShowEditor(false)]
|
[Browsable(false)]
|
public override double? CalcuFrictionLoss { get; set; }
|
|
/// <summary>
|
///
|
/// </summary>
|
[Browsable(false)]
|
public new Yw.Model.HydroValveInfo Vmo { get; set; }
|
|
|
/// <summary>
|
/// 更新属性
|
/// </summary>
|
public override void UpdateProperty()
|
{
|
base.UpdateProperty();
|
this.Material = this.Vmo.Material;
|
this.UpdatePropStatus(nameof(this.Material), this.Vmo, nameof(this.Vmo.Material));
|
this.Diameter = this.Vmo.Diameter;
|
this.UpdatePropStatus(nameof(this.Diameter), this.Vmo, nameof(this.Vmo.Diameter));
|
this.MinorLoss = this.Vmo.MinorLoss;
|
this.UpdatePropStatus(nameof(this.MinorLoss), this.Vmo, nameof(this.Vmo.MinorLoss));
|
this.ValveType = HydroValveTypeHelper.GetTypeName(this.Vmo.ValveType);
|
this.UpdatePropStatus(nameof(this.ValveType), this.Vmo, nameof(this.Vmo.ValveType));
|
this.OpeningDegree = this.Vmo.OpeningDegree;
|
this.UpdatePropStatus(nameof(this.OpeningDegree), this.Vmo, nameof(this.Vmo.OpeningDegree));
|
this.ValveSetting = this.Vmo.ValveSetting;
|
this.UpdatePropStatus(nameof(this.ValveSetting), this.Vmo, nameof(this.Vmo.ValveSetting));
|
UpdateValveSetting();
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
public override void UpdateVmoProperty()
|
{
|
base.UpdateVmoProperty();
|
this.Vmo.Material = this.Material;
|
this.Vmo.UpdatePropStatus(nameof(this.Vmo.Material), this, nameof(this.Material));
|
this.Vmo.Diameter = this.Diameter;
|
this.Vmo.UpdatePropStatus(nameof(this.Vmo.Diameter), this, nameof(this.Diameter));
|
this.Vmo.MinorLoss = this.MinorLoss;
|
this.Vmo.UpdatePropStatus(nameof(this.Vmo.MinorLoss), this, nameof(this.MinorLoss));
|
this.Vmo.ValveType = HydroValveTypeHelper.GetTypeCode(this.ValveType);
|
this.Vmo.UpdatePropStatus(nameof(this.Vmo.ValveType), this, nameof(this.ValveType));
|
this.Vmo.OpeningDegree = this.OpeningDegree;
|
this.Vmo.UpdatePropStatus(nameof(this.Vmo.OpeningDegree), this, nameof(this.OpeningDegree));
|
UpdateVmoValveSetting();
|
this.Vmo.ValveSetting = this.ValveSetting;
|
this.Vmo.UpdatePropStatus(nameof(this.Vmo.ValveSetting), this, nameof(this.ValveSetting));
|
}
|
|
//更新阀门设置
|
//使用vmo更新自身属性时,再度更新阀门设置的其他属性
|
private void UpdateValveSetting()
|
{
|
switch (this.Vmo.ValveType)
|
{
|
case Yw.Hydro.ValveType.PSV:
|
{
|
if (double.TryParse(this.ValveSetting, out double press))
|
{
|
this.ValvePress = press;
|
}
|
}
|
break;
|
case Yw.Hydro.ValveType.PBV:
|
{
|
if (double.TryParse(this.ValveSetting, out double press))
|
{
|
this.ValvePress = press;
|
}
|
}
|
break;
|
case Yw.Hydro.ValveType.PRV:
|
{
|
if (double.TryParse(this.ValveSetting, out double press))
|
{
|
this.ValvePress = press;
|
}
|
}
|
break;
|
case Yw.Hydro.ValveType.FCV:
|
{
|
if (double.TryParse(this.ValveSetting, out double flow))
|
{
|
this.ValveFlow = flow;
|
}
|
}
|
break;
|
case Yw.Hydro.ValveType.TCV:
|
{
|
this.ValveOL = this.ValveSetting;
|
}
|
break;
|
case Yw.Hydro.ValveType.GPV:
|
{
|
this.ValveQL = this.ValveSetting;
|
}
|
break;
|
default: break;
|
}
|
}
|
|
//更新vmo阀门设置
|
//使用自身属性,更新vmo阀门设置
|
private void UpdateVmoValveSetting()
|
{
|
switch (this.Vmo.ValveType)
|
{
|
case Yw.Hydro.ValveType.PSV:
|
{
|
this.ValveSetting = this.ValvePress?.ToString();
|
}
|
break;
|
case Yw.Hydro.ValveType.PBV:
|
{
|
this.ValveSetting = this.ValvePress?.ToString();
|
}
|
break;
|
case Yw.Hydro.ValveType.PRV:
|
{
|
this.ValveSetting = this.ValvePress?.ToString();
|
}
|
break;
|
case Yw.Hydro.ValveType.FCV:
|
{
|
this.ValveSetting = this.ValveFlow?.ToString();
|
}
|
break;
|
case Yw.Hydro.ValveType.TCV:
|
{
|
this.ValveSetting = this.ValveOL;
|
}
|
break;
|
case Yw.Hydro.ValveType.GPV:
|
{
|
this.ValveSetting = this.ValveQL;
|
}
|
break;
|
default: break;
|
}
|
}
|
|
|
}
|
}
|