Beispiel #1
0
        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);
            }
        }
Beispiel #3
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();
        }