Exemple #1
0
        ////////////////// Конец создания исследования //////////////////

        ////////////////// Наложение действий //////////////////
        private void bodyPartsComboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (research == null)
            {
                research = new Research(FreeClass.sldManager, FreeClass.bodyDrawer.GetFacesArray());
            }
            research.BodyParts_Select(bodyPartsComboBox.SelectedIndex);
        }
Exemple #2
0
        private void deleteResearch4_Click(object sender, EventArgs e)
        {
            if (research != null)
            {
                try { research.deleteStudy(); } catch { }
                research = null;
            }

            try { cellsDraw.deleteCells(); } catch { }
        }
Exemple #3
0
        private void deleteResearch4_Click(object sender, EventArgs e)
        {
            if (research != null)
            {
                try { research.deleteStudy(); } catch { }
                research = null;
                fix      = false;
                att      = false;
                startResearch4.Enabled = false;
            }

            try { cellsDraw.deleteCells(); } catch { }
        }
Exemple #4
0
        private void ResearchActions(AbstractNAngleDrawer cellsDraw, int i, int j)
        {
            //создаём исследование
            research = new Research(FreeClass.sldManager, FreeClass.bodyDrawer.GetFacesArray());
            research.CreateStudy();

            cellsDraw.SetCells(cells); cellsDraw.drawCells();

            //прикладываем силы или фиксируем грани
            foreach (object[] act in action)
            {
                if (act[0].Equals("fix"))
                {
                    research.BodyParts_Select((int)act[1]);
                    research.FixFace();
                }
                else if (act[0].Equals("force"))
                {
                    research.BodyParts_Select((int)act[1]);
                    research.CreateLoad((double)act[2]);
                }
            }

            research = new Research(FreeClass.sldManager, FreeClass.bodyDrawer.GetFacesArray());
            research.CreateStudy();

            research.CreateMesh();

            research.MaterialSet();
            research.RunAnalysis();

            double stress = research.GetStress(), displacement = research.GetDisplacement();

            dataGridView1.Rows[j - 1].Cells[1].Value = stress;       // Деформация
            dataGridView1.Rows[j - 1].Cells[2].Value = displacement; // Смещение

            logTextBox.Text += Environment.NewLine;
            logTextBox.Text += "Итерация: " + i.ToString(); logTextBox.Text += Environment.NewLine;
            logTextBox.Text += "Напряжение(ksi): " + stress.ToString(); logTextBox.Text += Environment.NewLine;
            logTextBox.Text += "Смещение(mk): " + displacement.ToString(); logTextBox.Text += Environment.NewLine;

            // задержка
            //Thread.Sleep(2500);

            // Очищаем
            research.deleteStudy(); research = null;
            FreeClass.sldManager.swModel.ClearSelection2(true);

            cellsDraw.deleteCells();
        }
Exemple #5
0
        private void withoutIterationResearch()
        {
            //создаём исследование
            research = new Research(FreeClass.sldManager, FreeClass.bodyDrawer.GetFacesArray());
            research.CreateStudy();
            research.webDensity = Convert.ToDouble(textBox1.Text);
            research.tlCurrent  = Convert.ToDouble(textBox2.Text);
            //прикладываем силы или фиксируем грани
            foreach (object[] act in action)
            {
                if (act[0].Equals("fix"))
                {
                    research.BodyParts_Select((int)act[1]);
                    research.FixFace();
                }
                else if (act[0].Equals("force"))
                {
                    research.BodyParts_Select((int)act[1]);
                    research.CreateLoad((double)act[2]);
                }
            }

            research.CreateMesh();
            research.MaterialSet();
            research.RunAnalysis();

            double stress = research.GetStress(), displacement = research.GetDisplacement();

            dataGridView1.Rows[0].Cells[0].Value  = 0;
            dataGridView1.Rows[0].Cells[1].Value  = stress;              // Деформация
            dataGridView1.Rows[0].Cells[2].Value  = displacement;        // Смещение
            dataGridView1.Rows[0].Cells[10].Value = research.webDensity; // плотность сетки
            dataGridView1.Rows[0].Cells[11].Value = research.tlCurrent;  // tl

            //object[] buff1 = new object[2]; //[кол-во ячеек, напряжение]
            //buff1[0] = 0; buff1[1] = stress;
            //dataStress.Add(buff1);

            //object[] buff2 = new object[2]; //[кол-во ячеек, перемещение]
            //buff2[0] = 0; buff2[1] = displacement;

            FillingStressStrainMass();

            nodeList = research.nodeLists;

            // Очищаем
            research.deleteStudy(); research = null;
            FreeClass.sldManager.swModel.ClearSelection2(true);
        }
