Example #1
0
        public void EliminarConfiguracion(XML_Config config)
        {
            try
            {
                //leemos nuevamente las configuraciones en un dataset, y agregamos
                DataSet ds = new DataSet();
                ds.ReadXml(this.filePath);

                DataTable dt = ds.Tables["configuracion"];

                //buscamos la configuracion a borrar
                DataRow dr = null;
                foreach (DataRow row in dt.Rows)
                {
                    if (Convert.ToInt32(row["Id"]) == config.Id)
                    {
                        dr = row;
                        break;
                    }
                }
                //si la encontramos, la borramos y grabamos los cambios
                if (dr != null)
                {
                    dt.Rows.Remove(dr);

                    ds.WriteXml(this.filePath);
                }
            }
            catch (Exception ex)
            {
                throw (ex);
            }
        }
Example #2
0
        public bool PerteneceAreaTrabajo(XML_Config config)
        {
            //por defecto estimamos que la figura estara dentro
            bool resultado = true;

            //ANALIZAMOS LA UBICACION DEL PUNTO
            if (this.Ubicacion.X > config.MaxX || this.Ubicacion.X < 0)
            {
                return false;
            }
            if (this.Ubicacion.Y > config.MaxY || this.Ubicacion.Y < 0)
            {
                return false;
            }
            //sacamos la validacion sobre Z para permitir los valores negativos
            //if (this.Ubicacion.Z > config.MaxZ || this.Ubicacion.Z < 0)
            //{
            //    return false;
            //}
            return resultado;
        }
