namespace HStation.WinFrmUI.PhartRelation
{
public partial class PumpCurveExpandDlg : DevExpress.XtraBars.Ribbon.RibbonForm
{
public PumpCurveExpandDlg()
{
InitializeComponent();
this.repTrackBar1.ShowValueToolTip = false;
this.IconOptions.Icon = Yw.WinFrmUI.GlobalParas.AppIcon;
}
///
/// 回调事件
///
public event Func> ReloadDataEvent;
private Yw.Geometry.CubicSpline2d _qh = null;
private Yw.Geometry.CubicSpline2d _qe = null;
private Yw.Geometry.CubicSpline2d _qp = null;
///
/// 初始化数据
///
public void SetBindingData(
Yw.Pump.CurveQH curve_qh,
Yw.Pump.CurveQE curve_qe,
Yw.Pump.CurveQP curve_qp)
{
if (curve_qh == null)
{
return;
}
Yw.Geometry.CubicSpline2d qh = null, qe = null, qp = null;
qh = new Yw.Geometry.CubicSpline2d(curve_qh.FeatCurve.GetPointList());
if (curve_qe != null)
qe = new Yw.Geometry.CubicSpline2d(curve_qe.FeatCurve.GetPointList());
if (curve_qp != null)
qp = new Yw.Geometry.CubicSpline2d(curve_qp.FeatCurve.GetPointList());
_qh = qh;
_qe = qe;
_qp = qp;
this.pumpPerformChart1.SetBindingData(qh, qe, qp);
}
///
/// 初始化数据
///
public void SetBindingData(Yw.Geometry.CubicSpline2d qh,
Yw.Geometry.CubicSpline2d qe,
Yw.Geometry.CubicSpline2d qp)
{
_qh = qh;
_qe = qe;
_qp = qp;
this.pumpPerformChart1.SetBindingData(qh, qe, qp);
}
private void barEditTrackBar_EditValueChanged(object sender, EventArgs e)
{
if (this.barEditTrackBar.EditValue is not int ratio)
{
this.barStaticItem.Caption = $"X%";
return;
}
this.barStaticItem.Caption = $"{ratio}%";
var bol = Out(ratio, out Yw.Geometry.CubicSpline2d qh, out Yw.Geometry.CubicSpline2d qe, out Yw.Geometry.CubicSpline2d qp);
if (!bol)
return;
this.pumpPerformChart1.SetBindingData(qh, qe, qp);
}
private async void barBtnSave_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (this.barEditTrackBar.EditValue is not int ratio)
{
return;
}
var bol = Out(ratio, out Yw.Geometry.CubicSpline2d qh, out Yw.Geometry.CubicSpline2d qe, out Yw.Geometry.CubicSpline2d qp);
if (!bol)
return;
Yw.Pump.CurveQH pump_qh = null;
Yw.Pump.CurveQE pump_qe = null;
Yw.Pump.CurveQP pump_qp = null;
var qh_pt_list = qh.GetPointList();
pump_qh = new Yw.Pump.CurveQH(Yw.Pump.eFeatType.Cubic, qh_pt_list);
if (qe != null)
{
var qe_pt_list = qe.GetPointList();
pump_qe = new Yw.Pump.CurveQE(Yw.Pump.eFeatType.Cubic, qe_pt_list);
}
if (qp != null)
{
var qp_pt_list = qp.GetPointList();
qp = new Yw.Geometry.CubicSpline2d(qp_pt_list);
pump_qp = new Yw.Pump.CurveQP(Yw.Pump.eFeatType.Cubic, qp_pt_list);
}
var result = await this.ReloadDataEvent?.Invoke(pump_qh, pump_qe, pump_qp);
if (!result)
{
XtraMessageBox.Show("保存失败!");
return;
}
XtraMessageBox.Show("保存成功!");
this.DialogResult = DialogResult.OK;
this.Close();
}
private bool Out(double ratio, out Yw.Geometry.CubicSpline2d qh, out Yw.Geometry.CubicSpline2d qe, out Yw.Geometry.CubicSpline2d qp)
{
qh = null;
qe = null;
qp = null;
if (_qh == null)
return false;
qh = new Yw.Geometry.CubicSpline2d(_qh);
qh.MaxX = qh.MaxX * ratio / 100;
if (_qe != null)
{
qe = new Yw.Geometry.CubicSpline2d(_qe);
qe.MaxX = qe.MaxX * ratio / 100;
}
if (_qp != null)
{
qp = new Yw.Geometry.CubicSpline2d(_qp);
qp.MaxX = qp.MaxX * ratio / 100;
}
return true;
}
}
}