Exemple #6
0
        private void acceptButton4_Click(object sender, EventArgs e)
        {
            if (research == null)
            {
                research = new Research(FreeClass.sldManager, FreeClass.bodyDrawer.GetFacesArray());
            }

            research.BodyParts_Select(bodyPartsComboBox.SelectedIndex);

            if (fixRadioButton4.Checked)
            {
                object[] buff = new object[3];
                buff[0] = "fix";                           //действие
                buff[1] = bodyPartsComboBox.SelectedIndex; //сторона
                buff[2] = null;                            //сила

                logTextBox.Text += "Сторона " + bodyPartsComboBox.SelectedIndex.ToString() +
                                   " будет зафиксирована" + Environment.NewLine;
                action.Add(buff);

                fix = true;
            }
            else
            {
                object[] buff = new object[3];
                buff[0] = "force";                          //действие
                buff[1] = bodyPartsComboBox.SelectedIndex;  //сторона
                buff[2] = Convert.ToDouble(textBox13.Text); //сила

                logTextBox.Text += "На сторону " + bodyPartsComboBox.SelectedIndex.ToString() +
                                   " будет приложена " + textBox13.Text + " сила";
                logTextBox.Text += Environment.NewLine;

                action.Add(buff);

                att = true;
            }

            if (fix && att)
            {
                startResearch4.Enabled = true;
            }
        }
Exemple #7
0
        private void button1_Click(object sender, EventArgs e)
        {
            if (FreeClass.sldManager == null)
            {
                MessageBox.Show("Ошибка: SolidWorks не был подключен");
                return;
            }

            if (FreeClass.bodyDrawer == null)
            {
                MessageBox.Show("Ошибка: тело не было создано");
                return;
            }

            try
            {
                research = new Research(FreeClass.sldManager, FreeClass.bodyDrawer.GetFacesArray());
                //research.CreateStudy();
            }
            catch
            {
                MessageBox.Show("Ошибка: модуль исследования не подключен");
                return;
            }
            textBox1.Text = Research.el.ToString();
            textBox2.Text = Research.tl.ToString();

            bodyPartsComboBox.Items.Clear();
            action = new List <object[]>();

            for (int i = 0; i < FreeClass.bodyDrawer.GetFacesArray().Length; i++)
            {
                bodyPartsComboBox.Items.Add(String.Join(", ", FreeClass.bodyDrawer.GetFacesArray().GetValue(i).ToString()));
            }

            groupBox1.Visible          = true;
            statusStrip1.Visible       = true;
            toolStripStatusLabel1.Text = "Исследование №  ";

            textBox1.Text = Research.el.ToString();
            textBox2.Text = Research.tl.ToString();
        }
Exemple #8
0
        private void triangleResearch(NAngleForm owner)
        {
            triangleDrawer = new TriangleCellsDrawer(FreeClass.sldManager, FreeClass.body, FreeClass.bodyDrawer);

            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;
                triangleCells          = new TriangleCells(FreeClass.body);

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

                triangleCells.Calculation();

                if (!triangleCells.isAvailable())
                {
                    string       reason       = "Степень - " + i + " " + writeResults(triangleCells);
                    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 = triangleCells.GetRowsNumber() * triangleCells.GetColumnsNumber();

                try { ResearchActions(triangleDrawer, 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());
        }
Exemple #9
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());
        }