Example #3
0
        public bool PerteneceAreaTrabajo(XML_Config config)
        {
            //por defecto estimamos que la figura estara dentro
            bool resultado = true;

            //ANALIZAMOS LOS PUNTOS DE INICIO Y FIN:
            if (this.puntoInicio.X > config.MaxX || this.puntoInicio.X < 0)
            {
                return false;
            }
            if (this.puntoInicio.Y > config.MaxY || this.puntoInicio.Y < 0)
            {
                return false;
            }

            //sacamos la validacion sobre Z para permitir los valores negativos
            //if (this.puntoInicio.Z > config.MaxZ || this.puntoInicio.Z < 0)
            //{
            //    return false;
            //}

            if (this.puntoFin.X > config.MaxX || this.puntoFin.X < 0)
            {
                return false;
            }
            if (this.puntoFin.Y > config.MaxY || this.puntoFin.Y < 0)
            {
                return false;
            }
            //if (this.puntoFin.Z > config.MaxZ || this.puntoFin.Z < 0)
            //{
            //    return false;
            //}

            //CASO 1 - CUADRANTE DEL INICIO = 1
            if (this.CuadranteInicio() == 1)
            {
                switch (this.CuadranteFin())
                {
                    case 1: //como los dos estan en el cuadrante 1
                        if (this.anguloInicio > this.anguloFin)
                        {
                            //hay que calcular todos los maximos y minimos
                            if (this.MaximoY > config.MaxY || this.MinimoY < 0 || this.MinimoX < 0 || this.MaximoX > config.MaxX)
                            {
                                return false;
                            } break;
                        } break;
                    case 2:
                        //hay que comparar con el maximo en y
                        if (this.MaximoY > config.MaxY)
                        {
                            return false;
                        } break;
                    case 3:
                        //hay que comparar con el maximo en y, minimo en X
                        if (this.MaximoY > config.MaxY || this.MinimoX < 0)
                        {
                            return false;
                        } break;
                    case 4:
                        //hay que comparar con el maximo y minimo en y, minimo en X
                        if (this.MaximoY > config.MaxY || this.MinimoY < 0 || this.MinimoX < 0)
                        {
                            return false;
                        } break;
                    default:
                        return false;
                }
            }

            //CASO 2 - CUADRANTE DEL INICIO = 2
            if (this.CuadranteInicio() == 2)
            {
                switch (this.CuadranteFin())
                {
                    case 1:
                        //hay que comparar con el maximo y minimo en x, maximo en X
                        if (this.MaximoX > config.MaxX || this.MinimoX < 0 || this.MaximoY > config.MaxY)
                        {
                            return false;
                        } break;
                    case 2://como los dos estan en el cuadrante 2
                        if (this.anguloInicio > this.anguloFin)
                        {
                            //hay que calcular todos los maximos y minimos
                            if (this.MaximoY > config.MaxY || this.MinimoY < 0 || this.MinimoX < 0 || this.MaximoX > config.MaxX)
                            {
                                return false;
                            } break;
                        } break;
                    case 3:
                        //hay que comparar con el minimo en X
                        if (this.MinimoX < 0)
                        {
                            return false;
                        } break;
                    case 4:
                        //hay que comparar con el minimo en y, minimo en X
                        if (this.MinimoY < 0 || this.MinimoX < 0)
                        {
                            return false;
                        } break;
                    default:
                        return false;
                }
            }

            //CASO 3 - CUADRANTE DEL INICIO = 3
            if (this.CuadranteInicio() == 3)
            {
                switch (this.CuadranteFin())
                {
                    case 1:
                        //hay que comparar con el minimo en y, maximo en X
                        if (this.MaximoX > config.MaxX || this.MinimoY < 0)
                        {
                            return false;
                        } break;
                    case 2:
                        //hay que comparar con el minimo en y, maximo en X
                        if (this.MaximoX > config.MaxX || this.MinimoY < 0 || this.MaximoY > config.MaxY)
                        {
                            return false;
                        } break;
                    case 3://como los dos estan en el cuadrante 3
                        if (this.anguloInicio > this.anguloFin)
                        {
                            //hay que calcular todos los maximos y minimos
                            if (this.MaximoY > config.MaxY || this.MinimoY < 0 || this.MinimoX < 0 || this.MaximoX > config.MaxX)
                            {
                                return false;
                            } break;
                        } break;
                    case 4:
                        //hay que comparar con el minimo en y
                        if (this.MinimoY < 0)
                        {
                            return false;
                        } break;
                    default:
                        return false;
                }
            }

            //CASO 4 - CUADRANTE DEL INICIO = 4
            if (this.CuadranteInicio() == 4)
            {
                switch (this.CuadranteFin())
                {
                    case 1:
                        //hay que comparar con el maximo en X
                        if (this.MaximoX > config.MaxX)
                        {
                            return false;
                        } break;
                    case 2:
                        //hay que comparar con el maximo en y, maximo en X
                        if (this.MaximoX > config.MaxX || this.MaximoY > config.MaxY)
                        {
                            return false;
                        } break;
                    case 3:
                        //hay que comparar con el maximo en y, maximo y minimo en X
                        if (this.MaximoX > config.MaxX || this.MaximoX < 0 || this.MaximoY > config.MaxY)
                        {
                            return false;
                        } break;
                    case 4:
                        //como los dos estan en el cuadrante 4
                        if (this.anguloInicio > this.anguloFin)
                        {
                            //hay que calcular todos los maximos y minimos
                            if (this.MaximoY > config.MaxY || this.MinimoY < 0 || this.MinimoX < 0 || this.MaximoX > config.MaxX)
                            {
                                return false;
                            } break;
                        } break;
                    default:
                        return false;
                }
            }

            return resultado;
        }
