using DevExpress.Spreadsheet; using Yw.Geometry; using Yw.WinFrmUI.Phart; namespace HStation.WinFrmUI.PhartRelation { public partial class PumpVariableSpeedChartDlg : XtraForm { public PumpVariableSpeedChartDlg() { InitializeComponent(); this.Text = "曲线视图"; this.WindowState = FormWindowState.Maximized; this.pumpVariableSpeedInfoCtrl1.SetEvent += (id, hz, ex_ratio, qh, qe, qp) => { this.pumpVariableSpeedChart.Set(id,hz,ex_ratio, qh, qe, qp); ResetSectPointGrid(); }; this.pumpVariableSpeedInfoCtrl1.SetInfoEvent += (id, color) => { this.pumpVariableSpeedChart.SetInfo(id, color); ResetSectPointGrid(); }; this.pumpVariableSpeedChart.AddBySpeedEvent += () => { AddBySpeed(); ResetSectPointGrid(); }; this.pumpVariableSpeedChart.AddByHzEvent += () => { AddByHz(); ResetSectPointGrid(); }; this.pumpVariableSpeedChart.AddByPointEvent += () => { AddByPoint(); ResetSectPointGrid(); }; this.pumpVariableSpeedInfoCtrl1.SetDesignPointEvent += (q, h) => { _design_pt = new Point2d(q, h); this.pumpVariableSpeedChart.SetDesignPt(q,h); ResetSectPointGrid(); }; this.pumpVariableSpeedChart.OnCalcQueryPoint += (id, pt) => { this.pumpVariableSpeedInfoCtrl1.SetQueryInfo(id, pt); }; } private Yw.Geometry.Point2d _design_pt; /// /// 设置 /// /// /// /// /// public string SetBindingData( Yw.WinFrmUI.Phart.PumpVariableSpeedViewModel vm, Yw.Geometry.Point2d design_pt) { _design_pt = design_pt; var vm_list = new List(); var vm_info = new Yw.WinFrmUI.Phart.PumpVariableSpeedInfoViewModel(vm); vm_info.IsDefault = true; vm_info.Color = GetRandomColor(0); vm_info.Calc(); vm_list.Add(vm_info); this.pumpVariableSpeedInfoCtrl1.SetBindingData(vm_list, _design_pt); this.pumpVariableSpeedChart.Add(vm_list, _design_pt); return string.Empty; } private void ResetSectPointGrid() { var vm_list = this.pumpVariableSpeedChart.GetList(); this.pumpVariableSpeedInfoCtrl1.SetSectPoint(vm_list); } private void AddBySpeed() { var list = this.pumpVariableSpeedInfoCtrl1.GetList(); if (list == null || list.Count < 1) { return; } var index = list.Count; var vm_def = list.First(); var dlg = new SetValueDlg(); dlg.SetBindingData(vm_def.RatedSpeed); dlg.VerifyValueChanged += (speed) => { var hz = Math.Round(speed / vm_def.RatedSpeed * 50, 1); if (hz > 50 || hz < 10) { return false; } var vm = new PumpVariableSpeedInfoViewModel(vm_def); vm.Id = Guid.NewGuid().ToString(); vm.Name = this.pumpVariableSpeedChart.LineNameShowHz ? hz.ToString() : speed.ToString(); vm.Color = GetRandomColor(index); vm.CurrentHz = hz; vm.CurrentSpeed = speed; vm.Calc(); this.pumpVariableSpeedInfoCtrl1.Add(vm); this.pumpVariableSpeedChart.Add(vm, _design_pt); return true; }; dlg.ShowDialog(); } private void AddByHz() { var list = this.pumpVariableSpeedInfoCtrl1.GetList(); if (list == null || list.Count < 1) { return; } var index = list.Count; var vm_def = list.First(); var dlg = new SetValueDlg(); dlg.VerifyValueChanged += (hz) => { if (hz > 50 || hz < 10) { return false; } var speed = Math.Round(hz / 50 * vm_def.RatedSpeed); var vm = new PumpVariableSpeedInfoViewModel(vm_def); vm.Id = Guid.NewGuid().ToString(); vm.Name = this.pumpVariableSpeedChart.LineNameShowHz ? hz.ToString() : speed.ToString(); vm.Color = GetRandomColor(index); vm.CurrentHz = hz; vm.CurrentSpeed = speed; vm.Calc(); this.pumpVariableSpeedInfoCtrl1.Add(vm); this.pumpVariableSpeedChart.Add(vm, _design_pt); return true; }; dlg.ShowDialog(); } private void AddByPoint() { var list = this.pumpVariableSpeedInfoCtrl1.GetList(); if (list == null || list.Count < 1) { return; } var index = list.Count; var vm_def = list.First(); var dlg = new SetPointDlg(); dlg.SetBindingData(); dlg.VerifyValueChanged += (x, y) => { var pt = new Yw.Geometry.Point2d(x, y); var speed = PumpCalcHelper.GetSimuValue(vm_def.Qh, pt, vm_def.RatedSpeed); var hz = Math.Round(speed / vm_def.RatedSpeed * 50, 1); if (hz > 50 || hz < 20) { return false; } var vm = new PumpVariableSpeedInfoViewModel(vm_def); vm.Id = Guid.NewGuid().ToString(); vm.Name = this.pumpVariableSpeedChart.LineNameShowHz ? hz.ToString() : speed.ToString(); vm.Color = GetRandomColor(index); vm.CurrentHz = hz; vm.CurrentSpeed = speed; vm.Calc(); this.pumpVariableSpeedInfoCtrl1.Add(vm); this.pumpVariableSpeedChart.Add(vm, _design_pt); return true; }; dlg.ShowDialog(); } #region Color private List _color_array = new List() { Color.Red, Color.Blue, Color.Green,Color.DodgerBlue, Color.Fuchsia, Color.MidnightBlue, Color.Maroon, Color.Aquamarine, Color.Bisque,Color.BurlyWood }; /// /// 获取随机颜色 /// /// private Color GetRandomColor(int count) { if (count < _color_array.Count) { return _color_array[count]; } var _random = new Random(); int r = _random.Next(1, 256); int g = _random.Next(1, 256); int b = _random.Next(1, 256); return Color.FromArgb(r, g, b); } #endregion } }