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
}
}