Example #4
0
        /// <summary>
        /// Converts the polyline in a <see cref="netDxf.Entities.LightWeightPolyline">LightWeightPolyline</see>.
        /// </summary>
        /// <returns>A new instance of <see cref="LightWeightPolyline">LightWeightPolyline</see> that represents the lightweight polyline.</returns>
        //public LightWeightPolyline ToLightWeightPolyline()
        //{
        //    List<LightWeightPolylineVertex> polyVertexes = new List<LightWeightPolylineVertex>();
        //    foreach (PolylineVertex v in this.vertexes)
        //    {
        //        polyVertexes.Add(new LightWeightPolylineVertex(v.Location)
        //        {
        //            BeginThickness = v.BeginThickness,
        //            Bulge = v.Bulge,
        //            EndThickness = v.EndThickness,
        //        }
        //            );
        //    }
        //    return new LightWeightPolyline(polyVertexes, this.isClosed)
        //    {
        //        Color = this.color,
        //        Layer = this.layer,
        //        LineType = this.lineType,
        //        Normal = this.normal,
        //        Elevation = this.elevation,
        //        Thickness = this.thickness,
        //        XData = this.xData
        //    };
        //}
        public bool PerteneceAreaTrabajo(XML_Config config)
        {
            //por defecto estimamos que la figura estara dentro
            bool resultado = true;

            foreach (PolylineVertex v in this.Vertexes)
            {
                //ANALIZAMOS LOS PUNTOS DE INICIO Y FIN:
                if (v.Location.X > config.MaxX || v.Location.X < 0)
                {
                    return false;
                }
                if (v.Location.Y > config.MaxY || v.Location.Y < 0)
                {
                    return false;
                }
                //sacamos la validacion sobre Z para permitir los valores negativos
                //    if (v.Location.Z > config.MaxZ || v.Location.Z < 0)
                //{
                //    return false;
                //}
            }

            return resultado;
        }
Example #5
0
        public bool PerteneceAreaTrabajo(XML_Config config)
        {
            //por defecto estimamos que la figura estara dentro
            bool resultado = true;

            //ANALIZAMOS LOS MAXIMOS Y MINIMOS DE CAJA EJE
            if (this.MaximoX > config.MaxX || this.MinimoX < 0)
            {
                return false;
            }
            if (this.MaximoY > config.MaxY || this.MinimoX < 0)
            {
                return false;
            }

            return resultado;
        }
Example #6
0
        public bool AnalizarFiguras(XML_Config config)
        {
            //analizamos los arcos del documento
            foreach (Arco arco in this.arcos)
            {
                if (!arco.PerteneceAreaTrabajo(config))
                    return false;
            }

            //analizamos los puntos del documento
            foreach (Punto punto in this.puntos)
            {
                if (!punto.PerteneceAreaTrabajo(config))
                    return false;
            }

            //analizamos las lineas del documento
            foreach (Linea linea in this.lineas)
            {
                if (!linea.PerteneceAreaTrabajo(config))
                    return false;
            }

            //analizamos las polilineas del documento
            foreach (IPolilinea polilinea in this.polilineas)
            {
                if (polilinea.Tipo == EntidadTipo.Polilinea)
                {
                    if (!((Polilinea)polilinea).PerteneceAreaTrabajo(config))
                        return false;
                }
                if (polilinea.Tipo == EntidadTipo.LightWeightPolyline)
                {
                    if (!((LightWeightPolyline)polilinea).PerteneceAreaTrabajo(config))
                        return false;
                }
            }

            //analizamos los circulos del documento
            foreach (Circulo circulo in this.circulos)
            {
                if (!circulo.PerteneceAreaTrabajo(config))
                    return false;
            }

            return true;
        }
