namespace HStation.WinFrmUI { public partial class PumpChartViewCtrl : DevExpress.XtraEditors.XtraUserControl { public PumpChartViewCtrl() { InitializeComponent(); } private Yw.Vmo.PhartDiagramExGraphListVmo _vmo = null; private Yw.WinFrmUI.Phart.PumpCurveViewModel _vm = null; /// /// 数据变更事件 /// public event Action DataChangedEvent; /// /// 绑定数据 /// public void SetBindingData(Yw.Vmo.PhartDiagramExGraphListVmo vmo, double nr) { _vmo = vmo; if (vmo == null) { ClearBindingData(); return; } var vm_list = vmo.GetPumpCurveViewMdoelList(); if (vm_list == null || !vm_list.Any()) { ClearBindingData(); return; } var vm_def = vmo.GetDefaultPumpCurveViewMdoel(); if (vm_def == null) return; var vm_v_speed_list = vmo.GetVariableSpeedPumpCurveViewMdoelList(); var vm_e_eff_list = vmo.GetCurveEqualEViewMdoelList(); var vm = new Yw.WinFrmUI.Phart.PumpCurveViewModel(); vm.Id = ""; vm.ColorQH = Color.Blue; vm.ColorQE = Color.Green; vm.ColorQP = Color.Red; vm.CurveQHName = "QH"; vm.CurveQPName = "QP"; vm.CurveQH = vm_def.CurveQH.FeatCurve.GetPointList(50); vm.CurveQE = vm_def.CurveQE?.FeatCurve.GetPointList(50); vm.CurveQP = vm_def.CurveQP?.FeatCurve.GetPointList(50); vm.PointListQH = vm.CurveQH; vm.PointListQE = vm.CurveQE; vm.PointListQP = vm.CurveQP; vm.Equip = null; if (vm_e_eff_list == null || !vm_e_eff_list.Any()) { var curve_qe = vm_def.CurveQE.FeatCurve; if (curve_qe != null && curve_qe.IsValid()) { var max_eff = curve_qe.GetPointList().Max(x => x.Y); var eff_list = EqualParaCurveEListHelper.CalcEqualParaCurveE(vm_def, 50, 30, max_eff - 1); if (eff_list != null && eff_list.Any()) { vm.EqualEffList = new List(); foreach (var item in eff_list) { var def_pt_list = item.DefinePoints; var eff_vm = new Yw.WinFrmUI.Phart.PumpCurveEqualEffViewModel(); eff_vm.Id = Guid.NewGuid().ToString(); eff_vm.CurveName = $"{item.Eff:N1}"; eff_vm.Color = Color.DarkGreen; eff_vm.CurveEqualEff = item.DefinePoints; eff_vm.Tension = item.Tension; eff_vm.IsClosed = item.IsClosed; vm.EqualEffList.Add(eff_vm); } } } } //vm.VariableSpeedList = new List(); //vm.EqualPowerList = new List(); //for (int eff = 30; eff < 90; eff += 1) //{ // var ve = new Yw.WinFrmUI.Phart.PumpChartEqualEffViewModel(); // //ve.Id = rhs.Id; // ve.CurveName = $"{eff}"; // ve.Color = Color.ForestGreen; // ve.CurveEqualEff = new List(); // for (int hz = 30; hz <= 50; hz += 5) // { // var qe = vm_defult.CurveQE.ToNewByN(50, hz); // var q_array = qe.FeatCurve.GetPointsX(eff); // if (q_array == null || !q_array.Any()) // { // continue; // } // var qh = vm_defult.CurveQH.ToNewByN(50, hz); // var flow = q_array.FirstOrDefault(); // var head = qh.FeatCurve.GetPointY(flow); // ve.CurveEqualEff.Add(new Yw.Geometry.Point2d(flow, head)); // } // if (!ve.CurveEqualEff.Any()) // { // continue; // } // vm.EqualEffList.Add(ve); //} //for (int hz = 30; hz < 50; hz += 5) //{ // var tN = nr * hz / 50; // var vs = new Yw.WinFrmUI.Phart.PumpChartVariableSpeedViewModel(); // vs.CurveQHName = $"{tN}"; // vs.CurveQPName = $"{tN}"; // vs.CurveQH = vm_defult.CurveQH.GetPointListByN(nr, tN, 50); // vs.CurveQE = vm_defult.CurveQE.GetPointListByN(nr, tN, 50); // vs.CurveQP = vm_defult.CurveQP.GetPointListByN(nr, tN, 50); // vs.Hz = hz; // vs.N = tN; // vm.VariableSpeedList.Add(vs); //} this.pumpChart1.SetBindingData(vm); } /// /// 清空绑定数据 /// public void ClearBindingData() { this.pumpChart1.ClearBindingData(); } /// /// 获取 /// public Yw.Vmo.PhartDiagramExGraphListVmo Get() { return new Yw.Vmo.PhartDiagramExGraphListVmo(); } private void barCekEffVisible_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { } private void barCekPowerVisible_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { } private void barCekSplitPanel_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { } } }