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