Example #7
0
        public void GrabaConfiguracion(XML_Config config)
        {
            try
            {
                CultureInfo invCult = CultureInfo.InvariantCulture;

                //leemos nuevamente las configuraciones en un dataset, y agregamos
                //un nuevo datarow con la nueva configuracion y luego grabamos el xml
                DataSet ds = new DataSet();
                ds.ReadXml(this.filePath);

                DataTable dt = ds.Tables["configuracion"];

                DataRow dr;

                //en caso que no exista la tabla, la creamos
                if (dt != null)
                {
                    dr = dt.NewRow();
                }
                else
                {
                    DataColumn dc;

                    dt = new DataTable("configuracion");

                    dc = new DataColumn("Id");
                    dt.Columns.Add(dc);

                    dc = new DataColumn("Descripcion");
                    dt.Columns.Add(dc);

                    dc = new DataColumn("PuertoCom");
                    dt.Columns.Add(dc);

                    dc = new DataColumn("UnidadMedida");
                    dt.Columns.Add(dc);

                    dc = new DataColumn("TipoProg");
                    dt.Columns.Add(dc);

                    dc = new DataColumn("MaxX");
                    dt.Columns.Add(dc);

                    dc = new DataColumn("MaxY");
                    dt.Columns.Add(dc);

                    dc = new DataColumn("MaxZ");
                    dt.Columns.Add(dc);

                    dc = new DataColumn("VelocidadMovimiento");
                    dt.Columns.Add(dc);

                    dc = new DataColumn("LargoSeccion");
                    dt.Columns.Add(dc);

                    dc = new DataColumn("AlturaAscenso");
                    dt.Columns.Add(dc);

                    dc = new DataColumn("GradosPasoX");
                    dt.Columns.Add(dc);

                    dc = new DataColumn("TamVueltaX");
                    dt.Columns.Add(dc);

                    dc = new DataColumn("GradosPasoY");
                    dt.Columns.Add(dc);

                    dc = new DataColumn("TamVueltaY");
                    dt.Columns.Add(dc);

                    dc = new DataColumn("GradosPasoZ");
                    dt.Columns.Add(dc);

                    dc = new DataColumn("TamVueltaZ");
                    dt.Columns.Add(dc);

                    dr = dt.NewRow();

                    ds.Tables.Add(dt);
                }

                bool actualiza = false;

                //verificamos que no exista la configuracion a grabar,
                //sino actualizamos
                foreach (DataRow row in dt.Rows)
                {
                    if (Convert.ToInt32(row["Id"]) == config.Id)
                    {
                        dr = row;
                        actualiza = true;
                    }
                }

                dr["Id"] = config.Id;
                dr["Descripcion"] = config.Descripcion;
                dr["PuertoCom"] = config.PuertoCom;
                dr["UnidadMedida"] = config.UnidadMedida;
                dr["TipoProg"] = config.TipoProg;
                dr["MaxX"] = config.MaxX.ToString(invCult);
                dr["MaxY"] = config.MaxY.ToString(invCult);
                dr["MaxZ"] = config.MaxZ.ToString(invCult);
                dr["VelocidadMovimiento"] = config.VelocidadMovimiento.ToString(invCult);
                dr["LargoSeccion"] = config.LargoSeccion.ToString(invCult);
                dr["AlturaAscenso"] = config.AltoAscenso.ToString(invCult);
                dr["TamVueltaX"] = config.TamVueltaX.ToString(invCult);
                dr["TamVueltaY"] = config.TamVueltaY.ToString(invCult);
                dr["TamVueltaZ"] = config.TamVueltaZ.ToString(invCult);
                dr["GradosPasoX"] = config.GradosPasoX.ToString(invCult);
                dr["GradosPasoY"] = config.GradosPasoY.ToString(invCult);
                dr["GradosPasoZ"] = config.GradosPasoZ.ToString(invCult);

                if (!actualiza)
                    dt.Rows.Add(dr);

                ds.WriteXml(this.filePath);

                //grabamos los items para la configuracion por material/motor
                //GrabaConfiguracionMatMot(config.Id, config.ConfigMatMot);
            }
            catch (Exception ex)
            {
                throw (ex);
            }
        }
