Beispiel #1
0
        private double[] f_绘制性能曲线(XYGraph 曲线控件, string 需要进行绘制的曲线ID, Grid 表格控件, string 采集样本_流量数据列名, string 采集样本_Y轴数据列名, int 拟合次数,int 分割点数)
        {
            List<double> 曲线X坐标集合 = new List<double>();
            List<double> 曲线Y坐标集合 = new List<double>();

            double[] 方程常量组;
            List<double> 拟合曲线X坐标集合;
            List<double> 拟合曲线Y坐标集合;
            for (int i = 0; i < 表格控件.ExportBandView.RowCount; i++)
            {
                double X = Convert.ToSingle(((DataRowView)表格控件.ExportBandView.GetRow(i))[采集样本_流量数据列名]);
                double Y = Convert.ToSingle(((DataRowView)表格控件.ExportBandView.GetRow(i))[采集样本_Y轴数据列名]);
                曲线X坐标集合.Add(X);
                曲线Y坐标集合.Add(Y);
            }
            if (曲线X坐标集合.Count == 0) return null;
            辅助库.CurveFitting.f_曲线拟合(曲线X坐标集合.ToArray(), 曲线Y坐标集合.ToArray(), 拟合次数, 分割点数, out 拟合曲线X坐标集合, out 拟合曲线Y坐标集合, out 方程常量组);
            //_曲线拟合.f_曲线拟合(曲线X坐标集合, 曲线Y坐标集合, 4,1000 ,out 拟合曲线X坐标集合, out 拟合曲线Y坐标集合);
            for (int j = 0; j < 曲线控件.Graph.Plots.Count; j++)
            {
                if (曲线控件.Graph.Plots[j].Tag.ToString().Equals(需要进行绘制的曲线ID))
                {
                    曲线控件.Graph.Plots[j].PlotXY(拟合曲线X坐标集合.ToArray(), 拟合曲线Y坐标集合.ToArray());
                }
            }
            return 方程常量组;
        }
Beispiel #2
0
        private bool 更新流量和汽蚀余量(Grid 表格控件,Decimal 批次ID)
        {
            double 流量=0;
             double 扬程 = 0;
             if (表格控件.ExportBandView.RowCount == 1)
             {
                 流量 = Convert.ToDouble(((DataRowView)表格控件.ExportBandView.GetRow(0))["流量"]);
                 扬程 = Convert.ToDouble(((DataRowView)表格控件.ExportBandView.GetRow(0))["扬程"]);
             }
             else if (表格控件.ExportBandView.RowCount == 0)
             {
                 流量 = 0;
                 扬程 = 0;
             }
             else
             {
                 计算临界值(批次ID);
                 return false;
             }
             xyGraph1.f_更新曲线标签(批次ID.ToString(), 流量);
             db_更新流量和扬程(批次ID, 流量, 扬程);

            return true;
        }
Beispiel #3
0
        private void f_绘制影子性能曲线(XYGraph 曲线控件, string 需要进行绘制的曲线ID, Grid 表格控件, string 采集样本_流量数据列名, string 采集样本_Y轴数据列名)
        {
            List<double> 曲线X坐标对集合 = new List<double>();
            List<double> 曲线Y坐标对集合 = new List<double>();
            for (int i = 0; i < 表格控件.ExportBandView.RowCount; i++)
            {
                double X =  Convert.ToSingle( ((DataRowView)表格控件.ExportBandView.GetRow(i))[采集样本_流量数据列名]);
                double Y = Convert.ToSingle(((DataRowView)表格控件.ExportBandView.GetRow(i))[采集样本_Y轴数据列名]);
                曲线X坐标对集合.Add(X);
                曲线Y坐标对集合.Add(Y);
            }

            for(int j=0;j<曲线控件.Graph.Plots.Count;j++)
            {
                if (曲线控件.Graph.Plots[j].Tag.ToString().Equals(需要进行绘制的曲线ID))
                {
                    曲线控件.Graph.Plots[j].PlotXY(曲线X坐标对集合.ToArray(), 曲线Y坐标对集合.ToArray());
                }
            }
        }
Beispiel #4
0
        private void f_绘制采集曲线(XYGraph 曲线控件, string 需要进行绘制的曲线ID, Grid 表格控件, string 采集样本_Y轴数据列名)
        {
            List<double> 曲线X坐标对集合 = new List<double>();
            List<double> 曲线Y坐标对集合 = new List<double>();
            曲线控件.汽蚀余量X轴 = 0;
            曲线控件.汽蚀余量Y轴 = 0;

            DataTable datatable汽蚀试验 = 数据库操作类.GetTableBySql("select * from 汽蚀试验 ORDER by 汽蚀余量 DESC");
             foreach (DataRow dr in datatable汽蚀试验.Rows)
             {
                 if (需要进行绘制的曲线ID.Equals(Convert.ToString(dr["批次编号"])))
                 {
                     double n流量 = Convert.ToDouble(dr["流量"]);
                     double n温度 = Convert.ToDouble(dr["温度"]);
                     double n进口表压 = Convert.ToDouble(dr["进口压力"]);
                     double 汽蚀余量 = Convert.ToDouble(dr["汽蚀余量"]);
                     double Y = Convert.ToDouble(dr[采集样本_Y轴数据列名]);
                     曲线X坐标对集合.Add(汽蚀余量);
                     曲线Y坐标对集合.Add(Y);
                 }
             }

            //显示曲线(曲线控件, 需要进行绘制的曲线ID);
            for (int j = 0; j < 曲线控件.Graph.Plots.Count; j++)
            {
                if ((曲线控件.Graph.Plots[j].Tag.ToString().Equals(需要进行绘制的曲线ID)) &&
                    ((曲线X坐标对集合.Count > 0) && (曲线Y坐标对集合.Count > 0)))
                {
                    曲线控件.Graph.Plots[j].Visible = true;
                    曲线控件.Graph.Plots[j].PlotXY(曲线X坐标对集合.ToArray(), 曲线Y坐标对集合.ToArray());
                    //曲线控件.f_设置汽蚀余量(需要进行绘制的曲线ID, 曲线汽蚀余量, 曲线X坐标对集合, 曲线Y坐标对集合);
                    f_绘制临界点(曲线控件, 需要进行绘制的曲线ID, 采集样本_Y轴数据列名);
                }
            }
        }