void MainView_CalculateFireTestSound(CalculateFireTestNoiseEventArgs e) { if (fireTestNoiseCalculation.FirstCalculation) { fireTestNoiseCalculation.InputDataChanged = true; fireTestNoiseCalculation.FirstCalculation = false; } else { if ((fireTestNoiseCalculation.RadiusInterval.Initial != e.RadiusInterval.Initial) || (fireTestNoiseCalculation.RadiusInterval.Final != e.RadiusInterval.Final) || (fireTestNoiseCalculation.RadiusInterval.Step != e.RadiusInterval.Step)) { fireTestNoiseCalculation.InputDataChanged = true; } if (fireTestNoiseCalculation.FrequencyBand != e.FrequencyBand) { fireTestNoiseCalculation.InputDataChanged = true; } } fireTestNoiseCalculation.RadiusInterval = e.RadiusInterval; fireTestNoiseCalculation.FrequencyBand = e.FrequencyBand; if (fireTestNoiseCalculation.InputDataChanged) { if (fireTestNoiseCalculation.SoundLevels.Count != 0) { fireTestNoiseCalculation.FireTestSoundContours = Model.CalculateFireTestNoise( new FireTestNoiseCalculationInputData( fireTestNoiseCalculation.Thrust, fireTestNoiseCalculation.FlowParameters, fireTestNoiseCalculation.WeatherParameters, e.RadiusInterval, e.FrequencyBand), fireTestNoiseCalculation.SoundLevels); } } fireTestNoiseCalculation.InputDataChanged = false; e.FireTestSoundContours = fireTestNoiseCalculation.FireTestSoundContours; }
private async void CalculatFireTestNoiseMenuItem_Click() { FrequencyBand frequencyBand; if (FireTestInfraBandRadioButton.Checked) { frequencyBand = FrequencyBand.Infra; } else if (FireTestUltraBandRadioButton.Checked) { frequencyBand = FrequencyBand.Ultra; } else { frequencyBand = FrequencyBand.Normal; } var CalculateArgs = new CalculateFireTestNoiseEventArgs( frequencyBand, new RadiusInterval( Convert.ToDouble(FireTestStartRadiusTextBox.Text), Convert.ToDouble(FireTestFinalRadiusTextBox.Text), Convert.ToDouble(FireTestRadiusStepTextBox.Text))); await Task.Run(() => CalculateFireTestNoise(CalculateArgs)); var Contours = CalculateArgs.FireTestSoundContours; FireTestGraphPane.CurveList.Clear(); for (int i = 0; i < FireTestNoiseSoundLevelContainer.SoundLevels.Count; i++) { FireTestGraphPane.AddCurve( FireTestNoiseSoundLevelContainer.SoundLevels[i].SoundLevel.ToString(), Contours[i].Points.Select(p => p.X).ToArray(), Contours[i].Points.Select(p => p.Y).ToArray(), FireTestNoiseSoundLevelContainer.SoundLevels[i].Color, SymbolType.None); } FireTestGraphPane.AxisChange(); zedGraphControl2.Invalidate(); var PointsGrid = FireTestNoiseSoundLevelPointsGrid; PointsGrid.Columns.Clear(); foreach (var circle in Contours) { var s = circle.SoundLevel.ToString() + " дБ"; if (FireTestNormalBandRadioButton.Checked) { s += "A"; } PointsGrid.Columns.Add("", s); PointsGrid.Columns.Add("", ""); } foreach (var column in PointsGrid.Columns.Cast <DataGridViewColumn>()) { column.SortMode = DataGridViewColumnSortMode.NotSortable; } PointsGrid.Rows.Add(); PointsGrid.Rows[0].Frozen = true; for (int i = 0; i < PointsGrid.Columns.Count; i++) { PointsGrid.Rows[0].Cells[i].Value = i % 2 == 0 ? "X, м" : "Y, м"; } PointsGrid.Rows.Add(Contours[0].Points.Count); for (int CircleIndex = 0; CircleIndex < Contours.Count; CircleIndex++) { var contour = Contours[CircleIndex]; for (int i = 0; i < contour.Points.Count; i++) { PointsGrid.Rows[i + 1].Cells[2 * CircleIndex + 0].Value = FormatConvert.ToString(contour.Points[i].X); PointsGrid.Rows[i + 1].Cells[2 * CircleIndex + 1].Value = FormatConvert.ToString(contour.Points[i].Y); } } }