Пример #1
0
        private string writeResults(AbstractRelationAngle dataCells)
        {
            string result = "";

            result += "Степень матрицы - " + dataCells.GetColumnsNumber(); result += Environment.NewLine;
            result += "Обьём тела - " + FreeClass.body.GetV();; result += Environment.NewLine;
            result += "Обьём структуры - " + dataCells.GetCellsV(); result += Environment.NewLine;
            result += "Площадь структуры - " + dataCells.GetSCells(); result += Environment.NewLine;
            result += "Площадь 1 ячейки - " + dataCells.GetS1(); result += Environment.NewLine;
            result += "Локаль - " + dataCells.GetLocal(); result += Environment.NewLine;
            result += "Радиус вписаной в локаль окружности - " + dataCells.GetRadius(); result += Environment.NewLine;
            result += "Сторона вписанного в окружность многоулольника - " + dataCells.GetSide(); result += Environment.NewLine;
            result += "Коэффицент соотношения площадей - " + dataCells.GetRelations(); result += Environment.NewLine;
            result += "Максимальное соотношение - " + AbstractRelationAngle.maxCoef; result += Environment.NewLine;
            result += "Доступность построения - " + dataCells.isAvailable(); result += Environment.NewLine;
            return(result);
        }
Пример #2
0
        ////////////////// Конец наложения действий //////////////////

        ////////////////// Исследование //////////////////
        private void startResearch4_Click(object sender, EventArgs e)
        {
            NAngleForm owner;

            try { owner = (NAngleForm)this.Owner; }
            catch { MessageBox.Show("Ошибка получения матеинской формы"); return; }

            FreeClass.sldManager.swModel.ClearSelection2(true);

            try { FreeClass.cells.deleteCells(); }
            catch { }

            if (!owner.CheckLoop())
            {
                MessageBox.Show("Ошибка: На материнской форме не выбрана функция циклического построения");
                return;
            }

            int angle = owner.GetDeflection();

            if ((owner.GetAngles() == 3))
            {
                triangleResearch(owner); return;
            }
            else if (owner.GetAngles() >= 91)
            {
                cellsDraw = new CircleCellsDrawer(FreeClass.sldManager, FreeClass.body, FreeClass.bodyDrawer, angle);
            }
            else
            {
                cellsDraw = new NAngleCellsDrawer(FreeClass.sldManager, FreeClass.body, FreeClass.bodyDrawer, angle);
            }
            dataGridView1.RowCount = 2; withoutIterationResearch();

            int start, end, step;

            start = Convert.ToInt16(owner.GetStartPoint());
            end   = Convert.ToInt16(owner.GetEndPoint());
            step  = Convert.ToInt16(owner.GetStep());
            double partOfVolume = Convert.ToDouble(owner.GetVolume());

            for (int i = start, j = 2; i <= end; i = i + step, j++)
            {
                dataGridView1.RowCount = j;

                //рисуем ячейки
                if (owner.GetAngles() >= 91)
                {
                    cells = new CircleCells(FreeClass.body);
                }
                else
                {
                    cells = new NAngleCells(FreeClass.body);
                    cells.SetAnglesN(owner.GetAngles());
                }

                cells.SetAccuracy(Convert.ToInt16(owner.GetAccuracy()));
                cells.SetColumnsNumber(i); cells.SetRowsNumber(i);
                cells.SetCellsHeight(owner.GetHeight());
                cells.SetCellsV(FreeClass.body.GetV() * partOfVolume / 100);

                cells.Calculation();

                if (!cells.isAvailable())
                {
                    string       reason       = "Степень - " + i + " " + writeResults();
                    DialogResult dialogResult = MessageBox.Show("Не было найдено решение для условий - " + reason +
                                                                Environment.NewLine + "Попробовать следущий шаг? (В противном случае, вычисления будут приостановлены)",
                                                                "Предупреждение", MessageBoxButtons.YesNo);
                    if (dialogResult == DialogResult.Yes)
                    {
                        continue;
                    }
                    else if (dialogResult == DialogResult.No)
                    {
                        break;
                    }
                }

                dataGridView1.Rows[j - 1].Cells[0].Value = cells.GetRowsNumber() * cells.GetColumnsNumber();

                try
                {
                    ResearchActions(cellsDraw, i, j);
                }
                catch (Exception)
                {
                    MessageBox.Show("Невозможно построить сетку");
                    return;
                }


                dataGridView1.Rows[j - 1].Cells[3].Value = Convert.ToDouble(dataGridView1.Rows[j - 1].Cells[1].Value) -
                                                           Convert.ToDouble(dataGridView1.Rows[0].Cells[1].Value);     // Напряжение
                dataGridView1.Rows[j - 1].Cells[4].Value = Convert.ToDouble(dataGridView1.Rows[0].Cells[1].Value) * 100 /
                                                           Convert.ToDouble(dataGridView1.Rows[j - 1].Cells[1].Value); // %

                dataGridView1.Rows[j - 1].Cells[5].Value = Convert.ToDouble(dataGridView1.Rows[j - 1].Cells[2].Value) -
                                                           Convert.ToDouble(dataGridView1.Rows[0].Cells[2].Value);     // Деформация
                dataGridView1.Rows[j - 1].Cells[6].Value = Convert.ToDouble(dataGridView1.Rows[0].Cells[2].Value) * 100 /
                                                           Convert.ToDouble(dataGridView1.Rows[j - 1].Cells[2].Value); // %
            }

            //На случай, если нужно будет поменять условия циклического построения
            //чтобы приложение не обращалось по нулевой ссылке
            research = new Research(FreeClass.sldManager, FreeClass.bodyDrawer.GetFacesArray());
        }
 public void SetCells(AbstractRelationAngle cells)
 {
     this.cells = cells;
 }