using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Windows.Forms; namespace IStation.WinFrmUI.Schedule { public partial class ParallelCurveViewDlg : DevExpress.XtraEditors.XtraForm { public ParallelCurveViewDlg() { InitializeComponent(); IconOptions.Icon = WinFrmUI.Properties.Resources.App; } private List ColorArray = new List() { Color.Red, Color.Blue, Color.Green, Color.DodgerBlue, Color.Fuchsia,Color.MidnightBlue,Color.Maroon, Color.Aquamarine, Color.Bisque ,Color.BurlyWood }; public void SetBindingData(double workQ, List anaSchemes) { if (anaSchemes == null || !anaSchemes.Any()) return; if (anaSchemes.Count > 10) return; if (anaSchemes.Count == 1) { var scheme = anaSchemes[0]; Model.CurveExpress QH = scheme.CurveInfoQH, QP = scheme.CurveInfoQP; var QE = Common.LxpFeatCurveHelper.CalculateE(Model.eCurveFitType.FourM, QH, QP); chartMultiCurveParallelCtrl1.AddCurve(-1, scheme.MachineName, QH, QE, QP, System.Drawing.Color.Black); chartMultiCurveParallelCtrl1.LineVisible = true; chartMultiCurveParallelCtrl1.CalcWorkPointByQ(workQ); return; } var theConnectCurve = new Model.ConnectCurveHelper(); for (int i = 0; i < anaSchemes.Count; i++) { var anaScheme = anaSchemes[i]; var QH = anaScheme.CurveInfoQH; var QP = anaScheme.CurveInfoQP; var QE = Common.LxpFeatCurveHelper.CalculateE(Model.eCurveFitType.CubicCurve, QH, QP); theConnectCurve.AddSinglePumpCurve(QH, QP); chartMultiCurveParallelCtrl1.AddCurve(anaScheme.PumpCurveID, anaScheme.MachineName, QH, QE, QP, ColorArray[i]); } if (!theConnectCurve.CalculateParallel(out List ConnectCurveQH, out List ConnectCurveQE, out List ConnectCurveQP)) { chartMultiCurveParallelCtrl1.CalcWorkPointByQ(workQ); MessageBox.Show("这些泵不适合并联"); return; } var curveExpressQH = new Model.CurveExpress(ConnectCurveQH); var curveExpressQE = new Model.CurveExpress(ConnectCurveQE); var curveExpressQP = new Model.CurveExpress(ConnectCurveQP); chartMultiCurveParallelCtrl1.AddCurve(-1, "并联曲线", curveExpressQH, curveExpressQE, curveExpressQP, System.Drawing.Color.Black); chartMultiCurveParallelCtrl1.LineVisible = true; chartMultiCurveParallelCtrl1.CalcWorkPointByQ(workQ); } } }