namespace Yw.WinFrmUI { /// /// 水泵属性视图 /// public class HydroPumpViewModel : HydroLinkViewModel, IHydroCalcuPumpResult { /// /// /// public HydroPumpViewModel() { } /// /// /// public HydroPumpViewModel(Yw.Model.HydroPumpInfo rhs, Yw.Model.HydroModelInfo hydroInfo) : base(rhs, hydroInfo) { this.RatedP = rhs.RatedP; this.UpdatePropStatus(nameof(this.RatedP), rhs, nameof(rhs.RatedP)); this.RatedQ = rhs.RatedQ; this.UpdatePropStatus(nameof(this.RatedQ), rhs, nameof(rhs.RatedQ)); this.RatedH = rhs.RatedH; this.UpdatePropStatus(nameof(this.RatedH), rhs, nameof(rhs.RatedH)); this.RatedN = rhs.RatedN; this.UpdatePropStatus(nameof(this.RatedN), rhs, nameof(rhs.RatedN)); this.RatedHz = rhs.RatedHz; this.UpdatePropStatus(nameof(this.RatedHz), rhs, nameof(rhs.RatedHz)); this.SpeedRatio = rhs.SpeedRatio; this.UpdatePropStatus(nameof(this.SpeedRatio), rhs, nameof(rhs.SpeedRatio)); this.SpeedRatioPattern = rhs.SpeedRatioPattern; this.UpdatePropStatus(nameof(this.SpeedRatioPattern), rhs, nameof(rhs.SpeedRatioPattern)); this.CurveQH = rhs.CurveQH; this.UpdatePropStatus(nameof(this.CurveQH), rhs, nameof(rhs.CurveQH)); this.CurveQP = rhs.CurveQP; this.UpdatePropStatus(nameof(this.CurveQP), rhs, nameof(rhs.CurveQP)); this.CurveQE = rhs.CurveQE; this.UpdatePropStatus(nameof(this.CurveQE), rhs, nameof(rhs.CurveQE)); this.Vmo = rhs; } /// /// 水泵状态 /// [Category("数据")] [DisplayName("水泵状态")] [PropertyOrder(1003)] [Browsable(true)] [TypeConverter(typeof(HydroPumpStatusConverter))] public override string LinkStatus { get; set; } /// /// 额定流量 /// [Category("数据")] [Display(Name = "额定流量(m³/h)")] [DisplayName("额定流量")] [DisplayUnit("m³/h")] [PropertyOrder(2001)] [Browsable(true)] public double? RatedQ { get; set; } /// /// 额定扬程 /// [Category("数据")] [Display(Name = "额定扬程(m)")] [DisplayName("额定扬程")] [DisplayUnit("m")] [PropertyOrder(2002)] [Browsable(true)] public double? RatedH { get; set; } /// /// 额定功率 /// [Category("数据")] [Display(Name = "额定功率(kW)")] [DisplayName("额定功率")] [DisplayUnit("kW")] [PropertyOrder(2003)] [Browsable(true)] public double RatedP { get; set; } /// /// 额定转速 /// [Category("数据")] [Display(Name = "额定转速(r/min)")] [DisplayName("额定转速")] [DisplayUnit("r/min")] [PropertyOrder(2004)] [Browsable(true)] public double? RatedN { get; set; } /// /// 额定频率 /// [Category("数据")] [Display(Name = "额定频率")] [DisplayName("额定频率")] [DisplayUnit("hz")] [PropertyOrder(2005)] [Browsable(true)] public double RatedHz { get; set; } /// /// 设定频率 /// [Category("数据")] [Display(Name = "设定频率")] [DisplayName("设定频率")] [DisplayUnit("hz")] [PropertyOrder(2006)] [Browsable(true)] public double CurrentHz { get { return this.SpeedRatio * this.RatedHz; } set { if (this.RatedHz <= 0) { return; } this.SpeedRatio = value / this.RatedHz; } } /// /// 转速比 /// [Category("数据")] [DisplayName("转速比")] [PropertyOrder(2007)] [Browsable(false)] public double SpeedRatio { get; set; } /// /// 转速比模式 /// [Category("数据")] [DisplayName("转速比模式")] [PropertyOrder(2008)] [Browsable(false)] public string SpeedRatioPattern { get; set; } /// /// 性能曲线 /// [Category("数据")] [DisplayName("性能曲线")] [PropertyOrder(2009)] [HydroCurvePro(HydroCurve.Pump)] [Browsable(true)] public string Curve { get { if (string.IsNullOrEmpty(this.CurveQH)) { return "未配置"; } return "已配置"; } } /// /// 流量扬程曲线 /// [Category("数据")] [DisplayName("流量扬程曲线")] [PropertyOrder(2010)] [HydroCurvePro(HydroCurve.PumpQH)] [Browsable(false)] public string CurveQH { get; set; } /// /// 流量功率曲线 /// [Category("数据")] [DisplayName("流量功率曲线")] [PropertyOrder(2011)] [HydroCurvePro(HydroCurve.PumpQP)] [Browsable(false)] public string CurveQP { get; set; } /// /// 流量效率曲线 /// [Category("数据")] [DisplayName("流量效率曲线")] [PropertyOrder(2012)] [HydroCurvePro(HydroCurve.PumpQE)] [Browsable(false)] public string CurveQE { get; set; } /// /// 流量 /// [Category("计算结果")] [DisplayName("流量")] [PropertyOrder(10001)] [DisplayUnit("m³/h")] [HydroCalcuPro] [ShowEditor(false)] [Browsable(false)] public override double? CalcuFlow { get; set; } /// /// 流速 /// [Category("计算结果")] [DisplayName("流速")] [PropertyOrder(10002)] [DisplayUnit("m/s")] [HydroCalcuPro] [ShowEditor(false)] [Browsable(false)] public override double? CalcuVelocity { get; set; } /// /// 水头损失 /// [Category("计算结果")] [DisplayName("水头损失")] [PropertyOrder(10003)] [DisplayUnit("m")] [HydroCalcuPro] [ShowEditor(false)] [Browsable(false)] public override double? CalcuHeadLoss { get; set; } /// /// 局部损失 /// [Category("计算结果")] [DisplayName("局部损失")] [Display(Name = "局部损失(m)")] [PropertyOrder(10004)] [DisplayUnit("m")] [HydroCalcuPro] [ShowEditor(false)] [Browsable(false)] public override double? CalcuMinorLoss { get; set; } /// /// 沿程损失 /// [Category("计算结果")] [DisplayName("沿程损失")] [Display(Name = "沿程损失(m)")] [PropertyOrder(10005)] [DisplayUnit("m")] [HydroCalcuPro] [ShowEditor(false)] [Browsable(false)] public override double? CalcuFrictionLoss { get; set; } /// /// 流量 /// [Category("计算结果")] [DisplayName("流量")] [PropertyOrder(11001)] [DisplayUnit("m³/h")] [HydroCalcuPro] [ShowEditor(false)] [Browsable(true)] public double? CalcuQ { get; set; } /// /// 扬程 /// [Category("计算结果")] [DisplayName("扬程")] [PropertyOrder(11002)] [DisplayUnit("m")] [HydroCalcuPro] [ShowEditor(false)] [Browsable(true)] public double? CalcuH { get; set; } /// /// 功率 /// [Category("计算结果")] [DisplayName("功率")] [PropertyOrder(11003)] [DisplayUnit("kW")] [HydroCalcuPro] [ShowEditor(false)] [Browsable(true)] public double? CalcuP { get; set; } /// /// 效率 /// [Category("计算结果")] [DisplayName("效率")] [PropertyOrder(11004)] [DisplayUnit("%")] [HydroCalcuPro] [ShowEditor(false)] [Browsable(true)] public double? CalcuE { get; set; } /// /// /// [Browsable(false)] public new Yw.Model.HydroPumpInfo Vmo { get; set; } /// /// /// public override void UpdateProperty() { base.UpdateProperty(); this.RatedP = this.Vmo.RatedP; this.UpdatePropStatus(nameof(this.RatedP), this.Vmo, nameof(this.Vmo.RatedP)); this.RatedQ = this.Vmo.RatedQ; this.UpdatePropStatus(nameof(this.RatedQ), this.Vmo, nameof(this.Vmo.RatedQ)); this.RatedH = this.Vmo.RatedH; this.UpdatePropStatus(nameof(this.RatedH), this.Vmo, nameof(this.Vmo.RatedH)); this.RatedN = this.Vmo.RatedN; this.UpdatePropStatus(nameof(this.RatedN), this.Vmo, nameof(this.Vmo.RatedN)); this.RatedHz = this.Vmo.RatedHz; this.UpdatePropStatus(nameof(this.RatedHz), this.Vmo, nameof(this.Vmo.RatedHz)); this.SpeedRatio = this.Vmo.SpeedRatio; this.UpdatePropStatus(nameof(this.SpeedRatio), this.Vmo, nameof(this.Vmo.SpeedRatio)); this.SpeedRatioPattern = this.Vmo.SpeedRatioPattern; this.UpdatePropStatus(nameof(this.SpeedRatioPattern), this.Vmo, nameof(this.Vmo.SpeedRatioPattern)); this.CurveQH = this.Vmo.CurveQH; this.UpdatePropStatus(nameof(this.CurveQH), this.Vmo, nameof(this.Vmo.CurveQH)); this.CurveQP = this.Vmo.CurveQP; this.UpdatePropStatus(nameof(this.CurveQP), this.Vmo, nameof(this.Vmo.CurveQP)); this.CurveQE = this.Vmo.CurveQE; this.UpdatePropStatus(nameof(this.CurveQE), this.Vmo, nameof(this.Vmo.CurveQE)); } public override void UpdateVmoProperty() { base.UpdateVmoProperty(); this.Vmo.RatedQ = this.RatedQ; this.Vmo.UpdatePropStatus(nameof(this.Vmo.RatedQ), this, nameof(this.RatedQ)); this.Vmo.RatedH = this.RatedH; this.Vmo.UpdatePropStatus(nameof(this.Vmo.RatedH), this, nameof(this.RatedH)); this.Vmo.RatedP = this.RatedP; this.Vmo.UpdatePropStatus(nameof(this.Vmo.RatedP), this, nameof(this.RatedP)); this.Vmo.RatedN = this.RatedN; this.Vmo.UpdatePropStatus(nameof(this.Vmo.RatedN), this, nameof(this.RatedN)); this.Vmo.RatedHz = this.RatedHz; this.Vmo.UpdatePropStatus(nameof(this.Vmo.RatedHz), this, nameof(this.RatedHz)); this.Vmo.SpeedRatio = this.SpeedRatio; this.Vmo.UpdatePropStatus(nameof(this.Vmo.SpeedRatio), this, nameof(this.SpeedRatio)); this.Vmo.SpeedRatioPattern = this.SpeedRatioPattern; this.Vmo.UpdatePropStatus(nameof(this.Vmo.SpeedRatioPattern), this, nameof(this.SpeedRatioPattern)); this.Vmo.CurveQH = this.CurveQH; this.Vmo.UpdatePropStatus(nameof(this.Vmo.CurveQH), this, nameof(this.CurveQH)); this.Vmo.CurveQP = this.CurveQP; this.Vmo.UpdatePropStatus(nameof(this.Vmo.CurveQP), this, nameof(this.CurveQP)); this.Vmo.CurveQE = this.CurveQE; this.Vmo.UpdatePropStatus(nameof(this.Vmo.CurveQE), this, nameof(this.CurveQE)); } /// /// 更新计算属性 /// public override void UpdateCalcuProperty(HydroCalcuVisualResult rhs) { base.UpdateCalcuProperty(rhs); if (rhs is HydroCalcuPumpResult calcuPumpProperty) { this.CalcuQ = calcuPumpProperty.CalcuQ.HasValue ? Math.Round(calcuPumpProperty.CalcuQ.Value, 1) : null; this.CalcuH = calcuPumpProperty.CalcuH.HasValue ? Math.Round(calcuPumpProperty.CalcuH.Value, 2) : null; this.CalcuP = calcuPumpProperty.CalcuP.HasValue ? Math.Round(calcuPumpProperty.CalcuP.Value, 1) : null; this.CalcuE = calcuPumpProperty.CalcuE.HasValue ? Math.Round(calcuPumpProperty.CalcuE.Value, 1) : null; } } } }