Example #1
0
        /// <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;
            }
        }
Example #2
0
        /// <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();
            }
        }