| | |
| | | this.hydroWorkingCheckedListHorizCtrl1.CheckedChangedEvent += HydroWorkingCheckedListHorizCtrl1_CheckedChangedEvent; |
| | | } |
| | | |
| | | |
| | | |
| | | private Yw.Model.HydroModelInfo _hydroInfo = null;//水力信息 |
| | | private Yw.Model.HydroPumpInfo _pumpInfo = null;//水泵信息 |
| | | private List<HydroWorkingVmo> _workingList = null;//工况列表 |
| | | private Dictionary<HydroWorkingVmo, Dictionary<string, HydroCalcuVisualResult>> _allWorkingCalcuResultDict = null;//所有工况计算结果字典 |
| | | private Yw.Model.HydroPumpInfo _pumpInfo = null;//水泵信心 |
| | | private List<HydroWorkingVmo> _allWorkingList = null;//所有工况列表 |
| | | |
| | | /// <summary> |
| | | /// 绑定数据 |
| | |
| | | return; |
| | | } |
| | | _hydroInfo = hydroInfo.Adapt<Yw.Model.HydroModelInfo>(); |
| | | _workingList = allWorkingList; |
| | | _allWorkingList = allWorkingList; |
| | | this.hydroWorkingCheckedListHorizCtrl1.SetBindingData(allWorkingList); |
| | | this.hydroPumpListViewCtrl1.SetBindingData(_hydroInfo); |
| | | } |
| | | |
| | | //水泵选择改变 |
| | | private void HydroPumpListViewCtrl1_SelectedChangedEvent(Yw.Model.HydroPumpInfo obj) |
| | | { |
| | | _pumpInfo = obj; |
| | | var vm = CreateViewModel(); |
| | | if (vm != null) |
| | | { |
| | | this.pumpRunViewChart1.SetBindingData(vm); |
| | | } |
| | | } |
| | | |
| | | //工况选择改变事件 |
| | | private void HydroWorkingCheckedListHorizCtrl1_CheckedChangedEvent(List<HydroWorkingVmo> obj) |
| | | { |
| | | _workingList = obj; |
| | | var vm = CreateViewModel(); |
| | | if (vm != null) |
| | | { |
| | | this.pumpRunViewChart1.SetBindingData(vm); |
| | | } |
| | | } |
| | | |
| | | //创建 |
| | | private PumpRunViewViewModel CreateViewModel() |
| | | private void HydroPumpListViewCtrl1_SelectedChangedEvent(Yw.Model.HydroPumpInfo pumpInfo) |
| | | { |
| | | if (_hydroInfo == null) |
| | | { |
| | | return default; |
| | | return; |
| | | } |
| | | if (pumpInfo == null) |
| | | { |
| | | return; |
| | | } |
| | | _pumpInfo = pumpInfo; |
| | | this.simulationPumpAnalyChartCtrl1.SetBindingData(_hydroInfo, _pumpInfo, _allWorkingList); |
| | | } |
| | | |
| | | //工况选择改变事件 |
| | | private void HydroWorkingCheckedListHorizCtrl1_CheckedChangedEvent(List<HydroWorkingVmo> allWorkingList) |
| | | { |
| | | if (_hydroInfo == null) |
| | | { |
| | | return; |
| | | } |
| | | if (_pumpInfo == null) |
| | | { |
| | | return default; |
| | | return; |
| | | } |
| | | var vm = new PumpRunViewViewModel(); |
| | | vm.Id = _pumpInfo.Code; |
| | | vm.Name = _pumpInfo.Name; |
| | | vm.CurveName = $"额定曲线({_pumpInfo.RatedHz}hz)"; |
| | | vm.RatedQ = _pumpInfo.RatedQ.HasValue ? _pumpInfo.RatedQ.Value : 0; |
| | | vm.RatedH = _pumpInfo.RatedH.HasValue ? _pumpInfo.RatedH.Value : 0; |
| | | vm.RatedP = _pumpInfo.RatedP; |
| | | vm.RatedN = _pumpInfo.RatedN.HasValue ? _pumpInfo.RatedN.Value : 0; |
| | | vm.RatedHz = _pumpInfo.RatedHz; |
| | | vm.Color = Color.LightGray; |
| | | |
| | | var curveqh = _hydroInfo.Curves?.Find(x => x.Code == _pumpInfo.CurveQH); |
| | | if (curveqh != null) |
| | | { |
| | | var qh_pts = curveqh.CurveData?.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList(); |
| | | if (qh_pts != null && qh_pts.Count > 3) |
| | | { |
| | | vm.CurveQH = new CubicSpline2d(qh_pts); |
| | | } |
| | | } |
| | | |
| | | var curveqp = _hydroInfo.Curves?.Find(x => x.Code == _pumpInfo.CurveQP); |
| | | if (curveqp != null) |
| | | { |
| | | var qp_pts = curveqp.CurveData?.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList(); |
| | | if (qp_pts != null && qp_pts.Count > 3) |
| | | { |
| | | vm.CurveQP = new CubicSpline2d(qp_pts); |
| | | } |
| | | } |
| | | |
| | | var curveqe = _hydroInfo.Curves?.Find(x => x.Code == _pumpInfo.CurveQE); |
| | | if (curveqe != null) |
| | | { |
| | | var qepts = curveqe.CurveData?.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList(); |
| | | if (qepts != null && qepts.Count > 3) |
| | | { |
| | | vm.CurveQE = new CubicSpline2d(qepts); |
| | | } |
| | | } |
| | | |
| | | if (_workingList != null && _workingList.Count > 0) |
| | | { |
| | | vm.Items = new List<PumpRunViewItemViewModel>(); |
| | | foreach (var working in _workingList) |
| | | { |
| | | var workingInfo = JsonHelper.Json2Object<HydroWorkingInfoViewModel>(working.WorkingInfo); |
| | | if (workingInfo != null && workingInfo.Pumps != null && workingInfo.Pumps.Count > 0) |
| | | { |
| | | var workingPumpInfo = workingInfo.Pumps.Find(x => x.Code == _pumpInfo.Code); |
| | | if (workingPumpInfo != null) |
| | | { |
| | | var vmItem = new PumpRunViewItemViewModel(); |
| | | vm.Items.Add(vmItem); |
| | | vmItem.Id = working.ID.ToString(); |
| | | vmItem.Name = working.Name; |
| | | vmItem.Hz = workingPumpInfo.CurrentHz; |
| | | vmItem.Color = HydroPumpCurveColorHelper.GetRandomColor(_workingList.IndexOf(working)); |
| | | if (_pumpInfo.RatedN.HasValue) |
| | | { |
| | | var speedRatio = workingPumpInfo.CurrentHz / _pumpInfo.RatedHz; |
| | | vmItem.N = Math.Round(_pumpInfo.RatedN.Value * speedRatio, 1); |
| | | } |
| | | vmItem.CurveName = $"{working.Name}({vmItem.Hz}hz)"; |
| | | if (_allWorkingCalcuResultDict == null) |
| | | { |
| | | _allWorkingCalcuResultDict = new Dictionary<HydroWorkingVmo, Dictionary<string, HydroCalcuVisualResult>>(); |
| | | } |
| | | if (!_allWorkingCalcuResultDict.ContainsKey(working)) |
| | | { |
| | | _hydroInfo.UpdateWorkingInfo(workingInfo); |
| | | var calcuResult = _hydroInfo.Calcu(Yw.EPAnet.CalcuMode.MinorLoss); |
| | | _allWorkingCalcuResultDict.Add(working, calcuResult?.GetVisualDict()); |
| | | } |
| | | var calcuResultVisualDict = _allWorkingCalcuResultDict[working]; |
| | | var calcuPumpResult = calcuResultVisualDict?.GetValue(_pumpInfo.Code) as HydroCalcuPumpResult; |
| | | if (calcuPumpResult != null) |
| | | { |
| | | vmItem.Q = calcuPumpResult.CalcuQ ?? 0; |
| | | vmItem.H = calcuPumpResult.CalcuH ?? 0; |
| | | vmItem.P = calcuPumpResult.CalcuP; |
| | | vmItem.E = calcuPumpResult.CalcuE; |
| | | } |
| | | |
| | | if (vm.CurveQH != null) |
| | | { |
| | | var qh_pts = vm.CurveQH.GetPointList(20); |
| | | var qh_run_pts = qh_pts.GetQHPointListByN(vm.RatedHz, vmItem.Hz); |
| | | vmItem.CurveQH = new CubicSpline2d(qh_run_pts); |
| | | } |
| | | |
| | | if (vm.CurveQP != null) |
| | | { |
| | | var qp_pts = vm.CurveQP.GetPointList(20); |
| | | var qp_run_pts = qp_pts.GetQPPointListByN(vm.RatedHz, vmItem.Hz); |
| | | vmItem.CurveQP = new CubicSpline2d(qp_run_pts); |
| | | } |
| | | |
| | | if (vm.CurveQE != null) |
| | | { |
| | | var qe_pts = vm.CurveQE.GetPointList(20); |
| | | var qe_run_pts = qe_pts.GetQEPointListByN(vm.RatedHz, vmItem.Hz); |
| | | vmItem.CurveQE = new CubicSpline2d(qe_run_pts); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | return vm; |
| | | _allWorkingList = allWorkingList; |
| | | this.simulationPumpAnalyChartCtrl1.SetBindingData(_hydroInfo, _pumpInfo, _allWorkingList); |
| | | } |
| | | |
| | | |
| | | } |
| | | } |