private double TestCongThuc(DataRow drDiem, DataRow[] arrDrDiem, string CongThucDiem, string IDThanhPhanThi, int IDKQHT_ThanhPhanTBHS, int LanThi) { double Value = 0; int SoSauDauPhay; try { MathParser parser = new MathParser(); parser.CreateVar("TBHS", double.Parse("0" + drDiem[IDKQHT_ThanhPhanTBHS.ToString() + "_" + LanThi.ToString()]), null); parser.CreateVar("THI", double.Parse("0" + drDiem[IDThanhPhanThi + "_" + LanThi.ToString()]), null); foreach (DataRow dr in arrDrDiem) { if (!(dr["KyHieu"].ToString() == "TBHS" || dr["KyHieu"].ToString() == "THI")) { parser.CreateVar(dr["KyHieu"].ToString(), double.Parse("0" + dr["TongDiem"]), null); parser.CreateVar("Count" + dr["KyHieu"], int.Parse("0" + dr["SoDiem"]), null); } } string formula = CongThucDiem; parser.OptimizationOn = true; if (formula.IndexOf("R+(") == 0 | formula.IndexOf("R-(") == 0) { SoSauDauPhay = int.Parse(formula.Substring(3, 1)); double tmp = 0; if (formula.IndexOf("R+(") == 0) { formula = formula.Substring(5, formula.Length - 5); parser.Expression = formula; parser.Parse(); tmp = double.Parse(parser.Value.ToString()); Value = parser.Round(tmp, SoSauDauPhay, true); } else { formula = formula.Substring(5, formula.Length - 5); parser.Expression = formula; parser.Parse(); tmp = double.Parse(parser.Value.ToString()); Value = parser.Round(tmp, SoSauDauPhay, false); } } else { parser.Expression = formula; parser.Parse(); Value = double.Parse(parser.Value.ToString()); } return(Value); } catch (Exception) { return(0); } }
private double TestCongThuc(double DiemTBMH, DataRow[] drDiem) { double Value = 0; int SoSauDauPhay; try { // add thanh phan diem TBTK parser.CreateVar("TBTK", DiemTBMH, null); foreach (DataRow dr in drDiem) { parser.CreateVar(dr["MaMonHoc"].ToString(), double.Parse("0" + dr["Diem"].ToString()), null); } string formula = null; formula = strCongThucDiem; parser.OptimizationOn = true; if (formula.IndexOf("R+(") == 0 | formula.IndexOf("R-(") == 0) { SoSauDauPhay = int.Parse(formula.Substring(3, 1)); double tmp = 0; if (formula.IndexOf("R+(") == 0) { formula = formula.Substring(5, formula.Length - 5); parser.Expression = formula; parser.Parse(); tmp = double.Parse(parser.Value.ToString()); Value = parser.Round(tmp, SoSauDauPhay, true); } else { formula = formula.Substring(5, formula.Length - 5); parser.Expression = formula; parser.Parse(); tmp = double.Parse(parser.Value.ToString()); Value = parser.Round(tmp, SoSauDauPhay, false); } } else { parser.Expression = formula; parser.Parse(); Value = double.Parse(parser.Value.ToString()); } return(Value); } catch (Exception) { return(0); } }
private double TestCongThuc(DataRow[] drDiem) { double Value = 0; int SoSauDauPhay; try { MathParser parser = new MathParser(); foreach (DataRow dr in drDiem) { parser.CreateVar(dr["KyHieu"].ToString(), double.Parse("0" + dr["Diem"].ToString()), null); } string formula = null; formula = drDiem[0]["CongThuc"].ToString(); parser.OptimizationOn = true; if (formula.IndexOf("R+(") == 0 | formula.IndexOf("R-(") == 0) { SoSauDauPhay = int.Parse(formula.Substring(3, 1)); double tmp = 0; if (formula.IndexOf("R+(") == 0) { formula = formula.Substring(5, formula.Length - 5); parser.Expression = formula; parser.Parse(); tmp = double.Parse(parser.Value.ToString()); Value = parser.Round(tmp, SoSauDauPhay, true); } else { formula = formula.Substring(5, formula.Length - 5); parser.Expression = formula; parser.Parse(); tmp = double.Parse(parser.Value.ToString()); Value = parser.Round(tmp, SoSauDauPhay, false); } } else { parser.Expression = formula; parser.Parse(); Value = double.Parse(parser.Value.ToString()); } return(Value); } catch (Exception) { return(0); } }
private bool TestCongThuc() { try { MathParser parser = new MathParser(); foreach (DataRow dr in dtThanhPhan.Rows) { parser.CreateVar(dr["KyHieu"].ToString(), double.Parse(dr["GiaTri"].ToString()), null); } string formula = null; formula = txtCongThuc.Text; parser.OptimizationOn = true; if (formula.IndexOf("R+(") == 0 | formula.IndexOf("R-(") == 0) { SoSauDauPhay = int.Parse(formula.Substring(3, 1)); double tmp = 0; if (formula.IndexOf("R+(") == 0) { formula = formula.Substring(5, formula.Length - 5); parser.Expression = formula; parser.Parse(); tmp = double.Parse(parser.Value.ToString()); Value = parser.Round(tmp, SoSauDauPhay, true); } else { formula = formula.Substring(5, formula.Length - 5); parser.Expression = formula; parser.Parse(); tmp = double.Parse(parser.Value.ToString()); Value = parser.Round(tmp, SoSauDauPhay, false); } } else { parser.Expression = formula; parser.Parse(); Value = double.Parse(parser.Value.ToString()); } return(true); } catch (Exception) { return(false); } }
public void ShowFusion(Fusion fusion) { lbH2Value.Text = ""; lbO2Value.Text = ""; lbCOValue.Text = ""; lbCO2Value.Text = ""; lbN2Value.Text = ""; lbArValue.Text = ""; zgMain.GraphPane.CurveList.Clear(); PointPairList pointsH2 = new PointPairList(); PointPairList pointsO2 = new PointPairList(); PointPairList pointsCO = new PointPairList(); PointPairList pointsCO2 = new PointPairList(); PointPairList pointsN2 = new PointPairList(); PointPairList pointsAr = new PointPairList(); foreach (TrendPoint tp in fusion.Points) { pointsH2.Add(tp.Time.TotalSeconds, tp.H2); pointsO2.Add(tp.Time.TotalSeconds, tp.O2); pointsCO.Add(tp.Time.TotalSeconds, tp.CO); pointsCO2.Add(tp.Time.TotalSeconds, tp.CO2); pointsN2.Add(tp.Time.TotalSeconds, tp.N2); pointsAr.Add(tp.Time.TotalSeconds, tp.Ar); } if (cbH2.Checked) { zgMain.GraphPane.AddCurve("H2", pointsH2, Color.Green, SymbolType.None); } if (cbO2.Checked) { zgMain.GraphPane.AddCurve("O2", pointsO2, Color.Blue, SymbolType.None); } if (cbCO.Checked) { zgMain.GraphPane.AddCurve("CO", pointsCO, Color.Red, SymbolType.None); } if (cbCO2.Checked) { zgMain.GraphPane.AddCurve("CO2", pointsCO2, Color.Orange, SymbolType.None); } if (cbN2.Checked) { zgMain.GraphPane.AddCurve("N2", pointsN2, Color.Black, SymbolType.None); } if (cbAr.Checked) { zgMain.GraphPane.AddCurve("Ar", pointsAr, Color.Turquoise, SymbolType.None); } zgMain.GraphPane.Title.FontSpec.Size = 6; zgMain.GraphPane.Title.Text = string.Format("Плавка: {0} Марка: {1} Начало: {2}({3}) Бригада: {4} Конвертер:{5} Т зад={6} Т факт={7} С зад={8} С факт={9}", fusion.Number, fusion.Grade, fusion.StartDate, fusion.StartDateDB, fusion.TeamNumber, fusion.ConverterNumber, fusion.PlannedTempereture, fusion.FactTemperature, fusion.PlannedC, fusion.FactC); // Отображаем график для введенных формул if (gbVars.Controls.Count > 0) { MathParser mathParser = new MathParser(); int varsCount = gbVars.Controls.Count / 3; for (int i = 0; i < varsCount; i++) { PointPairList points = new PointPairList(); foreach (TrendPoint tp in fusion.Points) { mathParser.CreateVar("H2", tp.H2, null); mathParser.CreateVar("O2", tp.O2, null); mathParser.CreateVar("CO", tp.CO, null); mathParser.CreateVar("CO2", tp.CO2, null); mathParser.CreateVar("N2", tp.N2, null); mathParser.CreateVar("Ar", tp.Ar, null); mathParser.Expression = (gbVars.Controls.Find(string.Format("tb{0}", i), true)[0] as System.Windows.Forms.TextBox).Text; try { points.Add(tp.Time.TotalSeconds, mathParser.ValueAsDouble); } catch (Exception e) { MessageBox.Show(string.Format("Переменная {0} задана неверно, ошибка в формуле", (gbVars.Controls.Find(string.Format("lb{0}", i), true)[0] as System.Windows.Forms.Label).Text)); return; } } mathParser.CreateVar((gbVars.Controls.Find(string.Format("lb{0}", i), true)[0] as System.Windows.Forms.Label).Text, mathParser.ValueAsString, null); if ((gbVars.Controls.Find(string.Format("cb{0}", i), true)[0] as System.Windows.Forms.CheckBox).Checked) { zgMain.GraphPane.AddCurve((gbVars.Controls.Find(string.Format("lb{0}", i), true)[0] as System.Windows.Forms.Label).Text, points, Color.DeepPink, SymbolType.None); } } } zgMain.GraphPane.Legend.IsVisible = false; zgMain.AxisChange(); zgMain.Invalidate(); zgMain.Visible = true; pAddVar.Visible = true; pVars.Visible = true; gbValues.Visible = true; }
private void UpdateGraph() { zGraph.GraphPane.CurveList.Clear(); zGraph.RestoreScale(zGraph.GraphPane); PointPairList pointsH2 = new PointPairList(); PointPairList pointsO2 = new PointPairList(); PointPairList pointsCO = new PointPairList(); PointPairList pointsCO2 = new PointPairList(); PointPairList pointsN2 = new PointPairList(); PointPairList pointsAr = new PointPairList(); PointPairList pointsTemp = new PointPairList(); PointPairList pointsFlow = new PointPairList(); PointPairList pointsRealCO = new PointPairList(); PointPairList pointsRealCO2 = new PointPairList(); PointPairList pointsRealFlow = new PointPairList(); double time; foreach (OffGas og in CurrentListOfGas) { time = (og.Date - CurrentFussion.StartDate).TotalSeconds; pointsH2.Add(time, og.H2); pointsO2.Add(time, og.O2); pointsCO.Add(time, og.CO); pointsCO2.Add(time, og.CO2); pointsN2.Add(time, og.N2); pointsAr.Add(time, og.Ar); pointsTemp.Add(time, og.Temperature); pointsFlow.Add(time, og.Flow / 60); } foreach (OffGasAnalysisEvent ogaEvent in _heat.OffGasAnalysisHistory) { time = (ogaEvent.Time - CurrentFussion.StartDate).TotalSeconds; pointsRealCO.Add(time, ogaEvent.CO); pointsRealCO2.Add(time, ogaEvent.CO2); } foreach (OffGasEvent ogEvent in _heat.OffGasHistory) { time = (ogEvent.Time - CurrentFussion.StartDate).TotalSeconds; pointsRealFlow.Add(time, ogEvent.OffGasFlow / 60); } if (cbH2.Checked) { zGraph.GraphPane.AddCurve("H2", pointsH2, Color.Green, SymbolType.None); } if (cbO2.Checked) { zGraph.GraphPane.AddCurve("O2", pointsO2, Color.Blue, SymbolType.None); } if (cbCO.Checked) { zGraph.GraphPane.AddCurve("CO", pointsCO, Color.Red, SymbolType.None); } if (cbCO2.Checked) { zGraph.GraphPane.AddCurve("CO2", pointsCO2, Color.Orange, SymbolType.None); } if (cbN2.Checked) { zGraph.GraphPane.AddCurve("N2", pointsN2, Color.Black, SymbolType.None); } if (cbAr.Checked) { zGraph.GraphPane.AddCurve("Ar", pointsAr, Color.Turquoise, SymbolType.None); } if (cbFlow.Checked) { zGraph.GraphPane.AddCurve("Flow", pointsFlow, Color.SaddleBrown, SymbolType.None); } if (cbTemp.Checked) { zGraph.GraphPane.AddCurve("Temp", pointsTemp, Color.OliveDrab, SymbolType.None); } if (cbRealCO.Checked) { zGraph.GraphPane.AddCurve("RealCO", pointsRealCO, Color.DarkGray, SymbolType.None); } if (cbRealCO2.Checked) { zGraph.GraphPane.AddCurve("RealCO2", pointsRealCO2, Color.Fuchsia, SymbolType.None); } if (cbRealFlow.Checked) { zGraph.GraphPane.AddCurve("RealFlow", pointsRealFlow, Color.MidnightBlue, SymbolType.None); } PointPairList pointsLance = new PointPairList(); PointPairList pointsOFlow = new PointPairList(); List<Lance> lanceHeights = CurrentListLance;//m_Db.GetLance(CurrentFussion.Id); if (lanceHeights.Count > 0) { int lanceHeight = lanceHeights.First().Height; for (double second = (lanceHeights.First().Date - CurrentFussion.StartDate).TotalSeconds; second < (lanceHeights.Last().Date - CurrentFussion.StartDate).TotalSeconds; second++) { foreach (Lance lance in lanceHeights) { if (second > 0) { if ((int)(lance.Date - CurrentFussion.StartDate).TotalSeconds == (int)second) { pointsLance.Add(second, lance.Height * Zoom); pointsOFlow.Add(second, lance.O2Flow * Zoom); lanceHeight = lance.Height; continue; } pointsLance.Add(second, lanceHeight); } } } } if (cbLance.Checked) { zGraph.GraphPane.AddCurve("Фурма", pointsLance, Color.Lime, SymbolType.None); } if (cbOFlow.Checked) { zGraph.GraphPane.AddCurve("OFlow", pointsOFlow, Color.Magenta, SymbolType.None); } //PointPairList pointsAdditions = new PointPairList(); if (gbVars.Controls.Count > 0) { MathParser mathParser = new MathParser(); int varsCount = gbVars.Controls.Count / 3; for (int i = 0; i < varsCount; i++) { if ((gbVars.Controls.Find(string.Format("cb{0}", i), true)[0] as System.Windows.Forms.CheckBox).Checked) { PointPairList points = new PointPairList(); foreach (OffGas og in CurrentListOfGas) { mathParser.CreateVar("H2", og.H2, null); mathParser.CreateVar("O2", og.O2, null); mathParser.CreateVar("CO", og.CO, null); mathParser.CreateVar("CO2", og.CO2, null); mathParser.CreateVar("N2", og.N2, null); mathParser.CreateVar("Ar", og.Ar, null); mathParser.Expression = (gbVars.Controls.Find(string.Format("tb{0}", i), true)[0] as System.Windows.Forms.TextBox).Text; try { points.Add((og.Date - CurrentFussion.StartDate).TotalSeconds, mathParser.ValueAsDouble * Zoom); } catch (Exception) { MessageBox.Show(string.Format("Переменная {0} задана неверно, ошибка в формуле", (gbVars.Controls.Find(string.Format("lb{0}", i), true)[0] as System.Windows.Forms.Label).Text)); return; } } mathParser.CreateVar((gbVars.Controls.Find(string.Format("lb{0}", i), true)[0] as System.Windows.Forms.Label).Text, mathParser.ValueAsString, null); if ((gbVars.Controls.Find(string.Format("cb{0}", i), true)[0] as System.Windows.Forms.CheckBox).Checked) { zGraph.GraphPane.AddCurve((gbVars.Controls.Find(string.Format("lb{0}", i), true)[0] as System.Windows.Forms.Label).Text, points, Color.DeepPink, SymbolType.None); } } } } zGraph.GraphPane.Title.IsVisible = false; this.Text = string.Format("Плавка: {0} Марка: {1} Начало: {2}({3}) Бригада: {4} Конвертер:{5} Т зад={6} Т факт={7} С зад={8} С факт={9}", CurrentFussion.Number, CurrentFussion.Grade, ((HeatAttributes) CurrentFussion).StartDate, CurrentFussion.StartDate, CurrentFussion.TeamNumber, CurrentFussion.AggregateNumber, CurrentFussion.PlannedTemperature, CurrentFussion.FactTemperature, CurrentFussion.PlannedCarbon, CurrentFussion.FactCarbon); zGraph.AxisChange(); zGraph.Invalidate(); }