protected ModelParamsVM OnQueryModelParamsSuccess(ModelParams resp)
        {
            var           modelParamsVMCollection = GetModelParamsVMCollection(resp.ModelAim);
            ModelParamsVM ret = null;

            if (!string.IsNullOrEmpty(resp.InstanceName))
            {
                ret = modelParamsVMCollection.FirstOrDefault(c => c.InstanceName == resp.InstanceName);
                if (ret == null)
                {
                    ret = new ModelParamsVM()
                    {
                        InstanceName = resp.InstanceName,
                        Model        = resp.Model,
                        ModelAim     = resp.ModelAim
                    };
                    modelParamsVMCollection.Add(ret);
                }

                foreach (var param in resp.Params)
                {
                    ret[param.Key] = new NamedParamVM()
                    {
                        Name  = param.Key,
                        Value = param.Value,
                    };
                }
            }

            return(ret);
        }
 private void TransformNormal(Model model, ModelParams modelParams)
 {
     for (int i = 0; i < model.Normals.Count; i++)
     {
         model.Normals[i] = Vector3.Normalize(Vector3.TransformNormal(model.Normals[i], GetWorldMatrix(modelParams)));
     }
 }
Esempio n. 3
0
        public double[] GetCoordY(ModelParams para = ModelParams.point_coord_y)
        {
            HTuple Y = GetParamValue(para);

            double[] arry = Y.ToDArr();
            return(arry);
        }
Esempio n. 4
0
        /**获取外包络矩形
         * **/
        public double[] GetBoundingBox(ModelParams para = ModelParams.bounding_box1)
        {
            HTuple boundingBox = GetParamValue(para);

            double[] arry = boundingBox.ToDArr();//获取2个点,2个点可以转换成一个立方体
            return(arry);
        }
Esempio n. 5
0
        public double[] GetCoordZ(ModelParams para = ModelParams.point_coord_z)
        {
            HTuple Z = GetParamValue(para);

            double[] arry = Z.ToDArr();
            return(arry);
        }
        //----------------------------------------------------------------------

        //Assign params from math model
        //Edit: Today, with more experience, I'd use automapper or something like that
        public void parametersPassing(Parameters model, ModelParams appcode)
        {
            appcode.Fs         = model.Fs;
            appcode.Uas_rms    = model.Uu1;
            appcode.Ubs_rms    = model.Uv1;
            appcode.Ucs_rms    = model.Uw1;
            appcode.Phase      = model.Phase;
            appcode.Mas_ext    = model.Msu;
            appcode.Mbs_ext    = model.Msv;
            appcode.Mcs_ext    = model.Msw;
            appcode.Ras_ext    = model.Rsu;
            appcode.Rbs_ext    = model.Rsv;
            appcode.Rcs_ext    = model.Rsw;
            appcode.Jrext      = model.Jext;
            appcode.Drext      = model.Dext;
            appcode.NoLoadTime = model.Ttl;
            appcode.Textern    = model.Tn;
            appcode.TimeStart  = model.Ti;
            appcode.TimeStop   = model.Ts;
            appcode.pwmState   = model.pwmState;
            appcode.TsoftStart = model.Tsoftstart;
            appcode.F0         = model.F0;
            appcode.Fk         = model.Fk;
            appcode.SlopeRatio = model.SlopeRatio;
        }
Esempio n. 7
0
        /**获取点云的坐标
         * **/
        public double[] GetCoordX(ModelParams para = ModelParams.point_coord_x)
        {
            HTuple X = GetParamValue(para);

            double[] arry = X.ToDArr();
            return(arry);
        }
Esempio n. 8
0
        /**获取点云的属性,默认为获取点云个数
         * **/
        public HTuple GetParamValue(ModelParams para = ModelParams.num_points)
        {
            HTuple genPara = Enum2Htuple(para);
            HTuple result  = new HTuple();

            HOperatorSet.GetObjectModel3dParams(Pointclouds, genPara, out result);
            return(result);
        }
 private void transformToViewPort(Model model, ModelParams modelParams, float[] w)
 {
     for (int i = 0; i < model.Points.Count; i++)
     {
         model.Points[i] = Vector4.Transform(model.Points[i], GetViewPortMetrix(modelParams));
         model.Points[i] = new Vector4(model.Points[i].X, model.Points[i].Y, model.Points[i].Z, w[i]);
     }
 }
Esempio n. 10
0
        public void RemoveTempModel(string modelName)
        {
            var model = new ModelParams();

            model.InstanceName = modelName;

            MessageWrapper.SendMessage((uint)SystemMessageID.MSG_ID_UPDATE_TEMPMODELPARAMS, model);
        }
Esempio n. 11
0
        public void NewWingModelInstance(string modelName)
        {
            var modelParam = new ModelParams();

            modelParam.InstanceName = modelName;
            modelParam.Model        = "wing";

            MessageWrapper.SendMessage((uint)SystemMessageID.MSG_ID_UPDATE_MODELPARAMS, modelParam);
        }
Esempio n. 12
0
        public void UpdateTempModelParams(string modelName, string paramName, double paramValue)
        {
            var model = new ModelParams();

            model.InstanceName      = modelName;
            model.Params[paramName] = paramValue;

            MessageWrapper.SendMessage((uint)SystemMessageID.MSG_ID_UPDATE_TEMPMODELPARAMS, model);
        }
Esempio n. 13
0
        public ActionResult Index()
        {
            List <BaseDatos> pBDS = new List <BaseDatos>();

            pBDS.Add(new BaseDatos {
                Nombre = "Base1", Tables = new List <Tablas>()
            });
            pBDS.Add(new BaseDatos {
                Nombre = "Base2", Tables = new List <Tablas>()
            });
            pBDS.Add(new BaseDatos {
                Nombre = "Base3", Tables = new List <Tablas>()
            });
            pBDS.Add(new BaseDatos {
                Nombre = "Base4", Tables = new List <Tablas>()
            });
            pBDS.Add(new BaseDatos {
                Nombre = "Base5", Tables = new List <Tablas>()
            });



            List <Tablas> tablasBD1 = new List <Tablas>();

            tablasBD1.Add(new Tablas {
                table = "Nombre Tabla", columnas = new List <Columnas>()
            });


            List <Columnas> ColumnasTabla1 = new List <Columnas>();

            ColumnasTabla1.Add(new Columnas {
                tabla = "Col1", Id = "Varchar", Int1 = "Numero", Int2 = "2", Int3 = "3", Varchar1 = "Var1", Varchar2 = "Var2", Varchar3 = "var3", DateTime1 = "date1", DateTime2 = "Date2", DateTime3 = "Date3"
            });

            tablasBD1[0].columnas = ColumnasTabla1;

            pBDS[0].Tables = tablasBD1;



            List <ResultadoGrid>  lstResultado = new List <ResultadoGrid>();
            List <ColumnasResult> Columnas     = new List <ColumnasResult>();
            DataTable             Resultado    = new DataTable();

            lstResultado.Add(new ResultadoGrid {
                Columnas = Columnas, Resultado = Resultado
            });


            ModelParams md = new ModelParams {
                BDS = pBDS, Resultado = lstResultado
            };

            return(View(md));
        }
Esempio n. 14
0
        public void UpdateModelParams(string modelName, IDictionary <string, double> keyvalues)
        {
            var model = new ModelParams();

            model.InstanceName = modelName;
            foreach (var pair in keyvalues)
            {
                model.Params[pair.Key] = pair.Value;
            }

            MessageWrapper.SendMessage((uint)SystemMessageID.MSG_ID_UPDATE_MODELPARAMS, model);
        }
Esempio n. 15
0
 //------
 public MathModel(ModelParams modParams, double time, double[] vars)
 {
     this.modParams = modParams;
     this.size      = modParams.Size;
     Msys           = new double[size, size];
     Usys           = new double[size];
     Rsys           = new double[size, size];
     Gsys           = new double[size, size];
     //---
     SetMsys(time, vars);
     SetGsys(time, vars);
     SetRsys(time, vars);
     SetUsys(time, vars);
 }
        public static void  TransformFromWorldToView(Model model, ModelParams modelParams)
        {
            CoordTransformations c = new CoordTransformations();
            Matrix4x4            worldProjctionMatix = c.GetMVP(modelParams);

            float[] w = new float[model.Points.Count];

            for (int i = 0; i < model.Points.Count; i++)
            {
                model.Points[i] = Vector4.Transform(model.Points[i], worldProjctionMatix);

                w[i]             = model.Points[i].W;
                model.Points[i] /= model.Points[i].W;
            }
            c.TransformNormal(model, modelParams);
            c.transformToViewPort(model, modelParams, w);
        }
Esempio n. 17
0
 private ModelParams modParams;      //Parametry modelu
 //------
 public Solver(ModelParams modParams, MathModel model)
 {
     this.model     = model;
     this.modParams = modParams;
     //---
     this.hc       = 0.00001;
     this.varSize  = modParams.Size;
     this.vars1    = new double[varSize];
     this.vars2    = new double[varSize];
     this.derivSys = new double[varSize];
     this.vecSys   = new double[varSize];
     //copy initial conditions array to vars1 and vars2 arrays
     for (int i = 0; i < varSize; i++)
     {
         vars1[i] = modParams.InitCondit[i];
         vars2[i] = modParams.InitCondit[i];
     }
 }
Esempio n. 18
0
        public Task <ModelParamsVM> QueryModelParamsAsync(string modelName, int timeout = 10000)
        {
            if (string.IsNullOrEmpty(modelName))
            {
                return(Task.FromResult <ModelParamsVM>(null));
            }

            var msgId = (uint)SystemMessageID.MSG_ID_QUERY_MODELPARAMS;

            var tcs = new TaskCompletionSource <ModelParamsVM>(new CancellationTokenSource(timeout));

            var serialId = NextSerialId;

            ModelParams modelParams = new ModelParams();

            modelParams.Header = new DataHeader {
                SerialId = serialId
            };
            modelParams.InstanceName = modelName;

            #region callback
            MessageWrapper.RegisterAction <ModelParams, ExceptionMessage>
                (msgId,
                (resp) =>
            {
                if (resp.Header?.SerialId == serialId)
                {
                    tcs.TrySetResult(OnQueryModelParamsSuccess(resp));
                }
            },
                (ExceptionMessage bizErr) =>
            {
                OnErrorAction(bizErr);
                tcs.SetResult(null);
            }
                );
            #endregion

            MessageWrapper.SendMessage(msgId, modelParams);

            return(tcs.Task);
        }
