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.pumpVariableSpeedChart.SetQeVisible(false);
|
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.SetEquipPt(_design_pt);
|
ResetSectPointGrid();
|
};
|
|
this.pumpVariableSpeedChart.OnCalcQueryPoint += (id, pt) =>
|
{
|
this.pumpVariableSpeedInfoCtrl1.SetQueryInfo(id, pt);
|
};
|
|
|
}
|
|
private Yw.Geometry.Point2d _design_pt;
|
|
|
/// <summary>
|
/// 设置
|
/// </summary>
|
/// <param name="list"></param>
|
/// <param name="design_pt"></param>
|
/// <param name="is_parallel"></param>
|
/// <returns></returns>
|
public string SetBindingData(
|
Yw.WinFrmUI.Phart.PumpVariableSpeedViewModel vm,
|
Yw.Geometry.Point2d design_pt)
|
{
|
_design_pt = design_pt;
|
var vm_list = new List<Yw.WinFrmUI.Phart.PumpVariableSpeedInfoViewModel>();
|
|
var vm_info = new Yw.WinFrmUI.Phart.PumpVariableSpeedInfoViewModel(vm);
|
vm_info.IsDefault = true;
|
vm_info.Name = $"{vm.CurrentSpeed}({vm.CurrentHz}hz)";
|
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.GetVmList();
|
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 = $"{speed}({hz}hz)";
|
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 = $"{speed}({hz}hz)";
|
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 = $"{speed}({hz}hz)";
|
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> _color_array = new List<Color>()
|
{
|
Color.Red, Color.Blue, Color.Green,Color.DodgerBlue,
|
Color.Fuchsia, Color.MidnightBlue, Color.Maroon, Color.Aquamarine,
|
Color.Bisque,Color.BurlyWood
|
};
|
|
/// <summary>
|
/// 获取随机颜色
|
/// </summary>
|
/// <returns></returns>
|
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
|
|
}
|
}
|