////////////////// Конец создания исследования ////////////////// ////////////////// Наложение действий ////////////////// private void bodyPartsComboBox_SelectedIndexChanged(object sender, EventArgs e) { if (research == null) { research = new Research(FreeClass.sldManager, FreeClass.bodyDrawer.GetFacesArray()); } research.BodyParts_Select(bodyPartsComboBox.SelectedIndex); }
private void deleteResearch4_Click(object sender, EventArgs e) { if (research != null) { try { research.deleteStudy(); } catch { } research = null; } try { cellsDraw.deleteCells(); } catch { } }
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 { } }
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(); }
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); }
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; } }
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(); }
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()); }
////////////////// Конец наложения действий ////////////////// ////////////////// Исследование ////////////////// 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()); }
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(); }
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()); }