Esempio n. 19
0
        public Task <IDictionary <string, ObservableCollection <ModelParamsVM> > > QueryAllModelParamsAsync(int timeout = 10000)
        {
            var msgId = (uint)SystemMessageID.MSG_ID_QUERY_MODELPARAMS;

            var tcs = new TaskCompletionSource <IDictionary <string, ObservableCollection <ModelParamsVM> > >(new CancellationTokenSource(timeout));

            var serialId = NextSerialId;

            ModelParams modelParams = new ModelParams();

            modelParams.Header = new DataHeader()
            {
                SerialId = serialId
            };

            #region callback
            MessageWrapper.RegisterAction <ModelParams, ExceptionMessage>
                (msgId,
                (resp) =>
            {
                if (resp.Header?.SerialId == serialId)
                {
                    OnQueryModelParamsSuccess(resp);

                    if (resp.Header == null || !resp.Header.HasMore)
                    {
                        tcs.TrySetResult(_modelDict);
                    }
                }
            },
                (ExceptionMessage bizErr) =>
            {
                OnErrorAction(bizErr);
                tcs.SetResult(null);
            }
                );
            #endregion

            MessageWrapper.SendMessage(msgId, modelParams);

            return(tcs.Task);
        }
Esempio n. 20
0
    //------
    public void SolverStart(ModelParams modParams)
    {
        //********************Calculating delta for Textern increment
        double texternDelta = 0;

        if (modParams.Textern_t2 > modParams.Textern_t1)
        {
            texternDelta = modParams.Textern / ((modParams.Textern_t2 - modParams.Textern_t1) / hc);
        }
        double maximalTextern = modParams.Textern;

        modParams.Textern = 0;
        //********************
        //|time|vars[0]|...|vars[size-1|Usys[0]|...|Usys[size-2|Telem|
        this.resCols     = 1 + varSize + (varSize - 1) + 1;
        this.resRows     = modParams.PtsResults + 1;
        this.drawResults = new double[resRows, resCols];
        //time step between drawResults
        this.deltaTime = (modParams.TimeStop - modParams.TimeStart) / (this.resRows - 1);
        if (deltaTime <= hc)
        {
            hc = deltaTime;
        }
        //---
        startTime = modParams.TimeStart;
        stopTime  = modParams.TimeStop;
        time      = startTime;
        drawTime  = startTime;
        drawIndex = 0;
        //---
        SetDrawResults(1, 0);
        //---
        double[] K1 = new double[varSize];
        double[] K2 = new double[varSize];
        double[] K3 = new double[varSize];
        double[] K4 = new double[varSize];
        //The Runge-Kutta method
        while (time <= stopTime)
        {
            //*************************Zmiana wartości Momentu zewnętrznego.+++++++++++++++++++++++++++++++
            if (time >= modParams.Textern_t1 && time <= modParams.Textern_t2 && modParams.Textern_t1 != modParams.Textern_t2)
            {
                modParams.Textern += texternDelta;
                //modParams.Textern = (Text / Text_t1) * (solver.time - Text_t1) + Text;
            }
            else if (time > modParams.Textern_t1 && modParams.Textern_t1 == modParams.Textern_t2)
            {
                modParams.Textern = maximalTextern;
            }
            //**************************Koniec dodatkowego kodu****************************
            model.SetModel(time, vars1);
            //---
            SetDsys(time, vars1);
            K1 = Product(hc, derivSys);
            SetDsys(time + 0.5 * hc, Add2(vars1, Product(0.5, K1)));
            K2 = Product(hc, derivSys);
            SetDsys(time + 0.5 * hc, Add2(vars1, Product(0.5, K2)));
            K3 = Product(hc, derivSys);
            SetDsys(time + hc, Add2(vars1, K3));
            K4    = Product(hc, derivSys);
            vars2 = Add2(vars1, Product(0.16666, Add4(K1, Product(2, K2), Product(2, K3), K4)));
            //******
            //int qqq = 0;
            if (time < drawTime && drawTime <= time + hc)
            {
                double dt = drawTime - time;
                double w1 = 1 - dt / hc;
                double w2 = dt / hc;
                if (drawIndex < resRows)
                {
                    SetDrawResults(w1, w2);
                }
            }
            //******
            time += hc;
            for (int i = 0; i < varSize; i++)
            {
                vars1[i] = vars2[i];
            }
        }    //while
    }
 private Matrix4x4 GetMVP(ModelParams modelParams)
 {
     return(GetWorldMatrix(modelParams) * GetViewerMatrix(modelParams) * GetWorldProjectionMatrix(modelParams));
 }
 private static Matrix4x4 GetViewPortMetrix(ModelParams modelParams)
 {
     return(Matrix.GetViewPortMatrix(modelParams.XMin, modelParams.YMin, modelParams.Width, modelParams.Height, (int)modelParams.FarPlaneDistance));
 }
 private Matrix4x4 GetWorldProjectionMatrix(ModelParams modelParams)
 {
     return(Matrix4x4.CreatePerspectiveFieldOfView(modelParams.FieldOfView, modelParams.AspectRatio, modelParams.NearPlaneDistance, modelParams.FarPlaneDistance));
 }
 private Matrix4x4 GetViewerMatrix(ModelParams modelParams)
 {
     return
         (Matrix4x4.CreateTranslation(-new Vector3(modelParams.CameraPositionX, modelParams.CameraPositionY, modelParams.CameraPositionZ))
          * Matrix4x4.Transpose(Matrix4x4.CreateFromYawPitchRoll(modelParams.CameraYaw, modelParams.CameraPitch, modelParams.CameraRoll)));
 }
 private Matrix4x4 GetWorldMatrix(ModelParams modelParams)
 {
     ModelWorldMatrix = Matrix4x4.CreateScale(modelParams.Scaling) * Matrix4x4.CreateFromYawPitchRoll(modelParams.ModelYaw, modelParams.ModelPitch, modelParams.ModelRoll)
                        * Matrix4x4.CreateTranslation(modelParams.TranslationX, modelParams.TranslationY, modelParams.TranslationZ);
     return(ModelWorldMatrix);
 }