Exemple #10
0
        private void reResearch(int dataRow, double webDensity, double tlCurrent)
        {
            NAngleEmprovedForm owner;

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

            int angles = Convert.ToInt16(dataGridView1.Rows[dataRow].Cells[7].Value);

            if (angles == 3)
            {
                cells = new TriangleCells(FreeClass.body);
            }
            else if (angles == 4)
            {
                cells = new RectangleCells(FreeClass.body);
            }
            else
            {
                cells = new NAngleCells(FreeClass.body);
                cells.SetAnglesN(Convert.ToInt16(dataGridView1.Rows[dataRow].Cells[7].Value));
            }
            cells.SetAccuracy(accuracy);

            int cellsNum = Convert.ToInt16(Math.Sqrt(Convert.ToInt16(dataGridView1.Rows[dataRow].Cells[0].Value)));

            cells.SetColumnsNumber(cellsNum); cells.SetRowsNumber(cellsNum);
            cells.SetCellsHeight(owner.GetHeight());
            cells.SetCellsV(FreeClass.body.GetV() * Convert.ToDouble(owner.GetVolume()) / 100);

            cells.Calculation();

            //создаём исследование
            research = new Research(FreeClass.sldManager, FreeClass.bodyDrawer.GetFacesArray());
            research.CreateStudy();

            if (cells is RectangleCells)
            {
                rectDrawer = new RectangleCellsDrawer(FreeClass.sldManager, FreeClass.body, FreeClass.bodyDrawer);
                rectDrawer.SetCells((RectangleCells)cells);
                FreeClass.cells = rectDrawer; rectDrawer.drawCells();
            }
            else if (cells is TriangleCells)
            {
                triangleDrawer = new TriangleCellsDrawer(FreeClass.sldManager, FreeClass.body, FreeClass.bodyDrawer);
                triangleDrawer.SetCells((TriangleCells)cells);
                FreeClass.cells = triangleDrawer; triangleDrawer.drawCells();
            }
            else
            {
                cellsDraw = new NAngleCellsDrawer(FreeClass.sldManager, FreeClass.body, FreeClass.bodyDrawer, 0);
                cellsDraw.SetCells((AbstractRelationAngle)cells);
                FreeClass.cells = cellsDraw; cellsDraw.drawCells();
            }

            // прикладываем силы или фиксируем грани
            foreach (object[] act in action)
            {
                if (act[0].Equals("fix"))
                {
                    research.BodyParts_Select((int)act[1]);
                    research.FixFace();
                }
                else if (act[0].Equals("force"))
                {
                    research.BodyParts_Select((int)act[1]);
                    research.CreateLoad((double)act[2]);
                }
            }

            //research = new Research(FreeClass.sldManager, FreeClass.bodyDrawer.GetFacesArray());
            //research.CreateStudy();

            research.webDensity = webDensity;
            research.tlCurrent  = tlCurrent;

            research.CreateMesh(); research.MaterialSet();
            research.RunAnalysis();

            double stress = research.GetStress(), displacement = research.GetDisplacement();

            dataGridView2.Rows[dataRow].Cells[1].Value = stress;       // Деформация
            dataGridView2.Rows[dataRow].Cells[2].Value = displacement; // Смещение

            dataGridView2.Rows[dataRow].Cells[3].Value = Convert.ToDouble(dataGridView2.Rows[dataRow].Cells[1].Value) -
                                                         Convert.ToDouble(dataGridView2.Rows[0].Cells[1].Value); // Разность напряжения
            dataGridView2.Rows[dataRow].Cells[4].Value = Convert.ToDouble(dataGridView2.Rows[dataRow].Cells[1].Value) * 100 /
                                                         Convert.ToDouble(dataGridView2.Rows[0].Cells[1].Value); // %

            dataGridView2.Rows[dataRow].Cells[5].Value = Convert.ToDouble(dataGridView2.Rows[dataRow].Cells[2].Value) -
                                                         Convert.ToDouble(dataGridView2.Rows[0].Cells[2].Value); // Разность деформации
            dataGridView2.Rows[dataRow].Cells[6].Value = Convert.ToDouble(dataGridView2.Rows[dataRow].Cells[2].Value) * 100 /
                                                         Convert.ToDouble(dataGridView2.Rows[0].Cells[2].Value); // %

            dataGridView2.Rows[dataRow].Cells[10].Value = research.webDensity;                                   // плотность сетки
            dataGridView2.Rows[dataRow].Cells[11].Value = research.tlCurrent;                                    // tl

            // Очищаем
            research.deleteStudy(); research = null;
            FreeClass.sldManager.swModel.ClearSelection2(true);

            FreeClass.cells.deleteCells();
        }
