using DevExpress.XtraEditors;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Yw.Geometry;
using Yw.Pump;
using Yw.WinFrmUI.Phart;
namespace HStation.WinFrmUI
{
public partial class SimulationPumpAnalyChartCtrl : DevExpress.XtraEditors.XtraUserControl
{
public SimulationPumpAnalyChartCtrl()
{
InitializeComponent();
}
///
/// 绑定数据
///
public void SetBindingData
(
Yw.Model.HydroModelInfo hydroInfo,
HydroCalcuResult calcuResult,
Yw.Model.HydroPumpInfo pumpInfo
)
{
var allCalcuResultVisualDict = calcuResult?.GetVisualDict();
SetBindingData(hydroInfo, allCalcuResultVisualDict, pumpInfo);
}
///
/// 绑定数据
///
public void SetBindingData
(
Yw.Model.HydroModelInfo hydroInfo,
Dictionary allCalcuResultVisualDict,
Yw.Model.HydroPumpInfo pumpInfo
)
{
if (hydroInfo == null)
{
return;
}
if (pumpInfo == null)
{
return;
}
var vm = new PumpRunViewViewModel();
vm.Id = pumpInfo.Code;
vm.Name = pumpInfo.Name;
vm.CurveName = $"额定曲线({pumpInfo.RatedHz}hz)";
vm.RatedQ = pumpInfo.RatedQ ?? 0;
vm.RatedH = pumpInfo.RatedH ?? 0;
vm.RatedP = pumpInfo.RatedP;
vm.RatedN = pumpInfo.RatedN ?? 0;
vm.RatedHz = pumpInfo.RatedHz;
vm.Color = Color.Black;
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 (pumpInfo.LinkStatus == Yw.Hydro.PumpStatus.Open)
{
vm.Items = new List();
var vmItem = new PumpRunViewItemViewModel();
vm.Items.Add(vmItem);
vmItem.Id = string.Empty;
vmItem.Name = "运行";
vmItem.Hz = Math.Round(pumpInfo.RatedHz * pumpInfo.SpeedRatio, 1);
vmItem.Color = Color.Blue;
if (pumpInfo.RatedN.HasValue)
{
vmItem.N = Math.Round(pumpInfo.RatedN.Value * pumpInfo.SpeedRatio, 1);
}
var calcuResult = allCalcuResultVisualDict?.GetValue(pumpInfo.Code) as HydroCalcuPumpResult;
if (calcuResult != null)
{
vmItem.Q = calcuResult.CalcuQ ?? 0;
vmItem.H = calcuResult.CalcuH ?? 0;
vmItem.P = calcuResult.CalcuP;
vmItem.E = calcuResult.CalcuE;
}
vmItem.CurveName = $"运行曲线({vmItem.Hz}hz)";
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);
}
}
SetBindingData(vm);
}
///
/// 绑定数据
///
public void SetBindingData(PumpRunViewViewModel vm)
{
this.pumpRunViewChart1.SetBindingData(vm);
//this.barCheckE.Checked=this.pumpRunViewChart1.
}
//效率线
private void barCheckE_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
//this.pumpRunViewChart1.SetEQVisible
}
//功率线
private void barCheckP_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
}
//设置坐标轴
private void barBtnCoord_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.pumpRunViewChart1.SetChartAxis();
}
}
}