private void btnDrawDiagram_Click(object sender, EventArgs e) { //закрываем и очищаем предыдущие окна рассчетов и рассчеты ResetOldCalcFormProcess(); CalcSpecificForcesOfCylinders.Clear(); double pk = 0.0; try { pk = double.Parse(textBox_Pk.Text); } catch { MessageBox.Show("Неверный формат данных для Pk."); return; } for (int i = 0; i < COUNT_CYLINDER_ENGINE; i++) { FormDiagramProcessOfCylinder formCreateDiagramProcess; try { formCreateDiagramProcess = new FormDiagramProcessOfCylinder(pk, double.Parse(this.dataGridView_DataForDiagram.Rows[i].Cells[1].Value.ToString()), double.Parse(this.dataGridView_DataForDiagram.Rows[i].Cells[2].Value.ToString()), double.Parse(dataGridView_DataForDiagram.Rows[i].Cells[3].Value.ToString()) ); } catch (Exception ex) { MessageBox.Show(this, ex.Message, "Помилка в заданому значенні", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } FormsDiagrOfCylinderProcesses.Add(formCreateDiagramProcess); formCreateDiagramProcess.Text += " " + (i + 1); formCreateDiagramProcess.LabelDataForCreateDiagr.Text += " " + (i + 1) + "-го " + "циліндра."; CalcSpecificForcesOfCylinders.Add(formCreateDiagramProcess.CalcSpecificForces); formCreateDiagramProcess.Show(); formCreateDiagramProcess.CalcAndBuildDiagr(); } // calc data ideal engine CalcDataOfIdealEngine(); this.TopMost = true; this.TopMost = false; }
private void ShowSpecificForcesAndTorqueEngineOnGridView(DataGridView dataGridView) { // remove records in calculations of data specific forces with first angle == 360, and left next record with 360(left record with pressure expansion) CalcSpecificForcesOfCylinders.ForEach(calcSpecForces => { int indexRecordWith360Degree = calcSpecForces.DataSpecificForces.Angles.BinarySearch(360); if (calcSpecForces.DataSpecificForces.Angles[indexRecordWith360Degree + 1] == 360) // data for 360 degree was remmoved { calcSpecForces.DataSpecificForces.Angles.RemoveAt(indexRecordWith360Degree); calcSpecForces.DataSpecificForces.T.RemoveAt(indexRecordWith360Degree); } }); //CalcSpecificForcesOfCylinders[FIRST_CYLINDER]. //reset total torque TotalTorqueOfCylinders = new List <double>(); //create bearing index of T in 6 cylinder for going along T in data specif forces int bearingIndexT1 = CalcSpecificForcesOfCylinders[FIRST_CYLINDER].DataSpecificForces.Angles.BinarySearch(START_ANGLE_T1); int bearingIndexT2 = CalcSpecificForcesOfCylinders[SECOND_CYLINDER].DataSpecificForces.Angles.BinarySearch(START_ANGLE_T2); int bearingIndexT3 = CalcSpecificForcesOfCylinders[THIRD_CYLINDER].DataSpecificForces.Angles.BinarySearch(START_ANGLE_T3); int bearingIndexT4 = CalcSpecificForcesOfCylinders[FOURTH_CYLINDER].DataSpecificForces.Angles.BinarySearch(START_ANGLE_T4); int bearingIndexT5 = CalcSpecificForcesOfCylinders[FIFTH_CYLINDER].DataSpecificForces.Angles.BinarySearch(START_ANGLE_T5); int bearingIndexT6 = CalcSpecificForcesOfCylinders[SIXTH_CYLINDER].DataSpecificForces.Angles.BinarySearch(START_ANGLE_T6); int lengthInternalObjectsInDataSpecForces = CalcSpecificForcesOfCylinders[FIRST_CYLINDER].DataSpecificForces.LengthInternalObject; for (int iterT = 0; iterT < lengthInternalObjectsInDataSpecForces - 1; iterT++) // go along DataSpecificForces for get T of differentcylinder { double T1 = CalcSpecificForcesOfCylinders[FIRST_CYLINDER].DataSpecificForces.T[bearingIndexT1]; double T2 = CalcSpecificForcesOfCylinders[SECOND_CYLINDER].DataSpecificForces.T[bearingIndexT2]; double T3 = CalcSpecificForcesOfCylinders[THIRD_CYLINDER].DataSpecificForces.T[bearingIndexT3]; double T4 = CalcSpecificForcesOfCylinders[FOURTH_CYLINDER].DataSpecificForces.T[bearingIndexT4]; double T5 = CalcSpecificForcesOfCylinders[FIFTH_CYLINDER].DataSpecificForces.T[bearingIndexT5]; double T6 = CalcSpecificForcesOfCylinders[SIXTH_CYLINDER].DataSpecificForces.T[bearingIndexT6]; double Tsum = Round(T1 + T2 + T3 + T4 + T5 + T6, 3); //Mi = 1000 * TSum * Fn * R double totalTorque = Round(1000 * Tsum * FormsDiagrOfCylinderProcesses[FIRST_CYLINDER].CalcPolitrops.Fn * CalcPolitrops.R, 3); TotalTorqueOfCylinders.Add(totalTorque); //save max totalTorque and min totalTorque if (iterT == 0) { this.maxTotalTorque = totalTorque; this.minTotalTorque = totalTorque; } else { if (totalTorque > maxTotalTorque) { this.maxTotalTorque = totalTorque; } if (totalTorque < minTotalTorque) { this.minTotalTorque = totalTorque; } } dataGridView.Rows.Add(CalcSpecificForcesOfCylinders[FIRST_CYLINDER].DataSpecificForces.Angles[iterT], T1, T2, T3, T4, T5, T6, Tsum, totalTorque); //increase index bearingIndexT1++; bearingIndexT2++; bearingIndexT3++; bearingIndexT4++; bearingIndexT5++; bearingIndexT6++; //lengthInternalObjectsInDataSpecForces-1 cause value in 720 degree is the same as 0 degree if (bearingIndexT1 == lengthInternalObjectsInDataSpecForces - 1) //index in end - go from start, { bearingIndexT1 = 0; } if (bearingIndexT2 == lengthInternalObjectsInDataSpecForces - 1) //index in end - go from start { bearingIndexT2 = 0; } if (bearingIndexT3 == lengthInternalObjectsInDataSpecForces - 1) //index in end - go from start { bearingIndexT3 = 0; } if (bearingIndexT4 == lengthInternalObjectsInDataSpecForces - 1) //index in end - go from start { bearingIndexT4 = 0; } if (bearingIndexT5 == lengthInternalObjectsInDataSpecForces - 1) //index in end - go from start { bearingIndexT5 = 0; } if (bearingIndexT6 == lengthInternalObjectsInDataSpecForces - 1) //index in end - go from start { bearingIndexT6 = 0; } } //save average total torque this.averageTotalTorque = (this.maxTotalTorque + this.minTotalTorque) / 2; FormDiagramProcessOfCylinder.AutosizeGridView(dataGridView); }