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); }
////////////////// Конец наложения действий ////////////////// ////////////////// Исследование ////////////////// 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; }