Ejemplo n.º 1
0
        /// <summary>
        /// Формирование массива значений оси Y
        /// </summary>
        public static double[] getYArrayLine_PCP(double[] xValue, string Line, SettingForPCP pcp)
        {
            double speed = pcp.Speed;

            int size = xValue.Length;

            double[] arr = new double[size];

            for (int i = 0; i < size; i++)
            {
                double H = xValue[i];

                switch (Line)
                {
                case "Расход":
                    arr[i] = pcp.CalcRate(H, speed);
                    break;

                case "Кр. момент":
                    arr[i] = pcp.CalcTorque(H, speed);
                    break;

                case "Мощность":
                    arr[i] = pcp.CalcPower(H, speed);
                    break;

                default:
                    MessageBox.Show("Ошибка при выводе графика ВШН", "Ошибка!");
                    return(null);
                }
            }

            return(arr);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Формирование массива значений оси Х графика ВШН
        /// </summary>
        public static double[] getXArrayGasH_PCP(SettingForPCP pcp)
        {
            double dH   = 4.0;
            int    size = 0;

            for (size = 0; size < 2000; size++)
            {
                if (pcp.CalcRate(size * dH, pcp.Speed) <= 0)
                {
                    break;
                }
            }

            double[] arr = new double[size];
            for (int i = 0; i < size; i++)
            {
                arr[i] = i * dH;
            }

            return(arr);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Загрузка графика ВШН
        /// </summary>
        public static void DrawPcpChart(Chart Chart_PCP, SettingForPCP settings)
        {
            Chart_PCP.ChartAreas.Clear();
            Chart_PCP.Legends.Clear();
            Chart_PCP.Series.Clear();
            var Area = new ChartArea("Area");

            Area.Position          = new ElementPosition(10, 10, 91, 85);
            Area.InnerPlotPosition = new ElementPosition(12, 0, 75, 90);
            Chart_PCP.ChartAreas.Add(Area);
            Chart_PCP.Legends.Add(new Legend("Legend"));
            Chart_PCP.Palette = ChartColorPalette.Bright;
            Chart_PCP.ChartAreas["Area"].AxisY.MajorGrid.LineDashStyle = ChartDashStyle.Dash;
            Chart_PCP.ChartAreas["Area"].AxisY.MajorGrid.LineColor     = Color.Gray;
            Chart_PCP.ChartAreas["Area"].AxisX.MajorGrid.LineDashStyle = ChartDashStyle.Dash;
            Chart_PCP.ChartAreas["Area"].AxisX.MajorGrid.LineColor     = Color.Gray;


            // Добавим линию расхода
            Chart_PCP.Series.Add(new Series("Расход"));
            Chart_PCP.Series["Расход"].ChartArea = "Area";
            Chart_PCP.Series["Расход"].Legend    = "Legend";
            Chart_PCP.Series["Расход"].ChartType = SeriesChartType.Line;

            // Добавим линию Кр. момент
            Chart_PCP.Series.Add(new Series("Кр. момент"));
            Chart_PCP.Series["Кр. момент"].ChartArea = "Area";
            Chart_PCP.Series["Кр. момент"].Legend    = "Legend";
            Chart_PCP.Series["Кр. момент"].ChartType = SeriesChartType.Line;
            Chart_PCP.Series["Кр. момент"].YAxisType = AxisType.Primary;

            // Добавим линию Мощность
            Chart_PCP.Series.Add(new Series("Мощность"));
            Chart_PCP.Series["Мощность"].ChartArea = "Area";
            Chart_PCP.Series["Мощность"].Legend    = "Legend";
            Chart_PCP.Series["Мощность"].ChartType = SeriesChartType.Line;


            // Добавим данные линии
            double[] xArrayGasH = getXArrayGasH_PCP(settings);
            double[] yArrayRate = getYArrayLine_PCP(xArrayGasH, Chart_PCP.Series["Расход"].Name, settings);
            Chart_PCP.Series["Расход"].Points.DataBindXY(xArrayGasH, yArrayRate);
            Chart_PCP.Series["Расход"].BorderWidth = 3;

            double[] yArrayEfficiency = getYArrayLine_PCP(xArrayGasH, Chart_PCP.Series["Кр. момент"].Name, settings);
            Chart_PCP.Series["Кр. момент"].Points.DataBindXY(xArrayGasH, yArrayEfficiency);
            Chart_PCP.Series["Кр. момент"].BorderWidth = 3;

            double[] yArrayPower = getYArrayLine_PCP(xArrayGasH, Chart_PCP.Series["Мощность"].Name, settings);
            Chart_PCP.Series["Мощность"].Points.DataBindXY(xArrayGasH, yArrayPower);
            Chart_PCP.Series["Мощность"].BorderWidth = 3;

            // Дополнительные шкалы для графиков
            CreateYAxis(Chart_PCP, Area, Chart_PCP.Series["Расход"], 6, 17, 18, true);
            CreateYAxis(Chart_PCP, Area, Chart_PCP.Series["Мощность"], 67, 26, -3, false);

            Axis areaAxisAxisY = Area.AxisY;

            areaAxisAxisY.IsStartedFromZero = Area.AxisY.IsStartedFromZero;
            areaAxisAxisY.LabelStyle.Font   = Area.AxisY.LabelStyle.Font;
            areaAxisAxisY.Title             = Chart_PCP.Series["Кр. момент"].Name + ", кгс·м";
            areaAxisAxisY.TitleForeColor    = Color.DarkCyan;
            areaAxisAxisY.Minimum           = 0;
            areaAxisAxisY.LineWidth         = 3;
            areaAxisAxisY.LineColor         = Chart_PCP.Series["Кр. момент"].Color;

            Axis areaAxisAxisX = Area.AxisX;

            areaAxisAxisX.Minimum           = 0;
            areaAxisAxisX.IsStartedFromZero = Area.AxisX.IsStartedFromZero;
            areaAxisAxisX.LabelStyle.Font   = Area.AxisX.LabelStyle.Font;
            areaAxisAxisX.Title             = "Напор, м";
            areaAxisAxisX.TitleForeColor    = Color.DarkCyan;
        }