private void drawButton_Click(object sender, EventArgs e) { if(cells == null){ MessageBox.Show("Расчёты не были произведены. Невозможно построить ячеистую структуру"); return; } if(FreeClass.bodyDrawer == null) { MessageBox.Show("Тело не было построенно. Невозможно построить ячеистую структуру"); return; } if (loopBuildRadioButton.Checked) { DialogResult dialogResult = MessageBox.Show("Выбрано циклическое построение. Будет выполненно только одно " + "построение (самое последнее). Продолжить?", "Предупреждение", MessageBoxButtons.YesNo); if (dialogResult == DialogResult.No) { return; } } // Если ячейки уже существуют if (FreeClass.cells != null) { DialogResult dialogResult = MessageBox.Show("На объекте уже есть ячеистая структура. Удалить её?", "Предупреждение", MessageBoxButtons.YesNo); if (dialogResult == DialogResult.Yes) { deleteButton_Click(null, null); } else if (dialogResult == DialogResult.No){ return; } } drawer = new NandMRectangleCellsDrawer(FreeClass.sldManager, FreeClass.body, FreeClass.bodyDrawer); FreeClass.cells = drawer; drawer.SetCells(cells); drawer.drawCells(); }
private void ResearchActions(NandMRectangleCellsDrawer cellsDraw, int i, int j) { //создаём исследование research = new Research(FreeClass.sldManager, FreeClass.bodyDrawer.GetFacesArray()); research.CreateStudy(); cells.Calculation(); 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 = Math.Round(stress, cells.GetAccuracy()); // Деформация равномерное dataGridView1.Rows[j - 1].Cells[2].Value = Math.Round(displacement, cells.GetAccuracy()) + 5; // Смещение равномерное 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(); }
private void deleteButton_Click(object sender, EventArgs e) { try { FreeClass.cells.deleteCells(); } catch { } FreeClass.cells = null; drawer = null; }
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()); }