Example #8
0
        //public void GrabaConfiguracionMatMot(int idConfig, List<XML_ConfigMatMot> configs)
        //{
        //    try
        //    {
        //        //leemos nuevamente las configuraciones en un dataset, y agregamos
        //        //un nuevo datarow con la nueva configuracion y luego grabamos el xml
        //        DataSet ds = new DataSet();
        //        ds.ReadXml(this.filePath);
        //        DataTable dt = ds.Tables["configuracionMatMot"];
        //        DataRow dr;
        //        if (dt != null)
        //        {
        //            dr = dt.NewRow();
        //        }
        //        else
        //        {
        //            DataColumn dc;
        //            dt = new DataTable("configuracionMatMot");
        //            dc = new DataColumn("Id");
        //            dt.Columns.Add(dc);
        //            dc = new DataColumn("IdConfig");
        //            dt.Columns.Add(dc);
        //            dc = new DataColumn("IdMaterial");
        //            dt.Columns.Add(dc);
        //            dc = new DataColumn("IdMotor");
        //            dt.Columns.Add(dc);
        //            dc = new DataColumn("GradosPaso");
        //            dt.Columns.Add(dc);
        //            dc = new DataColumn("TamVuelta");
        //            dt.Columns.Add(dc);
        //            dr = dt.NewRow();
        //            ds.Tables.Add(dt);
        //        }
        //        //grabamos o actualizamos cada item
        //        foreach (XML_ConfigMatMot config in configs)
        //        {
        //            bool actualiza = false;
        //            //verificamos que no existan los items de configuracion a grabar,
        //            //sino actualizamos
        //            foreach (DataRow row in dt.Rows)
        //            {
        //                if (Convert.ToInt32(row["Id"]) == config.IdConfigMatMot &&
        //                    Convert.ToInt32(row["IdConfig"]) == idConfig
        //                    )
        //                {
        //                    dr = row;
        //                    actualiza = true;
        //                }
        //            }
        //            if (!actualiza)
        //                dr = dt.NewRow();
        //            dr["Id"] = config.IdConfigMatMot;
        //            dr["IdConfig"] = idConfig;
        //            dr["IdMaterial"] = config.IdMaterial;
        //            dr["IdMotor"] = config.IdMotor;
        //            dr["GradosPaso"] = config.GradosPaso.ToString();
        //            dr["TamVuelta"] = config.TamVuelta.ToString();
        //            if (!actualiza)
        //                dt.Rows.Add(dr);
        //        }
        //        ds.WriteXml(this.filePath);
        //    }
        //    catch (Exception ex)
        //    {
        //        throw (ex);
        //    }
        //}
        //public void GrabaMotor(XML_Motor motor)
        //{
        //    try
        //    {
        //        //leemos nuevamente los motores en un dataset, y agregamos
        //        //un nuevo datarow con el nuevo motor y luego grabamos el xml
        //        DataSet ds = new DataSet();
        //        ds.ReadXml(this.filePath);
        //        DataTable dt = ds.Tables["motores"];
        //        DataRow dr;
        //        if (dt != null)
        //        {
        //            dr = dt.NewRow();
        //        }
        //        else
        //        {
        //            DataColumn dc;
        //            dt = new DataTable("motores");
        //            dc = new DataColumn("Id");
        //            dt.Columns.Add(dc);
        //            dc = new DataColumn("Descripcion");
        //            dt.Columns.Add(dc);
        //            dr = dt.NewRow();
        //            ds.Tables.Add(dt);
        //        }
        //        dr["Id"] = motor.Id;
        //        dr["Descripcion"] = motor.Descripcion;
        //        dt.Rows.Add(dr);
        //        ds.WriteXml(this.filePath);
        //    }
        //    catch (Exception ex)
        //    {
        //        throw (ex);
        //    }
        //}
        //public void GrabaMaterial(XML_Material material)
        //{
        //    try
        //    {
        //        //leemos nuevamente los motores en un dataset, y agregamos
        //        //un nuevo datarow con el nuevo material y luego grabamos el xml
        //        DataSet ds = new DataSet();
        //        ds.ReadXml(this.filePath);
        //        DataTable dt = ds.Tables["materiales"];
        //        DataRow dr;
        //        if (dt != null)
        //        {
        //            dr = dt.NewRow();
        //        }
        //        else
        //        {
        //            DataColumn dc;
        //            dt = new DataTable("materiales");
        //            dc = new DataColumn("Id");
        //            dt.Columns.Add(dc);
        //            dc = new DataColumn("Descripcion");
        //            dt.Columns.Add(dc);
        //            dc = new DataColumn("Espesor");
        //            dt.Columns.Add(dc);
        //            dc = new DataColumn("Ancho");
        //            dt.Columns.Add(dc);
        //            dc = new DataColumn("Largo");
        //            dt.Columns.Add(dc);
        //            dr = dt.NewRow();
        //            ds.Tables.Add(dt);
        //        }
        //        dr["Id"] = material.Id;
        //        dr["Descripcion"] = material.Descripcion;
        //        dr["Espesor"] = material.Espesor;
        //        dr["Ancho"] = material.Ancho;
        //        dr["Largo"] = material.Largo;
        //        dt.Rows.Add(dr);
        //        ds.WriteXml(this.filePath);
        //    }
        //    catch (Exception ex)
        //    {
        //        throw (ex);
        //    }
        //}
        public List<XML_Config> LeeConfiguracion()
        {
            //seteamos el tipo de culture para grabar bien los decimales
            //CultureInfo actual = Thread.CurrentThread.CurrentCulture;
            CultureInfo invCult = CultureInfo.InvariantCulture;
            //Thread.CurrentThread.CurrentCulture = new CultureInfo("es-AR");

            DataSet ds = new DataSet();
            ds.ReadXml(this.filePath);

            DataTable dtConfig = ds.Tables["configuracion"];
            //DataTable dtConfigMatMot = ds.Tables["configuracionMatMot"];

            XML_Config c;
            List<XML_Config> cs = new List<XML_Config>();
            if (dtConfig != null)
            {
                foreach (DataRow dr in dtConfig.Rows)
                {
                    //leemos la configuracion general
                    c = new XML_Config();

                    c.Id = Convert.ToInt32(dr["Id"]);
                    c.Descripcion = dr["Descripcion"].ToString();
                    c.PuertoCom = dr["PuertoCom"].ToString();
                    c.UnidadMedida = dr["UnidadMedida"].ToString();
                    c.TipoProg = dr["TipoProg"].ToString();
                    c.MaxX = float.Parse(dr["MaxX"].ToString(), invCult);
                    c.MaxY = float.Parse(dr["MaxY"].ToString());
                    c.MaxZ = float.Parse(dr["MaxZ"].ToString());
                    c.VelocidadMovimiento = decimal.Parse(dr["VelocidadMovimiento"].ToString(), invCult);
                    c.LargoSeccion = decimal.Parse(dr["LargoSeccion"].ToString(), invCult);
                    c.AltoAscenso = float.Parse(dr["AlturaAscenso"].ToString(), invCult);
                    c.GradosPasoX = decimal.Parse(dr["GradosPasoX"].ToString(), invCult);
                    c.GradosPasoY = decimal.Parse(dr["GradosPasoY"].ToString(), invCult);
                    c.GradosPasoZ = decimal.Parse(dr["GradosPasoZ"].ToString(), invCult);
                    c.TamVueltaX = decimal.Parse(dr["TamVueltaX"].ToString(), invCult);
                    c.TamVueltaY = decimal.Parse(dr["TamVueltaY"].ToString(), invCult);
                    c.TamVueltaZ = decimal.Parse(dr["TamVueltaZ"].ToString(), invCult);

                    //c.ConfigMatMot = new List<XML_ConfigMatMot>();

                    //if (dtConfigMatMot != null)
                    //{
                    //    XML_ConfigMatMot configMatMot;
                    //    foreach (DataRow dr2 in dtConfigMatMot.Rows)
                    //    {
                    //        if (dr2["IdConfig"].ToString() == c.Id.ToString())
                    //        {
                    //            configMatMot = new XML_ConfigMatMot();

                    //            configMatMot.IdConfigMatMot = Convert.ToInt32(dr2["Id"]);
                    //            configMatMot.IdMaterial = Convert.ToInt32(dr2["IdMaterial"]);
                    //            configMatMot.IdMotor = Convert.ToInt32(dr2["IdMotor"]);
                    //            configMatMot.GradosPaso = Convert.ToDecimal(dr2["GradosPaso"]);
                    //            configMatMot.TamVuelta = Convert.ToDecimal(dr2["TamVuelta"]);

                    //            c.ConfigMatMot.Add(configMatMot);
                    //        }
                    //    }
                    //}

                    cs.Add(c);
                }
            }

            //devolvemos al thread el formato actual
            //Thread.CurrentThread.CurrentCulture = actual;

            return cs;
        }