Esempio n. 26
0
    protected void btnOblicz_Click(object sender, EventArgs e)
    {
        bool bVal1  = Double.TryParse(txtTmin.Text, out tmin);
        bool bVal2  = Double.TryParse(txtTmax.Text, out tmax);
        bool bVal4  = Double.TryParse(txtUa.Text, out Ua);
        bool bVal5  = Double.TryParse(txtRa_ext.Text, out Ra_ext);
        bool bVal6  = Double.TryParse(txtRf_ext.Text, out Rf_ext);
        bool bVal7  = Double.TryParse(txtMa_ext.Text, out Ma_ext);
        bool bVal8  = Double.TryParse(txtMf_ext.Text, out Mf_ext);
        bool bVal9  = Double.TryParse(txtJr_ext.Text, out Jr_ext);
        bool bVal10 = Double.TryParse(txtDr_ext.Text, out Dr_ext);
        bool bVal11 = Double.TryParse(txtText.Text, out Text);
        bool bVal12 = Double.TryParse(txtText_t1.Text, out Text_t1);
        bool bVal13 = Double.TryParse(txtText_t2.Text, out Text_t2);

        //Chart1.Visible = true;
        //Chart4.Visible = true;
        //---

        modelParams = new ModelParams();

        //modelParams.TimeStart = tmin;
        modelParams.TimeStop = tmax;

        modelParams.Uarma = Ua;
        modelParams.Uflux = Uf;

        modelParams.Raext = Ra_ext;
        modelParams.Rfext = Rf_ext;
        modelParams.Maext = Ma_ext * 0.001;   //przeliczenie jednostek do µF i mH
        modelParams.Mfext = Mf_ext * 0.001;   //przeliczenie jednostek do µF i mH

        modelParams.Jrext = Jr_ext;
        modelParams.Drext = Dr_ext;

        //ustawianie parametrow momentu zewnetrznego
        modelParams.Textern    = Text;
        modelParams.Textern_t1 = Text_t1;
        modelParams.Textern_t2 = Text_t2;
        //----
        flag = false;


        size = Convert.ToInt32(tmax / delta); //liczenie ilości próbek

        modelParams.PtsResults = size;
        //------------Sprawdzenie poprawności wprowadzania danych - walidacja-------------
        if (tmin >= tmax || tmax > 5 || tmin < 0 || !bVal1 || !bVal2)
        {
            validation.Visible           = true;
            labErrorMessage_time.Visible = true;
            labErrorMessage_time.Text    = "Wartości parametrów t<sub>min</sub> oraz t<sub>max</sub> zostały wprowadzone błędnie ";
            txtTmin.BackColor            = System.Drawing.Color.Red;
            txtTmax.BackColor            = System.Drawing.Color.Red;
            flag = true;
        }

        /* Sprawdzenie poprawności napięć*/

        if (!bVal4 || Ua < 0)
        {
            validation.Visible = true;
            labErrorMessage_Voltage.Visible = true;
            labErrorMessage_Voltage.Text    = "Błędnie wprowadzona wartość napięcia twornika";
            txtUa.BackColor = System.Drawing.Color.Red;
            flag            = true;
        }
        /* Sprawdzenie poprawności parametrów obwodu*/

        if (!bVal5 || Ra_ext < 0)
        {
            validation.Visible           = true;
            labErrorMessage_Reza.Visible = true;
            labErrorMessage_Reza.Text    = "Błędnie wprowadzona wartość rezystancji obwodu twornika";
            txtRa_ext.BackColor          = System.Drawing.Color.Red;
            flag = true;
        }
        if (!bVal6 || Rf_ext < 0)
        {
            validation.Visible           = true;
            labErrorMessage_Rezf.Visible = true;
            labErrorMessage_Rezf.Text    = "Błędnie wprowadzona wartość rezystancji obwodu wzbudzenia";
            txtRf_ext.BackColor          = System.Drawing.Color.Red;
            flag = true;
        }
        if (!bVal7 || Ma_ext < 0)
        {
            validation.Visible           = true;
            labErrorMessage_Inda.Visible = true;
            labErrorMessage_Inda.Text    = "Błędnie wprowadzona wartość indukcyjności obwodu twornika";
            txtMa_ext.BackColor          = System.Drawing.Color.Red;
            flag = true;
        }
        if (!bVal8 || Mf_ext < 0)
        {
            validation.Visible           = true;
            labErrorMessage_Indf.Visible = true;
            labErrorMessage_Indf.Text    = "Błędnie wprowadzona wartość indukcyjności obwodu wzbudzenia";
            txtMf_ext.BackColor          = System.Drawing.Color.Red;
            flag = true;
        }
        /********sprawdzenie  momentu bezwładności oraz współczynnika tłumienia********/
        if (!bVal9 || Jr_ext < 0 || Jr_ext > 1)
        {
            validation.Visible         = true;
            labErrorMessage_Jr.Visible = true;
            labErrorMessage_Jr.Text    = "Wprowadzono niepoprawną wartość momentu bezwładności";
            txtJr_ext.BackColor        = System.Drawing.Color.Red;
            flag = true;
        }
        if (!bVal10 || Dr_ext < 0 || Dr_ext > 1)
        {
            validation.Visible         = true;
            labErrorMessage_Dr.Visible = true;
            labErrorMessage_Dr.Text    = "Wprowadzono niepoprawną wartość współczynnika tłumienia";
            txtDr_ext.BackColor        = System.Drawing.Color.Red;
            flag = true;
        }
        /*Sprawdzenie warunku momentu*/
        if (Text_t1 > Text_t2 || Text_t2 > tmax || Text_t1 < 0 || Text_t1 < 0 || Text_t2 < 0 || !bVal12 || !bVal13 || !bVal11)
        {
            validation.Visible           = true;
            labErrorMessage_Text.Visible = true;
            labErrorMessage_Text.Text    = "Błędne wartości parametrów Text<sub>t1</sub>, Text<sub>t2</sub> oraz Text";
            txtText.BackColor            = System.Drawing.Color.Red;
            txtText_t1.BackColor         = System.Drawing.Color.Red;
            txtText_t2.BackColor         = System.Drawing.Color.Red;
            flag = true;
        }
        /*pętla*/
        if (flag == true)
        {
            return;
        }
        else
        {
            labErrorMessage.Visible = true;
            labErrorMessage.Text    = "Dane zostały wprowadzone poprawnie";
            Chart1.Visible          = true;
        }

        this.mathModel = new MathModel(modelParams, modelParams.TimeStart, modelParams.InitCondit);
        this.solver    = new Solver(modelParams, mathModel);
        //---
        solver.SolverStart(modelParams);
        double[,] wyniki = solver.Results;
        //-- pierwsza tabela danych do wykresu 1
        table1 = new DataTable();
        //--
        DataColumn column1;
        DataRow    row1;

        //--
        column1            = new DataColumn();
        column1.DataType   = Type.GetType("System.Double");
        column1.ColumnName = "Torque";
        table1.Columns.Add(column1);
        //=--
        //column = new DataColumn();
        //column.DataType = Type.GetType("System.Double");
        //column.ColumnName = "Voltage";
        //table.Columns.Add(column);
        //=--
        column1            = new DataColumn();
        column1.DataType   = Type.GetType("System.Double");
        column1.ColumnName = "Omega";
        table1.Columns.Add(column1);
        //=--
        //column1 = new DataColumn();
        //column1.DataType = Type.GetType("System.Double");
        //column1.ColumnName = "Uf";
        //table1.Columns.Add(column1);
        //=--
        //column1 = new DataColumn();
        //column1.DataType = Type.GetType("System.Double");
        //column1.ColumnName = "Ics";
        //table1.Columns.Add(column1);


        //----- tabela do drugiego wykresu

        //table2 = new DataTable();

        //DataColumn column2;
        //DataRow row2;
        //--
        //column2 = new DataColumn();
        //column2.DataType = Type.GetType("System.Double");
        //column2.ColumnName = "Time";
        //table2.Columns.Add(column2);

        //column2 = new DataColumn();
        //column2.DataType = Type.GetType("System.Double");
        //column2.ColumnName = "Uas";
        //table2.Columns.Add(column2);
        ////=--
        //column2 = new DataColumn();
        //column2.DataType = Type.GetType("System.Double");
        //column2.ColumnName = "Ubs";
        //table2.Columns.Add(column2);
        ////=--
        //column2 = new DataColumn();
        //column2.DataType = Type.GetType("System.Double");
        //column2.ColumnName = "Ucs";
        //table2.Columns.Add(column2);

        //-------tabela do trzeciego wykresu

        //table3 = new DataTable();

        //DataColumn column3;
        //DataRow row3;
        //--
        //column3 = new DataColumn();
        //column3.DataType = Type.GetType("System.Double");
        //column3.ColumnName = "Time";
        //table3.Columns.Add(column3);

        //column3 = new DataColumn();
        //column3.DataType = Type.GetType("System.Double");
        //column3.ColumnName = "Iar";
        //table3.Columns.Add(column3);
        ////=--
        //column3 = new DataColumn();
        //column3.DataType = Type.GetType("System.Double");
        //column3.ColumnName = "Ibr";
        //table3.Columns.Add(column3);
        ////=--
        //column3 = new DataColumn();
        //column3.DataType = Type.GetType("System.Double");
        //column3.ColumnName = "Icr";
        //table3.Columns.Add(column3);

        //-------tabela do czwartego wykresu

        //table2 = new DataTable();

        //DataColumn column2;
        //DataRow row2;
        //--
        //column2 = new DataColumn();
        //column2.DataType = Type.GetType("System.Double");
        //column2.ColumnName = "Time";
        //table2.Columns.Add(column2);

        //column2 = new DataColumn();
        //column2.DataType = Type.GetType("System.Double");
        //column2.ColumnName = "ω";
        //table2.Columns.Add(column2);
        //=--
        //column2 = new DataColumn();
        //column2.DataType = Type.GetType("System.Double");
        //column2.ColumnName = "Text";
        //table2.Columns.Add(column2);
        //=--
        //column2 = new DataColumn();
        //column2.DataType = Type.GetType("System.Double");
        //column2.ColumnName = "Telem";
        //table2.Columns.Add(column2);


        //----------------
        int size_tmin = Convert.ToInt32(tmin / delta);

        //labErrorMessage.Text = "jest to ilosc " + (int)size;
        for (int i = 0; i <= size; i++)
        {
            row1           = table1.NewRow();
            row1["Torque"] = wyniki[i, 7];
            row1["Omega"]  = wyniki[i, 3]; //
            //row1["Uf"] = wyniki[i, 6]; //
            //row1["Ics"] = wyniki[i, 3]; //

            table1.Rows.Add(row1);

            //row2 = table2.NewRow();
            //row2["Time"] = wyniki[i, 0];
            //row2["Uas"] = wyniki[i, 9]; //
            //row2["Ubs"] = wyniki[i, 10]; //
            //row2["Ucs"] = wyniki[i, 11]; //

            //table2.Rows.Add(row2);

            //row3 = table3.NewRow();
            //row3["Time"] = wyniki[i, 0];
            //row3["Iar"] = wyniki[i, 4]; //
            //row3["Ibr"] = wyniki[i, 5]; //
            //row3["Icr"] = wyniki[i, 6]; //

            //table3.Rows.Add(row3);

            //row2 = table2.NewRow();
            //row2["Time"] = wyniki[i, 0];
            //row2["ω"] = wyniki[i, 3]; //
            //row2["Text"] = wyniki[i, 5]; //
            //row2["Telem"] = wyniki[i, 6]; //

            //table2.Rows.Add(row2);
        }
        //table1.Rows.RemoveAt(table1.Rows.Count - 1);
        dView1 = new DataView(table1);
        //--

        Chart1.Series.Clear();
        Chart1.ChartAreas.Add("Wykres01");
        //--
        Chart1.DataBindTable(dView1, "Torque");
        Chart1.Width  = 900;
        Chart1.Height = 750;

        //Chart3.Series["Voltage"].ChartType = SeriesChartType.Line;

        Chart1.Series["Omega"].ChartType   = SeriesChartType.Spline;
        Chart1.Series["Omega"].BorderWidth = 3;//grubosc wykresu



        //Chart1.Series["Uf"].ChartType = SeriesChartType.Spline;
        //Chart1.Series["Uf"].BorderWidth = 3;//grubosc wykresu
        //Chart1.ChartAreas["ChartArea1"].AxisY2.Enabled = AxisEnabled.True;
        //Chart1.Series["Uf"].YAxisType = AxisType.Secondary;

        //if (chkIcs.Checked)
        //{
        //    Chart1.Visible = true;
        //    Chart1.Series["Ics"].ChartType = SeriesChartType.Line;
        //    Chart1.Series["Ics"].BorderWidth = 3;//grubosc wykresu
        //}
        //Chart1.ChartAreas[0].AxisX.LineWidth = 2;
        Chart1.ChartAreas[0].AxisX.Minimum = tmin;
        //Chart1.ChartAreas[0].AxisX.Maximum = (double)table.Rows[size]["Time"];
        //Chart1.ChartAreas[0].AxisY.Minimum = 0.0;
        Chart1.ChartAreas[0].AxisY.ArrowStyle = AxisArrowStyle.Lines;//strzałki wykresu
        //Chart1.ChartAreas[0].AxisX.ArrowStyle = AxisArrowStyle.Lines;
        Chart1.ChartAreas[0].AxisY2.ArrowStyle = AxisArrowStyle.Lines;
        //Chart1.ChartAreas[0].AxisY2.Minimum = 0.0;
        //Chart1.ChartAreas[0].AxisY2.Maximum = 2.4;
        Chart1.ChartAreas[0].AxisX.LabelStyle.Format = "{#0.###}";
        Chart1.ChartAreas[0].AxisX.Title             = "Moment obrotowy [Nm]";
        Chart1.ChartAreas[0].AxisY.Title             = "Omega [rad/s]";
        //Chart1.ChartAreas[0].AxisY2.Title = "Uf [V]";
        Chart1.ChartAreas[0].AxisX.TitleFont = new System.Drawing.Font("Calibri", 11F, System.Drawing.FontStyle.Bold);
        Chart1.ChartAreas[0].AxisY.TitleFont = new System.Drawing.Font("Calibri", 11F, System.Drawing.FontStyle.Bold);
        //Chart1.ChartAreas[0].AxisY2.TitleFont = new System.Drawing.Font("Calibri", 11F, System.Drawing.FontStyle.Bold);


        //DRUGI WYKRES

        //dView2 = new DataView(table2);
        ////--

        //Chart2.Series.Clear();
        //Chart2.ChartAreas.Add("Wykres02");
        //Chart2.Series.Add("Series2");
        ////--
        //Chart2.DataBindTable(dView2, "Time");
        //Chart2.Width = 1200;
        //Chart2.Height = 800;

        ////Chart3.Series["Voltage"].ChartType = SeriesChartType.Line;
        //if (chkUas.Checked)
        //{
        //    Chart2.Visible = true;
        //    Chart2.Series["Uas"].ChartType = SeriesChartType.Line;
        //    Chart2.Series["Uas"].BorderWidth = 3;//grubosc wykresu
        //}

        //if (chkUbs.Checked)
        //{
        //    Chart2.Visible = true;
        //    Chart2.Series["Ubs"].ChartType = SeriesChartType.Line;
        //    Chart2.Series["Ubs"].BorderWidth = 3;//grubosc wykresu
        //}

        //if (chkUcs.Checked)
        //{
        //    Chart2.Visible = true;
        //    Chart2.Series["Ucs"].ChartType = SeriesChartType.Line;
        //    Chart2.Series["Ucs"].BorderWidth = 3;//grubosc wykresu
        //}

        ////Chart1.ChartAreas[0].AxisX.LineWidth = 2;
        //Chart2.ChartAreas[0].AxisX.Minimum = tmin;
        ////Chart1.ChartAreas[0].AxisX.Maximum = (double)table.Rows[size]["Time"];
        ////Chart1.ChartAreas[0].AxisY.Minimum = 0.0;
        //Chart2.ChartAreas[0].AxisY.ArrowStyle = AxisArrowStyle.Lines;//strzałki wykresu
        //Chart2.ChartAreas[0].AxisX.ArrowStyle = AxisArrowStyle.Lines;
        //Chart2.ChartAreas[0].AxisY2.Minimum = 0.0;
        //Chart2.ChartAreas[0].AxisY2.Maximum = 100.0;
        //Chart2.ChartAreas[0].AxisX.LabelStyle.Format = "{#0.###}";
        //Chart2.ChartAreas[0].AxisX.Title = "Czas [s]";
        //Chart2.ChartAreas[0].AxisY.Title = "Napięcie [U]";
        //Chart2.ChartAreas[0].AxisX.TitleFont = new System.Drawing.Font("Calibri", 15F, System.Drawing.FontStyle.Bold);
        //Chart2.ChartAreas[0].AxisY.TitleFont = new System.Drawing.Font("Calibri", 15F, System.Drawing.FontStyle.Bold);

        //Trzeci WYKRES

        //dView3 = new DataView(table3);
        ////--

        //Chart3.Series.Clear();
        //Chart3.ChartAreas.Add("Wykres03");
        ////--
        //Chart3.DataBindTable(dView3, "Time");
        //Chart3.Width = 1200;
        //Chart3.Height = 800;

        //if (chkIar.Checked)
        //{
        //    Chart3.Visible = true;
        //    Chart3.Series["Iar"].ChartType = SeriesChartType.Line;
        //    Chart3.Series["Iar"].BorderWidth = 3;//grubosc wykresu
        //}

        //if (chkIbr.Checked)
        //{
        //    Chart3.Visible = true;
        //    Chart3.Series["Ibr"].ChartType = SeriesChartType.Line;
        //    Chart3.Series["Ibr"].BorderWidth = 3;//grubosc wykresu
        //}

        //if (chkIcr.Checked)
        //{
        //    Chart3.Visible = true;
        //    Chart3.Series["Icr"].ChartType = SeriesChartType.Line;
        //    Chart3.Series["Icr"].BorderWidth = 3;//grubosc wykresu
        //}

        ////Chart1.ChartAreas[0].AxisX.LineWidth = 2;
        //Chart3.ChartAreas[0].AxisX.Minimum = tmin;
        ////Chart1.ChartAreas[0].AxisX.Maximum = (double)table.Rows[size]["Time"];
        ////Chart1.ChartAreas[0].AxisY.Minimum = 0.0;
        //Chart3.ChartAreas[0].AxisY.ArrowStyle = AxisArrowStyle.Lines;//strzałki wykresu
        //Chart3.ChartAreas[0].AxisX.ArrowStyle = AxisArrowStyle.Lines;
        //Chart3.ChartAreas[0].AxisY2.Minimum = 0.0;
        //Chart3.ChartAreas[0].AxisY2.Maximum = 100.0;
        //Chart3.ChartAreas[0].AxisX.LabelStyle.Format = "{#0.###}";
        //Chart3.ChartAreas[0].AxisX.Title = "Czas [s]";
        //Chart3.ChartAreas[0].AxisY.Title = "Prąd [A]";
        //Chart3.ChartAreas[0].AxisX.TitleFont = new System.Drawing.Font("Calibri", 15F, System.Drawing.FontStyle.Bold);
        //Chart3.ChartAreas[0].AxisY.TitleFont = new System.Drawing.Font("Calibri", 15F, System.Drawing.FontStyle.Bold);

        //Czwarty WYKRES

        //dView2 = new DataView(table2);
        //--

        //Chart2.Series.Clear();
        //Chart2.ChartAreas.Add("Wykres04");
        //--

        //Chart2.DataBindTable(dView2, "Time");
        //Chart2.Width = 900;
        //Chart2.Height = 750;



        //Chart4.Visible = true;
        //Chart4.ChartAreas["ChartArea1"].AxisY2.Enabled = AxisEnabled.True;
        //Chart4.Series["ω"].ChartType = SeriesChartType.Line;
        //Chart4.Series["ω"].BorderWidth = 3;//grubosc wykresu
        //Chart4.Series["ω"].YAxisType = AxisType.Secondary;



        //Chart2.Series["ω"].ChartType = SeriesChartType.Line;
        //Chart2.Series["ω"].BorderWidth = 3;//grubosc wykresu
        //Chart2.ChartAreas["ChartArea1"].AxisY2.Enabled = AxisEnabled.True;
        //Chart2.Series["ω"].YAxisType = AxisType.Secondary;



        //Chart2.Series["Text"].ChartType = SeriesChartType.Line;
        //Chart2.Series["Text"].BorderWidth = 3;//grubosc wykresu


        //Chart2.Series["Telem"].ChartType = SeriesChartType.Line;
        //Chart2.Series["Telem"].BorderWidth = 3;//grubosc wykresu



        //Chart1.ChartAreas[0].AxisX.LineWidth = 2;
        //Chart2.ChartAreas[0].AxisX.Minimum = tmin;
        //Chart1.ChartAreas[0].AxisX.Maximum = (double)table.Rows[size]["Time"];
        //Chart1.ChartAreas[0].AxisY.Minimum = 0.0;
        //Chart2.ChartAreas[0].AxisY.ArrowStyle = AxisArrowStyle.Lines;//strzałki wykresu
        //Chart2.ChartAreas[0].AxisY2.ArrowStyle = AxisArrowStyle.Lines;
        //Chart4.ChartAreas[0].AxisX.ArrowStyle = AxisArrowStyle.Lines;
        //Chart4.ChartAreas[0].AxisY2.Minimum = 0.0;
        //Chart4.ChartAreas[0].AxisY2.Maximum = 110.0;
        //Chart2.ChartAreas[0].AxisY2.Title = "prędkość kątowa [rad/s]";
        //Chart2.ChartAreas[0].AxisX.LabelStyle.Format = "{#0.###}";
        //Chart2.ChartAreas[0].AxisX.Title = "Czas [s]";
        //Chart2.ChartAreas[0].AxisY.Title = "Moment [Nm]";
        //Chart2.ChartAreas[0].AxisX.TitleFont = new System.Drawing.Font("Calibri", 11F, System.Drawing.FontStyle.Bold);
        //Chart2.ChartAreas[0].AxisY.TitleFont = new System.Drawing.Font("Calibri", 11F, System.Drawing.FontStyle.Bold);
        //Chart2.ChartAreas[0].AxisY2.TitleFont = new System.Drawing.Font("Calibri", 11F, System.Drawing.FontStyle.Bold);
    }
    protected void btnOblicz_Click(object sender, EventArgs e)
    {
        bool bVal1 = Int32.TryParse(txtTmin.Text, out Tmin);
        bool bVal2 = Int32.TryParse(txtTmax.Text, out Tmax);
        bool bVal4 = Double.TryParse(txtUt_m.Text, out U_mnoznik);


        //Chart1.Visible = true;
        //Chart4.Visible = true;
        //---

        modelParams = new ModelParams();

        //modelParams.TimeStart = tmin;
        //modelParams.TimeStop = tmax;
        modelParams.Uarma = Ua * U_mnoznik;
        modelParams.Uflux = Uf;

        modelParams.Raext = Ra_ext;
        modelParams.Rfext = Rf_ext;
        modelParams.Maext = Ma_ext * 0.001;   //przeliczenie jednostek do µF i mH
        modelParams.Mfext = Mf_ext * 0.001;   //przeliczenie jednostek do µF i mH



        If = modelParams.Uflux / modelParams.Rfint;
        //Ia = (modelParams.Uarma - modelParams.Gaf * If * ω) / modelParams.Raint;
        //ω = (modelParams.Uarma - modelParams.Raint * Ia) / (modelParams.Gaf * If);

        //modelParams.Jrext = Jr_ext;
        modelParams.Drext = Dr_ext;

        //Text = modelParams.Drext * ω - modelParams.Gaf * If * Ia;

        //ustawianie parametrow momentu zewnetrznego
        modelParams.Textern    = Text;
        modelParams.Textern_t1 = Text_t1;
        modelParams.Textern_t2 = Text_t2;
        //----
        flag = false;

        //size = Convert.ToInt32(Tmax / delta); //liczenie ilości próbek ; modelParams.Tstop
        //modelParams.PtsResults = size;

        size = modelParams.PtsResults;
        //------------Sprawdzenie poprawności wprowadzania danych - walidacja-------------
        if (Tmin >= Tmax || Tmin < 0 || !bVal1 || !bVal2)
        {
            validation.Visible         = true;
            labErrorMessage_Tm.Visible = true;
            labErrorMessage_Tm.Text    = "Wartości parametrów t<sub>min</sub> oraz t<sub>max</sub> zostały wprowadzone błędnie ";
            txtTmin.BackColor          = System.Drawing.Color.Red;
            txtTmax.BackColor          = System.Drawing.Color.Red;
            flag = true;
        }

        /* Sprawdzenie poprawności napięć*/

        if (!bVal4 || Ua < 0)
        {
            validation.Visible = true;
            labErrorMessage_Voltage.Visible = true;
            labErrorMessage_Voltage.Text    = "Błędnie wprowadzona wartość napięcia twornika";
            txtUt_m.BackColor = System.Drawing.Color.Red;
            flag = true;
        }

        /*pętla*/

        if (flag == true)
        {
            return;
        }
        else
        {
            labErrorMessage.Visible = true;
            labErrorMessage.Text    = "Dane zostały wprowadzone poprawnie";
            Chart1.Visible          = true;
        }

        this.mathModel = new MathModel(modelParams, modelParams.TimeStart, modelParams.InitCondit);
        this.solver    = new Solver(modelParams, mathModel);
        //---
        solver.SolverStart(modelParams);
        double[,] wyniki = solver.Results;

        //-- pierwsza tabela danych do wykresu 1

        table1 = new DataTable();
        //--
        DataColumn column1;
        DataRow    row1;

        //--
        column1            = new DataColumn();
        column1.DataType   = Type.GetType("System.Double");
        column1.ColumnName = "Torque";
        table1.Columns.Add(column1);

        column1            = new DataColumn();
        column1.DataType   = Type.GetType("System.Double");
        column1.ColumnName = "ω";
        table1.Columns.Add(column1);

        column1            = new DataColumn();
        column1.DataType   = Type.GetType("System.Double");
        column1.ColumnName = "ω przy Uan";
        table1.Columns.Add(column1);

        //----------------
        //int size_tmin = Convert.ToInt32(Tmin / delta);
        //labErrorMessage.Text = "jest to ilosc " + (int)size;

        double[,] array;

        for (int i = Tmin; i <= Tmax; i++)
        {
            array              = new double[Tmax + 1, 3];
            array[i, 0]        = i;
            array[i, 1]        = ((modelParams.Uarma / modelParams.Gaf * If) - (modelParams.Raint / Math.Pow(modelParams.Gaf * If, 2)) * i) * 10;
            array[i, 2]        = ((Ua / modelParams.Gaf * If) - (modelParams.Raint / Math.Pow(modelParams.Gaf * If, 2)) * i) * 10;
            row1               = table1.NewRow();
            row1["Torque"]     = array[i, 0];
            row1["ω"]          = array[i, 1];
            row1["ω przy Uan"] = array[i, 2];



            table1.Rows.Add(row1);
        }
        //--
        dView1 = new DataView(table1);
        //--
        Chart1.Series.Clear();
        Chart1.ChartAreas.Add("Wykres01");
        //--
        Chart1.DataBindTable(dView1, "Torque");
        Chart1.Width  = 900;
        Chart1.Height = 750;
        Chart1.Series["ω"].ChartType            = SeriesChartType.Line;
        Chart1.Series["ω"].BorderWidth          = 3; //grubosc wykresu
        Chart1.Series["ω przy Uan"].ChartType   = SeriesChartType.Line;
        Chart1.Series["ω przy Uan"].BorderWidth = 3; //grubosc wykresu


        //if (chkIcs.Checked)
        //{
        //    Chart1.Visible = true;
        //    Chart1.Series["Ics"].ChartType = SeriesChartType.Line;
        //    Chart1.Series["Ics"].BorderWidth = 3;//grubosc wykresu
        //}
        //Chart1.ChartAreas[0].AxisX.LineWidth = 2;
        Chart1.ChartAreas[0].AxisX.Minimum = 0;
        //Chart1.ChartAreas[0].AxisX.Maximum = (double)table1.Rows[size]["Torque"];
        //Chart1.ChartAreas[0].AxisY.Minimum = 0.0;
        Chart1.ChartAreas[0].AxisY.ArrowStyle = AxisArrowStyle.Lines;//strzałki wykresu
        //Chart1.ChartAreas[0].AxisX.ArrowStyle = AxisArrowStyle.Lines;
        Chart1.ChartAreas[0].AxisX.LabelStyle.Format = "{#0.###}";
        Chart1.ChartAreas[0].AxisX.Title             = "Text [Nm]";
        Chart1.ChartAreas[0].AxisY.Title             = "ω [rad/s]";
        Chart1.ChartAreas[0].AxisX.TitleFont         = new System.Drawing.Font("Calibri", 11F, System.Drawing.FontStyle.Bold);
        Chart1.ChartAreas[0].AxisY.TitleFont         = new System.Drawing.Font("Calibri", 11F, System.Drawing.FontStyle.Bold);
    }