Exemple #11
0
        private void ResearchActions()
        {
            double stress, displacement;

            toolStripStatusLabel1.Text = String.Format("Исследование №{0}", stressLists.Count);
            toolStripProgressBar1.Increment(1);

            if (cells is CircleCells)
            {
                circleDrawer.SetCells((CircleCells)cells);
                FreeClass.cells = circleDrawer; circleDrawer.drawCells();
            }
            else if (cells is RectangleCells)
            {
                rectDrawer.SetCells((RectangleCells)cells);
                FreeClass.cells = rectDrawer; rectDrawer.drawCells();
            }
            else if (cells is TriangleCells)
            {
                triangleDrawer.SetCells((TriangleCells)cells);
                FreeClass.cells = triangleDrawer; triangleDrawer.drawCells();
            }
            else
            {
                cellsDraw.SetCells((AbstractRelationAngle)cells);
                FreeClass.cells = cellsDraw;
                cellsDraw.drawCells();
            }

            while (true)
            {
                //создаём исследование
                research = new Research(FreeClass.sldManager, FreeClass.bodyDrawer.GetFacesArray());
                research.CreateStudy();

                //прикладываем силы или фиксируем грани
                foreach (object[] act in action)
                {
                    if (act[0].Equals("fix"))
                    {
                        research.BodyParts_Select((int)act[1]);
                        research.FixFace();
                    }
                    else if (act[0].Equals("force"))
                    {
                        research.BodyParts_Select((int)act[1]);
                        research.CreateLoad((double)act[2]);
                    }
                }

                //research = new Research(FreeClass.sldManager, FreeClass.bodyDrawer.GetFacesArray());
                //research.CreateStudy();

                research.webDensity = Convert.ToDouble(textBox1.Text);
                research.tlCurrent  = Convert.ToDouble(textBox2.Text);
                research.CreateMesh();

                research.MaterialSet();
                research.RunAnalysis();

                nodeList = research.nodeLists;

                stress       = research.GetStress();
                displacement = research.GetDisplacement();

                if (stress != Convert.ToDouble(dataGridView1.Rows[0].Cells[1].Value))
                {
                    break;
                }
                else
                {
                    research.deleteStudy(); research = null;
                    FreeClass.sldManager.swModel.ClearSelection2(true);
                    textBox1.Text = (Convert.ToDouble(textBox1.Text) / 2).ToString();
                    textBox2.Text = (Convert.ToDouble(textBox2.Text) / 2).ToString();
                }
            }

            dataGridView1.Rows[dataGridView1.RowCount - 1].Cells[1].Value = stress;       // Деформация
            dataGridView1.Rows[dataGridView1.RowCount - 1].Cells[2].Value = displacement; // Смещение

            logTextBox.Text += Environment.NewLine;
            logTextBox.Text += "Итерация: " + (dataGridView1.RowCount - 1).ToString(); logTextBox.Text += Environment.NewLine;
            logTextBox.Text += "Напряжение(ksi): " + stress.ToString(); logTextBox.Text += Environment.NewLine;
            logTextBox.Text += "Смещение(mk): " + displacement.ToString(); logTextBox.Text += Environment.NewLine;

            // задержка
            //Thread.Sleep(2500);

            textBox1.Text = research.webDensity.ToString();
            textBox2.Text = research.tlCurrent.ToString();

            dataGridView1.Rows[dataGridView1.RowCount - 1].Cells[10].Value = research.webDensity; // плотность сетки
            dataGridView1.Rows[dataGridView1.RowCount - 1].Cells[11].Value = research.tlCurrent;  // tl

            //statusStrip1.pro
            FillingStressStrainMass();

            // Очищаем
            research.deleteStudy();
            research = null;
            FreeClass.sldManager.swModel.ClearSelection2(true);

            FreeClass.cells.deleteCells();
        }
        private void startResearch4_Click(object sender, EventArgs e)
        {
            NandMForm owner;

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

            //if (true) { return; }

            FreeClass.sldManager.swModel.ClearSelection2(true);

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

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

            cellsDraw = new
                        NandMRectangleCellsDrawer(FreeClass.sldManager, FreeClass.body, FreeClass.bodyDrawer);

            /*
             * switch (answer) {
             *  case "2n": {  break; }
             *  case "maxtrix": break;
             *  case "free": break;
             *  default: break;
             * }*/

            dataGridView1.RowCount = 1;

            if (owner.GetMethod() == "matrix")
            {
                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());

                //withoutIterationResearch();

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

                    //рисуем ячейки
                    cells = new NandMRectangleCells(FreeClass.body);

                    cells.SetAccuracy(Convert.ToInt16(owner.GetAccuracy()));
                    cells.SetCellsV(FreeClass.body.GetV() * partOfVolume / 100);

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

                    ResearchActions(cellsDraw, i, j);
                }
            }
            else if (owner.GetMethod() == "2n")
            {
                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());

                //withoutIterationResearch();

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

                    //рисуем ячейки
                    cells = new NandMRectangleCells(FreeClass.body);

                    cells.SetAccuracy(Convert.ToInt16(owner.GetAccuracy()));
                    cells.SetCellsV(FreeClass.body.GetV() * partOfVolume / 100);

                    if (i % 2 == 0)
                    {
                        double buff = Math.Sqrt(Math.Pow(2, i));
                        cells.SetColumnsNumber(Convert.ToInt16(buff));
                        cells.SetRowsNumber(Convert.ToInt16(buff));
                    }
                    else
                    {
                        double buff = Math.Sqrt(Math.Pow(2, i - 1));
                        cells.SetColumnsNumber(Convert.ToInt16(buff) * 2);
                        cells.SetRowsNumber(Convert.ToInt16(buff));
                    }

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

                    ResearchActions(cellsDraw, i, j);
                }
            }
            else if (owner.GetMethod() == "free")
            {
                int start1, start2, end, step;
                start1 = Convert.ToInt16(owner.GetStartPoint());
                start2 = Convert.ToInt16(owner.GetEndPoint());
                end    = Convert.ToInt16(owner.GetMiddlePoint());
                step   = Convert.ToInt16(owner.GetStep());
                double partOfVolume = Convert.ToDouble(owner.GetVolume());

                //withoutIterationResearch();

                for (int i = start1, j = 1; i <= end; i = i + step, j++, start2 = start2 + step)
                {
                    dataGridView1.RowCount = j;

                    //рисуем ячейки
                    cells = new NandMRectangleCells(FreeClass.body);

                    cells.SetAccuracy(6);
                    cells.SetCellsV(FreeClass.body.GetV() * partOfVolume / 100);

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

                    ResearchActions(cellsDraw, i, j);
                }
            }



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