private void UpdateDiagramData()
        {
            var defenceDiagramSettingsVm = new DefenceDiagramSettingsVm(variableParametersValue);

            if (defenceDiagramSettingsVm.HzCrossHkDown == 0 && defenceDiagramSettingsVm.HzCrossHkUp == 0)
            {
                dataGridViewDefenceDiagramDown.RowCount = defenceDiagramSettingsVm.vVeight.Count();
                dataGridViewDefenceDiagramUp.RowCount   = defenceDiagramSettingsVm.vVeight.Count();
                for (int i = 0; i < defenceDiagramSettingsVm.vVeight.Count(); i++)
                {
                    dataGridViewDefenceDiagramDown[0, i].Value = i;
                    dataGridViewDefenceDiagramDown[1, i].Value = Math.Round(defenceDiagramSettingsVm.vVeight[i], 3);
                    dataGridViewDefenceDiagramDown[2, i].Value = Math.Round(defenceDiagramSettingsVm.hzVeightDown[i], 3);
                    dataGridViewDefenceDiagramDown[3, i].Value = Math.Round(defenceDiagramSettingsVm.vPeople[i], 3);
                    dataGridViewDefenceDiagramDown[4, i].Value = Math.Round(defenceDiagramSettingsVm.hzPeopleDown[i], 3);
                    dataGridViewDefenceDiagramDown[5, i].Value = Math.Round(defenceDiagramSettingsVm.vEquipment[i], 3);
                    dataGridViewDefenceDiagramDown[6, i].Value = Math.Round(defenceDiagramSettingsVm.hzEquipmentDown[i], 3);
                    dataGridViewDefenceDiagramDown[7, i].Value = Math.Round(defenceDiagramSettingsVm.vRevision[i], 3);
                    dataGridViewDefenceDiagramDown[8, i].Value = Math.Round(defenceDiagramSettingsVm.hzRevision[i], 3);
                    dataGridViewDefenceDiagramUp[0, i].Value   = i;
                    dataGridViewDefenceDiagramUp[1, i].Value   = Math.Round(defenceDiagramSettingsVm.vVeight[i], 3);
                    dataGridViewDefenceDiagramUp[2, i].Value   = Math.Round(defenceDiagramSettingsVm.hzVeightUp[i], 3);
                    dataGridViewDefenceDiagramUp[3, i].Value   = Math.Round(defenceDiagramSettingsVm.vPeople[i], 3);
                    dataGridViewDefenceDiagramUp[4, i].Value   = Math.Round(defenceDiagramSettingsVm.hzPeopleUp[i], 3);
                    dataGridViewDefenceDiagramUp[5, i].Value   = Math.Round(defenceDiagramSettingsVm.vEquipment[i], 3);
                    dataGridViewDefenceDiagramUp[6, i].Value   = Math.Round(defenceDiagramSettingsVm.hzEquipmentUp[i], 3);
                    dataGridViewDefenceDiagramUp[7, i].Value   = Math.Round(defenceDiagramSettingsVm.vRevision[i], 3);
                    dataGridViewDefenceDiagramUp[8, i].Value   = Math.Round(defenceDiagramSettingsVm.hzRevision[i], 3);
                }
            }
            else if (defenceDiagramSettingsVm.HzCrossHkDown == 1 || defenceDiagramSettingsVm.HzCrossHkUp == 1)
            {
                MessageBox.Show("Защитная диаграмма пересекается с критической!", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
            }
        }
        private void MakeSolvedDiagramGraphic()
        {
            var selectedIndex            = SelectDataToDiagram();
            var defenceDiagramSettingsVm = new DefenceDiagramSettingsVm(variableParametersValue);

            if (defenceDiagramSettingsVm.HzCrossHkDown == 1 || defenceDiagramSettingsVm.HzCrossHkUp == 1)
            {
                MessageBox.Show("Защитная диаграмма пересекается с критической!", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
            }
            else
            {
                //Legend
                _plotDefenceDiagram.Model.PlotType = PlotType.XY;
                //plotDefenceDiagram.Model.LegendTitle = "Legend";
                _plotDefenceDiagram.Model.LegendOrientation = LegendOrientation.Horizontal;
                _plotDefenceDiagram.Model.LegendPlacement   = LegendPlacement.Outside;
                _plotDefenceDiagram.Model.LegendPosition    = LegendPosition.TopRight;
                _plotDefenceDiagram.Model.LegendBackground  = OxyColor.FromAColor(200, OxyColors.White);
                _plotDefenceDiagram.Model.LegendBorder      = OxyColors.Gray;
                //Axis
                var xAxis = new LinearAxis(AxisPosition.Bottom, 0)
                {
                    MajorGridlineStyle = LineStyle.Solid,
                    MinorGridlineStyle = LineStyle.Dot,
                    Title   = "Путь (м)",
                    Minimum = _selectedHz[0],
                    Maximum = -_mineConfig.MainViewConfig.BorderZero.Value
                };
                if (selectedIndex > 3)
                {
                    xAxis.Minimum = -_mineConfig.MainViewConfig.Border.Value;
                    xAxis.Maximum = _selectedHz[0];
                }
                _plotDefenceDiagram.Model.Axes.Add(xAxis);
                var yAxis = new LinearAxis(AxisPosition.Left, 0)
                {
                    MajorGridlineStyle = LineStyle.Solid,
                    MinorGridlineStyle = LineStyle.Dot,
                    Title   = "Скорость (м/с)",
                    Minimum = 0,
                    Maximum = 1.2 * Convert.ToDouble(_selectedV[0], CultureInfo.GetCultureInfo("en-US"))
                };
                _plotDefenceDiagram.Model.Axes.Add(yAxis);
                // Create Line series
                var s1 = new LineSeries {
                    StrokeThickness = 1, Color = OxyColors.Red
                };
                for (int i = 0; i < _points; i++)
                {
                    s1.Points.Add(new DataPoint(_selectedHz[i], _selectedV[i]));
                }
                // add Series and Axis to plot model
                _plotDefenceDiagram.Model.Series.Add(s1);
            }
        }
        private void WritePointsToFile(string path)
        {
            var defenceDiagramSettingsVm = new DefenceDiagramSettingsVm(variableParametersValue);

            try
            {
                FileStream   fs = new FileStream(path, FileMode.Create, FileAccess.Write);
                StreamWriter sw = new StreamWriter(fs);
                string       Line;
                Line = @"Тахограмма ""груз""";
                sw.WriteLine(Line);
                for (int i = 0; i < _points; i++)
                {
                    Line = Math.Round(defenceDiagramSettingsVm.hzVeightUp[i], 3).ToString(CultureInfo.GetCultureInfo("en-US")) + "[$]" + Math.Round(defenceDiagramSettingsVm.vVeight[i], 3).ToString(CultureInfo.GetCultureInfo("en-US"));
                    sw.WriteLine(Line);
                }
                Line = @"Тахограмма ""люди""";
                sw.WriteLine(Line);
                for (int i = 0; i < _points; i++)
                {
                    Line = Math.Round(defenceDiagramSettingsVm.hzPeopleUp[i], 3).ToString(CultureInfo.GetCultureInfo("en-US")) + "[$]" + Math.Round(defenceDiagramSettingsVm.vPeople[i], 3).ToString(CultureInfo.GetCultureInfo("en-US"));
                    sw.WriteLine(Line);
                }
                Line = @"Тахограмма ""оборудование""";
                sw.WriteLine(Line);
                for (int i = 0; i < _points; i++)
                {
                    Line = Math.Round(defenceDiagramSettingsVm.hzEquipmentUp[i], 3).ToString(CultureInfo.GetCultureInfo("en-US")) + "[$]" + Math.Round(defenceDiagramSettingsVm.vEquipment[i], 3).ToString(CultureInfo.GetCultureInfo("en-US"));
                    sw.WriteLine(Line);
                }
                Line = @"Тахограмма ""ревизия""";
                sw.WriteLine(Line);
                for (int i = 0; i < _points; i++)
                {
                    Line = Math.Round(defenceDiagramSettingsVm.hzRevision[i], 3).ToString(CultureInfo.GetCultureInfo("en-US")) + "[$]" + Math.Round(defenceDiagramSettingsVm.vRevision[i], 3).ToString(CultureInfo.GetCultureInfo("en-US"));
                    sw.WriteLine(Line);
                }
                sw.Close();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }
        private int SelectDataToDiagram()
        {
            var defenceDiagramSettingsVm = new DefenceDiagramSettingsVm(variableParametersValue);
            int index = DefenceDiagramComboBox.SelectedIndex;

            switch (index)
            {
            case 0:
                for (int i = 0; i < _points; i++)
                {
                    _selectedV[i]  = defenceDiagramSettingsVm.vVeight[i];
                    _selectedHz[i] = defenceDiagramSettingsVm.hzVeightUp[i];
                }
                break;

            case 1:
                for (int i = 0; i < _points; i++)
                {
                    _selectedV[i]  = defenceDiagramSettingsVm.vPeople[i];
                    _selectedHz[i] = defenceDiagramSettingsVm.hzPeopleUp[i];
                }
                break;

            case 2:
                for (int i = 0; i < _points; i++)
                {
                    _selectedV[i]  = defenceDiagramSettingsVm.vEquipment[i];
                    _selectedHz[i] = defenceDiagramSettingsVm.hzEquipmentUp[i];
                }
                break;

            case 3:
                for (int i = 0; i < _points; i++)
                {
                    _selectedV[i]  = defenceDiagramSettingsVm.vRevision[i];
                    _selectedHz[i] = defenceDiagramSettingsVm.hzRevision[i];
                }
                break;

            case 4:
                for (int i = 0; i < _points; i++)
                {
                    _selectedV[i]  = defenceDiagramSettingsVm.vVeight[i];
                    _selectedHz[i] = defenceDiagramSettingsVm.hzVeightDown[i];
                }
                break;

            case 5:
                for (int i = 0; i < _points; i++)
                {
                    _selectedV[i]  = defenceDiagramSettingsVm.vPeople[i];
                    _selectedHz[i] = defenceDiagramSettingsVm.hzPeopleDown[i];
                }
                break;

            case 6:
                for (int i = 0; i < _points; i++)
                {
                    _selectedV[i]  = defenceDiagramSettingsVm.vEquipment[i];
                    _selectedHz[i] = defenceDiagramSettingsVm.hzEquipmentDown[i];
                }
                break;
            }
            return(index);
        }
        private void MakeGraphic()
        {
            var defenceDiagramSettingsVm = new DefenceDiagramSettingsVm(variableParametersValue);

            if (defenceDiagramSettingsVm.HzCrossHkDown == 1 || defenceDiagramSettingsVm.HzCrossHkUp == 1)
            {
                MessageBox.Show("Защитная диаграмма пересекается с критической!", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
            }
            else
            {
                var plotDefenceDiagram = new OxyPlot.WindowsForms.Plot {
                    Model = new PlotModel(), Dock = DockStyle.Fill
                };
                this.tabControl1.TabPages[3].Controls.Clear();
                this.tabControl1.TabPages[3].Controls.Add(plotDefenceDiagram);
                //Legend
                plotDefenceDiagram.Model.PlotType = PlotType.XY;
                //plotDefenceDiagram.Model.LegendTitle = "Legend";
                plotDefenceDiagram.Model.LegendOrientation = LegendOrientation.Horizontal;
                plotDefenceDiagram.Model.LegendPlacement   = LegendPlacement.Outside;
                plotDefenceDiagram.Model.LegendPosition    = LegendPosition.TopRight;
                plotDefenceDiagram.Model.LegendBackground  = OxyColor.FromAColor(200, OxyColors.White);
                plotDefenceDiagram.Model.LegendBorder      = OxyColors.Gray;
                //Axis
                var xAxis = new LinearAxis(AxisPosition.Bottom, 0)
                {
                    MajorGridlineStyle = LineStyle.Solid,
                    MinorGridlineStyle = LineStyle.Dot,
                    Title   = "Путь (м)",
                    Minimum = -_mineConfig.MainViewConfig.Border.Value,
                    Maximum = -_mineConfig.MainViewConfig.BorderZero.Value
                };
                plotDefenceDiagram.Model.Axes.Add(xAxis);
                var yAxis = new LinearAxis(AxisPosition.Left, 0)
                {
                    MajorGridlineStyle = LineStyle.Solid,
                    MinorGridlineStyle = LineStyle.Dot,
                    Title   = "Скорость (м/с)",
                    Minimum = 0,
                    Maximum = 1.2 * Convert.ToDouble(variableParametersValue[0], CultureInfo.GetCultureInfo("en-US"))
                };
                plotDefenceDiagram.Model.Axes.Add(yAxis);
                // Create Line series
                var s1 = new LineSeries {
                    Title = "Груз", StrokeThickness = 1, Color = OxyColors.Blue
                };
                var s2 = new LineSeries {
                    Title = "Люди", StrokeThickness = 1, Color = OxyColors.Green
                };
                var s3 = new LineSeries {
                    Title = "Оборудование", StrokeThickness = 1, Color = OxyColors.Red
                };
                var s4 = new LineSeries {
                    Title = "Ревизия", StrokeThickness = 1, Color = OxyColors.Orange
                };
                for (int i = 0; i < defenceDiagramSettingsVm.DiagramVeight.Count(); i++)
                {
                    s1.Points.Add(new DataPoint(-defenceDiagramSettingsVm.DiagramVeight[i].X,
                                                defenceDiagramSettingsVm.DiagramVeight[i].Y));
                    s2.Points.Add(new DataPoint(-defenceDiagramSettingsVm.DiagramPeople[i].X,
                                                defenceDiagramSettingsVm.DiagramPeople[i].Y));
                    s3.Points.Add(new DataPoint(-defenceDiagramSettingsVm.DiagramEquipment[i].X,
                                                defenceDiagramSettingsVm.DiagramEquipment[i].Y));
                }
                for (int i = 0; i < defenceDiagramSettingsVm.DiagramRevision.Count(); i++)
                {
                    s4.Points.Add(new DataPoint(-defenceDiagramSettingsVm.DiagramRevision[i].X,
                                                defenceDiagramSettingsVm.DiagramRevision[i].Y));
                }
                // add Series and Axis to plot model
                plotDefenceDiagram.Model.Series.Add(s1);
                plotDefenceDiagram.Model.Series.Add(s2);
                plotDefenceDiagram.Model.Series.Add(s3);
                plotDefenceDiagram.Model.Series.Add(s4);
            }
        }