Esempio n. 28
0
        public bool Save()
        {
            bool result;

            try
            {
                var unitModelParams = ModelParams.Write(new PacketStream()).GetBytes();

                var slots = new PacketStream();
                foreach (var slot in Slots)
                {
                    slots.Write((byte)slot.Type);
                    if (slot.Type != ActionSlotType.None)
                    {
                        slots.Write(slot.ActionId);
                    }
                }

                using (var connection = MySQL.CreateConnection())
                {
                    using (var transaction = connection.BeginTransaction())
                    {
                        using (var command = connection.CreateCommand())
                        {
                            command.Connection  = connection;
                            command.Transaction = transaction;

                            // ----
                            command.CommandText =
                                "REPLACE INTO `characters` " +
                                "(`id`,`account_id`,`name`,`race`,`gender`,`unit_model_params`,`level`,`expirience`,`recoverable_exp`,`hp`,`mp`,`labor_power`,`labor_power_modified`,`consumed_lp`,`ability1`,`ability2`,`ability3`,`zone_id`,`x`,`y`,`z`,`rotation_x`,`rotation_y`,`rotation_z`,`faction_id`,`faction_name`,`family`,`dead_count`,`dead_time`,`rez_wait_duration`,`rez_time`,`rez_penalty_duration`,`leave_time`,`money`,`money2`,`crime_point`,`crime_record`,`delete_request_time`,`transfer_request_time`,`delete_time`,`bm_point`,`auto_use_aapoint`,`prev_point`,`point`,`gift`,`num_inv_slot`,`num_bank_slot`,`slots`,`updated_at`) " +
                                "VALUES(@id,@account_id,@name,@race,@gender,@unit_model_params,@level,@expirience,@recoverable_exp,@hp,@mp,@labor_power,@labor_power_modified,@consumed_lp,@ability1,@ability2,@ability3,@zone_id,@x,@y,@z,@rotation_x,@rotation_y,@rotation_z,@faction_id,@faction_name,@family,@dead_count,@dead_time,@rez_wait_duration,@rez_time,@rez_penalty_duration,@leave_time,@money,@money2,@crime_point,@crime_record,@delete_request_time,@transfer_request_time,@delete_time,@bm_point,@auto_use_aapoint,@prev_point,@point,@gift,@num_inv_slot,@num_bank_slot,@slots,@updated_at)";

                            command.Parameters.AddWithValue("@id", Id);
                            command.Parameters.AddWithValue("@account_id", AccountId);
                            command.Parameters.AddWithValue("@name", Name);
                            command.Parameters.AddWithValue("@race", (byte)Race);
                            command.Parameters.AddWithValue("@gender", (byte)Gender);
                            command.Parameters.AddWithValue("@unit_model_params", unitModelParams);
                            command.Parameters.AddWithValue("@level", Level);
                            command.Parameters.AddWithValue("@expirience", Expirience);
                            command.Parameters.AddWithValue("@recoverable_exp", RecoverableExp);
                            command.Parameters.AddWithValue("@hp", Hp);
                            command.Parameters.AddWithValue("@mp", Mp);
                            command.Parameters.AddWithValue("@labor_power", LaborPower);
                            command.Parameters.AddWithValue("@labor_power_modified", LaborPowerModified);
                            command.Parameters.AddWithValue("@consumed_lp", ConsumedLaborPower);
                            command.Parameters.AddWithValue("@ability1", (byte)Ability1);
                            command.Parameters.AddWithValue("@ability2", (byte)Ability2);
                            command.Parameters.AddWithValue("@ability3", (byte)Ability3);
                            command.Parameters.AddWithValue("@zone_id", Position.ZoneId);
                            command.Parameters.AddWithValue("@x", Position.X);
                            command.Parameters.AddWithValue("@y", Position.Y);
                            command.Parameters.AddWithValue("@z", Position.Z);
                            command.Parameters.AddWithValue("@rotation_x", Position.RotationX);
                            command.Parameters.AddWithValue("@rotation_y", Position.RotationY);
                            command.Parameters.AddWithValue("@rotation_z", Position.RotationZ);
                            command.Parameters.AddWithValue("@faction_id", Faction.Id);
                            command.Parameters.AddWithValue("@faction_name", FactionName);
                            command.Parameters.AddWithValue("@family", Family);
                            command.Parameters.AddWithValue("@dead_count", DeadCount);
                            command.Parameters.AddWithValue("@dead_time", DeadTime);
                            command.Parameters.AddWithValue("@rez_wait_duration", RezWaitDuration);
                            command.Parameters.AddWithValue("@rez_time", RezTime);
                            command.Parameters.AddWithValue("@rez_penalty_duration", RezPenaltyDuration);
                            command.Parameters.AddWithValue("@leave_time", LeaveTime);
                            command.Parameters.AddWithValue("@money", Money);
                            command.Parameters.AddWithValue("@money2", Money2);
                            command.Parameters.AddWithValue("@crime_point", CrimePoint);
                            command.Parameters.AddWithValue("@crime_record", CrimeRecord);
                            command.Parameters.AddWithValue("@delete_request_time", DeleteRequestTime);
                            command.Parameters.AddWithValue("@transfer_request_time", TransferRequestTime);
                            command.Parameters.AddWithValue("@delete_time", DeleteTime);
                            command.Parameters.AddWithValue("@bm_point", BmPoint);
                            command.Parameters.AddWithValue("@auto_use_aapoint", AutoUseAAPoint);
                            command.Parameters.AddWithValue("@prev_point", PrevPoint);
                            command.Parameters.AddWithValue("@point", Point);
                            command.Parameters.AddWithValue("@gift", Gift);
                            command.Parameters.AddWithValue("@num_inv_slot", NumInventorySlots);
                            command.Parameters.AddWithValue("@num_bank_slot", NumBankSlots);
                            command.Parameters.AddWithValue("@slots", slots.GetBytes());
                            command.Parameters.AddWithValue("@updated_at", Updated);
                            command.ExecuteNonQuery();
                        }

                        using (var command = connection.CreateCommand())
                        {
                            command.Connection  = connection;
                            command.Transaction = transaction;

                            foreach (var pair in _options)
                            {
                                command.CommandText =
                                    "REPLACE INTO `options` (`key`,`value`,`owner`) VALUES (@key,@value,@owner)";
                                command.Parameters.AddWithValue("@key", pair.Key);
                                command.Parameters.AddWithValue("@value", pair.Value);
                                command.Parameters.AddWithValue("@owner", Id);
                                command.ExecuteNonQuery();
                                command.Parameters.Clear();
                            }
                        }

                        Inventory.Save(connection, transaction);
                        Abilities.Save(connection, transaction);
                        Appellations.Save(connection, transaction);
                        Skills.Save(connection, transaction);
                        Quests.Save(connection, transaction);

                        try
                        {
                            transaction.Commit();
                            result = true;
                        }
                        catch (Exception ex)
                        {
                            _log.Error(ex);

                            try
                            {
                                transaction.Rollback();
                            }
                            catch (Exception ex2)
                            {
                                _log.Error(ex2);
                            }

                            result = false;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                _log.Error(ex);
                result = false;
            }

            return(result);
        }
        public ActionResult DrawWaveforms(Parameters param)
        {
            //solver results
            //0   |1  |2  |3  |4  |5  |6  |7    |8   |9  |10 |11 |12 |13 |14 |15  |16
            //time|Isu|Isv|Isw|Iru|Irv|Irw|Omega|Alfa|Usu|Usv|Usw|Uru|Urv|Urv|Text|Telem
            //-------

            DataTable  dTableIU;
            DataTable  dTableOmegaTorque;
            DataView   dViewIU;
            DataView   dViewOmegaTorque;
            DataColumn column;
            DataRow    row;



            ModelParams modelParams = new ModelParams();

            parametersPassing(param, modelParams);

            MathModel mathModel = new MathModel(modelParams, modelParams.TimeStart, modelParams.InitCondit);
            Solver    solver    = new Solver(modelParams, mathModel);



            solver.SolverStart(modelParams);

            //currents and voltages chart
            dTableIU          = new DataTable();
            column            = new DataColumn();
            column.DataType   = Type.GetType("System.Double");
            column.ColumnName = "Time";
            dTableIU.Columns.Add(column);
            //______________________
            column            = new DataColumn();
            column.DataType   = Type.GetType("System.Double");
            column.ColumnName = "Iu";
            dTableIU.Columns.Add(column);
            //_______________________
            column            = new DataColumn();
            column.DataType   = Type.GetType("System.Double");
            column.ColumnName = "Iv";
            dTableIU.Columns.Add(column);
            //_______________________
            column            = new DataColumn();
            column.DataType   = Type.GetType("System.Double");
            column.ColumnName = "Iw";
            dTableIU.Columns.Add(column);
            //________________________
            column            = new DataColumn();
            column.DataType   = Type.GetType("System.Double");
            column.ColumnName = "Uuv";
            dTableIU.Columns.Add(column);
            // Adding rows

            double Ki = 1; // or Math.Sqrt(3)
            double Ku = 1; // or 0.25

            for (int i = 0; i < modelParams.PtsResults; i++)
            {
                row         = dTableIU.NewRow();
                row["Time"] = solver.Results[i, 0];
                row["Iu"]   = solver.Results[i, 1] * Ki;
                row["Iv"]   = solver.Results[i, 2] * Ki;
                row["Iw"]   = solver.Results[i, 3] * Ki;
                row["Uuv"]  = solver.Results[i, 9] * Ku;
                dTableIU.Rows.Add(row);
            }
            dViewIU = new DataView(dTableIU);

            Chart chartIU = new Chart();

            chartIU.Width  = 1050;
            chartIU.Height = 700;

            chartIU.Series.Clear();
            chartIU.Titles.Clear();
            chartIU.Titles.Add("Currents and voltages waveforms");

            chartIU.DataBindTable(dViewIU, "Time");
            chartIU.ChartAreas.Add(new ChartArea("Current"));
            chartIU.ChartAreas.Add(new ChartArea("Voltage"));
            chartIU.ChartAreas["Voltage"].AxisY.Title = "Uuv[V]";
            chartIU.ChartAreas["Current"].AxisY.Title = "Stator currents [A]";
            chartIU.Series["Uuv"].ChartType           = SeriesChartType.Line;
            chartIU.Series["Iu"].ChartType            = System.Web.UI.DataVisualization.Charting.SeriesChartType.Line;
            chartIU.Series["Iv"].ChartType            = System.Web.UI.DataVisualization.Charting.SeriesChartType.Line;
            chartIU.Series["Iw"].ChartType            = System.Web.UI.DataVisualization.Charting.SeriesChartType.Line;
            chartIU.Series["Uuv"].ChartArea           = "Voltage";
            chartIU.Series["Iu"].ChartArea            = "Current";
            chartIU.Series["Iv"].ChartArea            = "Current";
            chartIU.Series["Iw"].ChartArea            = "Current";
            chartIU.ChartAreas[0].AxisX.Minimum       = 0;
            chartIU.ChartAreas[1].AxisX.Minimum       = 0;

            //________________________________________________________________________________________________

            chartIU.Titles[0].Font = new System.Drawing.Font(
                "Times New Roman", 16F, System.Drawing.FontStyle.Bold);
            chartIU.Titles[0].ForeColor = System.Drawing.Color.FromArgb(250, 0, 0);
            //***********************************************************

            //Speed and torque
            dTableOmegaTorque = new DataTable();
            column            = new DataColumn();
            column.DataType   = Type.GetType("System.Double");
            column.ColumnName = "Time";
            dTableOmegaTorque.Columns.Add(column);
            //___________________________
            column            = new DataColumn();
            column.DataType   = Type.GetType("System.Double");
            column.ColumnName = "Omega";
            dTableOmegaTorque.Columns.Add(column);
            //___________________________
            column            = new DataColumn();
            column.DataType   = Type.GetType("System.Double");
            column.ColumnName = "Torque";
            dTableOmegaTorque.Columns.Add(column);
            //___________________________
            double Kt = 2;

            //adding rows
            for (int i = 0; i < modelParams.PtsResults; i++)
            {
                row           = dTableOmegaTorque.NewRow();
                row["Time"]   = solver.Results[i, 0];
                row["Omega"]  = solver.Results[i, 7];
                row["Torque"] = solver.Results[i, 16] * Kt;
                dTableOmegaTorque.Rows.Add(row);
            }

            dViewOmegaTorque = new DataView(dTableOmegaTorque);

            Chart chartOmegaTorque = new Chart();

            chartOmegaTorque.Width  = 1050;
            chartOmegaTorque.Height = 700;

            dViewOmegaTorque = new DataView(dTableOmegaTorque);

            chartOmegaTorque.ChartAreas.Add("Waveforms");
            chartOmegaTorque.DataBindTable(dViewOmegaTorque, "Time");
            chartOmegaTorque.Series["Omega"].ChartType                       = System.Web.UI.DataVisualization.Charting.SeriesChartType.Line;
            chartOmegaTorque.Series["Torque"].ChartType                      = System.Web.UI.DataVisualization.Charting.SeriesChartType.Line;
            chartOmegaTorque.ChartAreas["Waveforms"].AxisX.Minimum           = 0.0;
            chartOmegaTorque.ChartAreas["Waveforms"].AxisX.Maximum           = (double)solver.Results[modelParams.PtsResults - 1, 0];
            chartOmegaTorque.ChartAreas["Waveforms"].AxisX.LabelStyle.Format = "{#0.000}";
            chartOmegaTorque.Width  = 1050;
            chartOmegaTorque.Height = 400;

            // Legend and title
            chartOmegaTorque.ChartAreas["Waveforms"].AxisY.Title = "Omega and Torque";
            chartOmegaTorque.Legends.Add(new Legend("Legend"));
            chartOmegaTorque.Legends["Legend"].DockedToChartArea = "Waveforms";
            chartOmegaTorque.Series["Omega"].Legend            = "Legend";
            chartOmegaTorque.Series["Omega"].IsVisibleInLegend = true;
            chartOmegaTorque.Series["Omega"].LegendText        = "Omega [rad/s]";
            chartOmegaTorque.Series["Torque"].LegendText       = "Torque*2 [Nm]";
            chartOmegaTorque.Legends["Legend"].Alignment       = StringAlignment.Center;



            // ------------- Creating chart list ------------

            var chartList = new List <Chart> {
                chartIU, chartOmegaTorque
            };
            var imageList = ChartsToImages(chartList);

            // ----- Final size of image and bonding charts into one .bmp file
            var size = new Size();

            foreach (var image in imageList)
            {
                if (image.Width > size.Width)
                {
                    size.Width = image.Width;
                }
                size.Height += image.Height;
            }
            var finalImage = new Bitmap(size.Width, size.Height);

            using (var gfx = Graphics.FromImage(finalImage))
            {
                var y = 0;
                foreach (var image in imageList)
                {
                    gfx.DrawImage(image, 0, y);
                    y += image.Height;
                }
            }
            MemoryStream finalms = new MemoryStream();

            finalImage.Save(finalms, System.Drawing.Imaging.ImageFormat.Png);
            for (int i = 0; i < 8; i++)
            {
                modelParams.InitCondit[i] = 0;
            }

            return(File(finalms.GetBuffer(), "image/png"));
        }
Esempio n. 30
0
        public ActionResult Index(string[] textAreaSQL)
        {
            LecturaDatosController.Leer(textAreaSQL);

            List <BaseDatos> pBDS = new List <BaseDatos>();

            pBDS.Add(new BaseDatos {
                Nombre = "Base1", Tables = new List <Tablas>()
            });
            pBDS.Add(new BaseDatos {
                Nombre = "Base2", Tables = new List <Tablas>()
            });
            pBDS.Add(new BaseDatos {
                Nombre = "Base3", Tables = new List <Tablas>()
            });
            pBDS.Add(new BaseDatos {
                Nombre = "Base4", Tables = new List <Tablas>()
            });
            pBDS.Add(new BaseDatos {
                Nombre = "Base5", Tables = new List <Tablas>()
            });



            List <Tablas> tablasBD1 = new List <Tablas>();

            string          NombreTabla    = Tabla.nombretablas[0];
            List <Columnas> ColumnasTabla1 = new List <Columnas>();
            Tabla           tabla          = new Tabla();
            List <Tabla>    elementoTabla  = new List <Tabla>();

            if (Tabla.DiccionarioTabla[NombreTabla] != null)
            {
                tablasBD1.Add(new Tablas {
                    table = Tabla.nombretablas[0], columnas = new List <Columnas>()
                });
                for (int i = 0; i < Tabla.ResultadoVistas.Count(); i++)
                {
                    elementoTabla = Tabla.DiccionarioTabla[NombreTabla];
                    tabla         = elementoTabla[i];
                    ColumnasTabla1.Add(new Columnas
                    {
                        tabla     = tabla.nombre,
                        Id        = tabla.id,
                        Int1      = tabla.int1,
                        Int2      = tabla.int2,
                        Int3      = tabla.int3,
                        Varchar1  = tabla.varchar1,
                        Varchar2  = tabla.varchar2,
                        Varchar3  = tabla.varchar3,
                        DateTime1 = tabla.dateTime1,
                        DateTime2 = tabla.dateTime2,
                        DateTime3 = tabla.dateTime3
                    });
                }
            }



            //ColumnasTabla1.Add(new Columnas { Columna = tab, Tipo = Tabla.nombretablas[0] });

            tablasBD1[0].columnas = ColumnasTabla1;

            pBDS[0].Tables = tablasBD1;

            List <Tablas> tablasBD2 = new List <Tablas>();

            if (Tabla.nombretablas[1] != null)
            {
                NombreTabla = Tabla.nombretablas[1];
                List <Columnas> ColumnasTabla2 = new List <Columnas>();
                if (Tabla.DiccionarioTabla[NombreTabla] != null)
                {
                    tablasBD2.Add(new Tablas {
                        table = Tabla.nombretablas[1], columnas = new List <Columnas>()
                    });
                    for (int i = 0; i < Tabla.ResultadoVistas.Count(); i++)
                    {
                        elementoTabla = Tabla.DiccionarioTabla[NombreTabla];
                        tabla         = elementoTabla[i];
                        ColumnasTabla2.Add(new Columnas
                        {
                            tabla     = tabla.nombre,
                            Id        = tabla.id,
                            Int1      = tabla.int1,
                            Int2      = tabla.int2,
                            Int3      = tabla.int3,
                            Varchar1  = tabla.varchar1,
                            Varchar2  = tabla.varchar2,
                            Varchar3  = tabla.varchar3,
                            DateTime1 = tabla.dateTime1,
                            DateTime2 = tabla.dateTime2,
                            DateTime3 = tabla.dateTime3
                        });
                    }
                }
                tablasBD2[0].columnas = ColumnasTabla2;

                pBDS[1].Tables = tablasBD2;
            }



            List <Tablas> tablasBD3 = new List <Tablas>();

            if (Tabla.nombretablas[2] != null)
            {
                NombreTabla = Tabla.nombretablas[2];
                List <Columnas> ColumnasTabla3 = new List <Columnas>();
                if (Tabla.DiccionarioTabla[NombreTabla] != null)
                {
                    tablasBD3.Add(new Tablas {
                        table = Tabla.nombretablas[2], columnas = new List <Columnas>()
                    });
                    for (int i = 0; i < Tabla.ResultadoVistas.Count(); i++)
                    {
                        elementoTabla = Tabla.DiccionarioTabla[NombreTabla];
                        tabla         = elementoTabla[i];
                        ColumnasTabla3.Add(new Columnas
                        {
                            tabla     = tabla.nombre,
                            Id        = tabla.id,
                            Int1      = tabla.int1,
                            Int2      = tabla.int2,
                            Int3      = tabla.int3,
                            Varchar1  = tabla.varchar1,
                            Varchar2  = tabla.varchar2,
                            Varchar3  = tabla.varchar3,
                            DateTime1 = tabla.dateTime1,
                            DateTime2 = tabla.dateTime2,
                            DateTime3 = tabla.dateTime3
                        });
                    }
                }
                tablasBD3[0].columnas = ColumnasTabla3;

                pBDS[2].Tables = tablasBD3;
            }


            List <Tablas> tablasBD4 = new List <Tablas>();

            if (Tabla.nombretablas[3] != null)
            {
                NombreTabla = Tabla.nombretablas[3];
                List <Columnas> ColumnasTabla4 = new List <Columnas>();
                if (Tabla.DiccionarioTabla[NombreTabla] != null)
                {
                    tablasBD4.Add(new Tablas {
                        table = Tabla.nombretablas[3], columnas = new List <Columnas>()
                    });
                    for (int i = 0; i < Tabla.ResultadoVistas.Count(); i++)
                    {
                        elementoTabla = Tabla.DiccionarioTabla[NombreTabla];
                        tabla         = elementoTabla[i];
                        ColumnasTabla4.Add(new Columnas
                        {
                            tabla     = tabla.nombre,
                            Id        = tabla.id,
                            Int1      = tabla.int1,
                            Int2      = tabla.int2,
                            Int3      = tabla.int3,
                            Varchar1  = tabla.varchar1,
                            Varchar2  = tabla.varchar2,
                            Varchar3  = tabla.varchar3,
                            DateTime1 = tabla.dateTime1,
                            DateTime2 = tabla.dateTime2,
                            DateTime3 = tabla.dateTime3
                        });
                    }
                }
                tablasBD4[0].columnas = ColumnasTabla4;

                pBDS[3].Tables = tablasBD4;
            }



            List <Tablas> tablasBD5 = new List <Tablas>();

            if (Tabla.nombretablas[4] != null)
            {
                NombreTabla = Tabla.nombretablas[4];
                List <Columnas> ColumnasTabla5 = new List <Columnas>();
                if (Tabla.DiccionarioTabla[NombreTabla] != null)
                {
                    tablasBD5.Add(new Tablas {
                        table = Tabla.nombretablas[4], columnas = new List <Columnas>()
                    });
                    for (int i = 0; i < Tabla.ResultadoVistas.Count(); i++)
                    {
                        elementoTabla = Tabla.DiccionarioTabla[NombreTabla];
                        tabla         = elementoTabla[i];
                        ColumnasTabla5.Add(new Columnas
                        {
                            tabla     = tabla.nombre,
                            Id        = tabla.id,
                            Int1      = tabla.int1,
                            Int2      = tabla.int2,
                            Int3      = tabla.int3,
                            Varchar1  = tabla.varchar1,
                            Varchar2  = tabla.varchar2,
                            Varchar3  = tabla.varchar3,
                            DateTime1 = tabla.dateTime1,
                            DateTime2 = tabla.dateTime2,
                            DateTime3 = tabla.dateTime3
                        });
                    }
                }
                tablasBD5[0].columnas = ColumnasTabla5;

                pBDS[4].Tables = tablasBD5;
            }



            List <ResultadoGrid> lstResultado = new List <ResultadoGrid>();

            List <ColumnasResult> Columnas = new List <ColumnasResult>();

            if (Tabla.ResultadoVistas.Count() != 0)
            {
                Columnas.Add(new ColumnasResult {
                    Columna = Tabla.ResultadoVistas[0].nombre
                });
                Columnas.Add(new ColumnasResult {
                    Columna = Tabla.ResultadoVistas[0].id
                });
                Columnas.Add(new ColumnasResult {
                    Columna = Tabla.ResultadoVistas[0].int1
                });
                Columnas.Add(new ColumnasResult {
                    Columna = Tabla.ResultadoVistas[0].int2
                });
                Columnas.Add(new ColumnasResult {
                    Columna = Tabla.ResultadoVistas[0].int3
                });
                Columnas.Add(new ColumnasResult {
                    Columna = Tabla.ResultadoVistas[0].varchar1
                });
                Columnas.Add(new ColumnasResult {
                    Columna = Tabla.ResultadoVistas[0].varchar2
                });
                Columnas.Add(new ColumnasResult {
                    Columna = Tabla.ResultadoVistas[0].varchar3
                });
                Columnas.Add(new ColumnasResult {
                    Columna = Tabla.ResultadoVistas[0].dateTime1
                });
                Columnas.Add(new ColumnasResult {
                    Columna = Tabla.ResultadoVistas[0].dateTime2
                });
                Columnas.Add(new ColumnasResult {
                    Columna = Tabla.ResultadoVistas[0].dateTime3
                });


                DataTable Resultado = new DataTable();

                foreach (ColumnasResult col in Columnas)
                {
                    Resultado.Columns.Add(col.Columna);
                }

                DataRow DR      = Resultado.NewRow();
                DataRow dataRow = Resultado.NewRow();
                DataRow data    = Resultado.NewRow();
                DataRow row     = Resultado.NewRow();
                Resultado.Rows.Clear();
                int cantidadFilas = 0;
                for (int i = 1; i < Tabla.ResultadoVistas.Count(); i++)
                {
                    if (cantidadFilas == 0)
                    {
                        if (Tabla.ResultadoVistas[0].nombre != null)
                        {
                            DR[Tabla.ResultadoVistas[0].nombre] = Tabla.ResultadoVistas[i].nombre;
                        }
                        if (Tabla.ResultadoVistas[0].id != null)
                        {
                            DR[Tabla.ResultadoVistas[0].id] = Tabla.ResultadoVistas[i].id;
                        }
                        if (Tabla.ResultadoVistas[0].int1 != null)
                        {
                            DR[Tabla.ResultadoVistas[0].int1] = Tabla.ResultadoVistas[i].int1;
                        }
                        if (Tabla.ResultadoVistas[0].int2 != null)
                        {
                            DR[Tabla.ResultadoVistas[0].int2] = Tabla.ResultadoVistas[i].int2;
                        }
                        if (Tabla.ResultadoVistas[0].int3 != null)
                        {
                            DR[Tabla.ResultadoVistas[0].int3] = Tabla.ResultadoVistas[i].int3;
                        }
                        if (Tabla.ResultadoVistas[0].varchar1 != null)
                        {
                            DR[Tabla.ResultadoVistas[0].varchar1] = Tabla.ResultadoVistas[i].varchar1;
                        }
                        if (Tabla.ResultadoVistas[0].varchar2 != null)
                        {
                            DR[Tabla.ResultadoVistas[0].varchar2] = Tabla.ResultadoVistas[i].varchar2;
                        }
                        if (Tabla.ResultadoVistas[0].varchar3 != null)
                        {
                            DR[Tabla.ResultadoVistas[0].varchar3] = Tabla.ResultadoVistas[i].varchar3;
                        }
                        if (Tabla.ResultadoVistas[0].dateTime1 != null)
                        {
                            DR[Tabla.ResultadoVistas[0].dateTime1] = Tabla.ResultadoVistas[i].dateTime1;
                        }
                        if (Tabla.ResultadoVistas[0].dateTime2 != null)
                        {
                            DR[Tabla.ResultadoVistas[0].dateTime2] = Tabla.ResultadoVistas[i].dateTime2;
                        }
                        if (Tabla.ResultadoVistas[0].dateTime3 != null)
                        {
                            DR[Tabla.ResultadoVistas[0].dateTime3] = Tabla.ResultadoVistas[i].dateTime3;
                        }
                        Resultado.Rows.Add(DR);
                        cantidadFilas++;
                    }
                    else if (cantidadFilas == 1)
                    {
                        if (Tabla.ResultadoVistas[0].nombre != null)
                        {
                            dataRow[Tabla.ResultadoVistas[0].nombre] = Tabla.ResultadoVistas[i].nombre;
                        }
                        if (Tabla.ResultadoVistas[0].id != null)
                        {
                            dataRow[Tabla.ResultadoVistas[0].id] = Tabla.ResultadoVistas[i].id;
                        }
                        if (Tabla.ResultadoVistas[0].int1 != null)
                        {
                            dataRow[Tabla.ResultadoVistas[0].int1] = Tabla.ResultadoVistas[i].int1;
                        }
                        if (Tabla.ResultadoVistas[0].int2 != null)
                        {
                            dataRow[Tabla.ResultadoVistas[0].int2] = Tabla.ResultadoVistas[i].int2;
                        }
                        if (Tabla.ResultadoVistas[0].int3 != null)
                        {
                            dataRow[Tabla.ResultadoVistas[0].int3] = Tabla.ResultadoVistas[i].int3;
                        }
                        if (Tabla.ResultadoVistas[0].varchar1 != null)
                        {
                            dataRow[Tabla.ResultadoVistas[0].varchar1] = Tabla.ResultadoVistas[i].varchar1;
                        }
                        if (Tabla.ResultadoVistas[0].varchar2 != null)
                        {
                            dataRow[Tabla.ResultadoVistas[0].varchar2] = Tabla.ResultadoVistas[i].varchar2;
                        }
                        if (Tabla.ResultadoVistas[0].varchar3 != null)
                        {
                            dataRow[Tabla.ResultadoVistas[0].varchar3] = Tabla.ResultadoVistas[i].varchar3;
                        }
                        if (Tabla.ResultadoVistas[0].dateTime1 != null)
                        {
                            dataRow[Tabla.ResultadoVistas[0].dateTime1] = Tabla.ResultadoVistas[i].dateTime1;
                        }
                        if (Tabla.ResultadoVistas[0].dateTime2 != null)
                        {
                            dataRow[Tabla.ResultadoVistas[0].dateTime2] = Tabla.ResultadoVistas[i].dateTime2;
                        }
                        if (Tabla.ResultadoVistas[0].dateTime3 != null)
                        {
                            dataRow[Tabla.ResultadoVistas[0].dateTime3] = Tabla.ResultadoVistas[i].dateTime3;
                        }
                        Resultado.Rows.Add(dataRow);
                        cantidadFilas++;
                    }
                    else if (cantidadFilas == 2)
                    {
                        if (Tabla.ResultadoVistas[0].nombre != null)
                        {
                            data[Tabla.ResultadoVistas[0].nombre] = Tabla.ResultadoVistas[i].nombre;
                        }
                        if (Tabla.ResultadoVistas[0].id != null)
                        {
                            data[Tabla.ResultadoVistas[0].id] = Tabla.ResultadoVistas[i].id;
                        }
                        if (Tabla.ResultadoVistas[0].int1 != null)
                        {
                            data[Tabla.ResultadoVistas[0].int1] = Tabla.ResultadoVistas[i].int1;
                        }
                        if (Tabla.ResultadoVistas[0].int2 != null)
                        {
                            data[Tabla.ResultadoVistas[0].int2] = Tabla.ResultadoVistas[i].int2;
                        }
                        if (Tabla.ResultadoVistas[0].int3 != null)
                        {
                            data[Tabla.ResultadoVistas[0].int3] = Tabla.ResultadoVistas[i].int3;
                        }
                        if (Tabla.ResultadoVistas[0].varchar1 != null)
                        {
                            data[Tabla.ResultadoVistas[0].varchar1] = Tabla.ResultadoVistas[i].varchar1;
                        }
                        if (Tabla.ResultadoVistas[0].varchar2 != null)
                        {
                            data[Tabla.ResultadoVistas[0].varchar2] = Tabla.ResultadoVistas[i].varchar2;
                        }
                        if (Tabla.ResultadoVistas[0].varchar3 != null)
                        {
                            data[Tabla.ResultadoVistas[0].varchar3] = Tabla.ResultadoVistas[i].varchar3;
                        }
                        if (Tabla.ResultadoVistas[0].dateTime1 != null)
                        {
                            data[Tabla.ResultadoVistas[0].dateTime1] = Tabla.ResultadoVistas[i].dateTime1;
                        }
                        if (Tabla.ResultadoVistas[0].dateTime2 != null)
                        {
                            data[Tabla.ResultadoVistas[0].dateTime2] = Tabla.ResultadoVistas[i].dateTime2;
                        }
                        if (Tabla.ResultadoVistas[0].dateTime3 != null)
                        {
                            data[Tabla.ResultadoVistas[0].dateTime3] = Tabla.ResultadoVistas[i].dateTime3;
                        }
                        Resultado.Rows.Add(data);
                        cantidadFilas++;
                    }
                    else if (cantidadFilas == 3)
                    {
                        if (Tabla.ResultadoVistas[0].nombre != null)
                        {
                            row[Tabla.ResultadoVistas[0].nombre] = Tabla.ResultadoVistas[i].nombre;
                        }
                        if (Tabla.ResultadoVistas[0].id != null)
                        {
                            row[Tabla.ResultadoVistas[0].id] = Tabla.ResultadoVistas[i].id;
                        }
                        if (Tabla.ResultadoVistas[0].int1 != null)
                        {
                            row[Tabla.ResultadoVistas[0].int1] = Tabla.ResultadoVistas[i].int1;
                        }
                        if (Tabla.ResultadoVistas[0].int2 != null)
                        {
                            row[Tabla.ResultadoVistas[0].int2] = Tabla.ResultadoVistas[i].int2;
                        }
                        if (Tabla.ResultadoVistas[0].int3 != null)
                        {
                            row[Tabla.ResultadoVistas[0].int3] = Tabla.ResultadoVistas[i].int3;
                        }
                        if (Tabla.ResultadoVistas[0].varchar1 != null)
                        {
                            row[Tabla.ResultadoVistas[0].varchar1] = Tabla.ResultadoVistas[i].varchar1;
                        }
                        if (Tabla.ResultadoVistas[0].varchar2 != null)
                        {
                            row[Tabla.ResultadoVistas[0].varchar2] = Tabla.ResultadoVistas[i].varchar2;
                        }
                        if (Tabla.ResultadoVistas[0].varchar3 != null)
                        {
                            row[Tabla.ResultadoVistas[0].varchar3] = Tabla.ResultadoVistas[i].varchar3;
                        }
                        if (Tabla.ResultadoVistas[0].dateTime1 != null)
                        {
                            row[Tabla.ResultadoVistas[0].dateTime1] = Tabla.ResultadoVistas[i].dateTime1;
                        }
                        if (Tabla.ResultadoVistas[0].dateTime2 != null)
                        {
                            row[Tabla.ResultadoVistas[0].dateTime2] = Tabla.ResultadoVistas[i].dateTime2;
                        }
                        if (Tabla.ResultadoVistas[0].dateTime3 != null)
                        {
                            row[Tabla.ResultadoVistas[0].dateTime3] = Tabla.ResultadoVistas[i].dateTime3;
                        }
                        Resultado.Rows.Add(row);
                        cantidadFilas++;
                    }
                }


                lstResultado.Add(new ResultadoGrid {
                    Columnas = Columnas, Resultado = Resultado
                });
            }



            ModelParams md = new ModelParams {
                BDS = pBDS, Resultado = lstResultado
            };


            return(View(md));
        }