/// <summary> /// Выборочная очистка, настройка параметров. /// </summary> /// <param name="i">Индекс блоков.</param> void Cleaner(byte i) { switch (i) { // Очистка экземпляров. case 0: figures.Clear(); fem = null; points = null; ribs = null; if (grid != null) { grid.Dispose(); } if (form != null) { form.Dispose(); } dataGridViewFigures.Rows.Clear(); GC.Collect(); GC.WaitForPendingFinalizers(); break; // Очистка блоков интерфейса. case 1: pictureB.Image = null; tSButtonCalculate.Enabled = false; gBoxInfo.Visible = false; groupBSLA.Visible = false; richTBResult.Visible = false; tBoxSize.Text = "3"; break; case 5: tSButtonCalculate.Enabled = true; gBoxInfo.Visible = true; break; case 6: tSButtonCalculate.Enabled = false; gBoxInfo.Visible = false; break; } }
/// <summary> /// Кнопка расчета МКЭ. /// </summary> void tSButtonCalculate_Click(object sender, EventArgs e) { try { fem = new FEMethod(grid); richTBResult.Visible = true; groupBSLA.Visible = true; // Отображение результатов расчета в точках наблюдения. richTBResult.Text = ""; for (int i = 0; i < 16; i++) { richTBResult.Text += "φ" + i.ToString() + " = " + grid.viewPoints[i].Potential.Value.ToString() + "\n"; } label26.Text = "Форм-е: " + Convert.ToString(fem.timeFill.Elapsed); label25.Text = "Решение: " + Convert.ToString(fem.timeSol.Elapsed); // Если максимальное ребро меньше фиксированного значения, то используется цветная картина поля. if (ribs.Max(r => r.lenght) < 10) { picture.ClearGrafics(); picture.DrawPoints(points); picture.DrawRibs(ribs); } picture.DrawElectrode(grid.viewPoints.ToList()); } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } finally { GC.Collect(); GC.WaitForPendingFinalizers(); } }