Example #9
0
        private void GrabaConfiguracionGeneral()
        {
            try
            {
                //cambiamos el cursor a waiting
                Cursor.Current = Cursors.WaitCursor;
                //culture que usamos para mostrar los campos y recuperarlos en pantalla
                CultureInfo cultAR = new CultureInfo("es-AR");

                string xmlPath = ConfigurationManager.AppSettings["xmlDbPath"];
                XMLdb x = new XMLdb(xmlPath);
                bool actualiza = false;

                //vemos si es actualizacion o alta
                XML_Config config;
                if (!cmbConfiguracion.Visible)
                {//es alta
                    config = new XML_Config();

                    //cargamos la descripcion del nuevo perfil
                    config.Descripcion = txtNombrePerfil.Text.Trim();

                    // el siguiente id de la lista de configuraciones
                    List<XML_Config> configuraciones = (List<XML_Config>)cmbConfiguracion.DataSource;
                    int maxId = 0;
                    foreach (XML_Config configuracion in configuraciones)
                    {
                        if (configuracion.Id > maxId)
                        {
                            maxId = configuracion.Id;
                        }
                    }

                    config.Id = maxId + 1;
                }
                else
                {//es actualizacion
                    config = (XML_Config)cmbConfiguracion.SelectedItem;
                    actualiza = true;
                }

                //cargamos los nuevos valores
                config.PuertoCom = portComboBox.Text;
                config.MaxX = float.Parse(txtMaxX.Text, cultAR);
                config.MaxY = float.Parse(txtMaxY.Text, cultAR);
                config.MaxZ = float.Parse(txtMaxZ.Text, cultAR);
                config.LargoSeccion = decimal.Parse(txtLargoSeccion.Text, cultAR);
                config.VelocidadMovimiento = decimal.Parse(txtVelocMov.Text, cultAR);
                config.AltoAscenso = float.Parse(txtAltura.Text, cultAR);
                config.GradosPasoX = decimal.Parse(txtGradosX.Text, cultAR);
                config.GradosPasoY = decimal.Parse(txtGradosY.Text, cultAR);
                config.GradosPasoZ = decimal.Parse(txtGradosZ.Text, cultAR);
                config.TamVueltaX = decimal.Parse(txtVueltasX.Text, cultAR);
                config.TamVueltaY = decimal.Parse(txtVueltasY.Text, cultAR);
                config.TamVueltaZ = decimal.Parse(txtVueltasZ.Text, cultAR);

                if (rbtAbsoluta.Checked)
                    config.TipoProg = "abs";
                if (rbtRelativa.Checked)
                    config.TipoProg = "rel";

                if (rbtMM.Checked)
                    config.UnidadMedida = "mm";
                if (rbtPULG.Checked)
                    config.UnidadMedida = "pulg";

                //grabamos la configuracion general
                x.GrabaConfiguracion(config);

                if (actualiza)
                    MessageBox.Show("La configuración ha sido actualizada correctamete", "Configuración - Actualización", MessageBoxButtons.OK, MessageBoxIcon.Information);
                else
                    MessageBox.Show("La configuración ha sido dado de alta correctamete", "Configuración - Alta", MessageBoxButtons.OK, MessageBoxIcon.Information);

                //this.Hide();

                this.cmbConfiguracion.SelectedValueChanged -= new System.EventHandler(this.cmbConfiguracion_SelectedValueChanged);

                lblNombre.Visible = false;
                txtNombrePerfil.Visible = false;
                lblConfig.Visible = true;
                cmbConfiguracion.Visible = true;

                //lblConfigs.Enabled = true;
                //btnAltaConfigMatMot.Enabled = true;
                //grdConfigMatMot.Enabled = true;

                //grabamos en la configuracion que esta es la ultima configuracion seleccionada
                //ConfigurationManager.AppSettings["idLastConfig"]=config.Id.ToString();

                //Configuration appconfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                //appconfig.AppSettings.Settings["idLastConfig"].Value = config.Id.ToString();
                //appconfig.Save(ConfigurationSaveMode.Modified, true);
                //ConfigurationManager.RefreshSection("appSettings");
                x.GrabaConfiguracionGral((new XML_Gral(config.Id)));
                //CargaConfiguracionGeneral();

                //cambiamos el cursor al normal
                Cursor.Current = Cursors.Default;

            }
            catch (Exception ex)
            {
                //cambiamos el cursor al normal
                Cursor.Current = Cursors.Default;

                throw (ex);
                //MessageBox.Show("Se ha producido un error: " + ex.Message, "Alta Configuracion", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }