using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SisNetBase;
using OliviaDef;
using System.Runtime.InteropServices;
using Microsoft.Win32;
using System.Net;
using System.Net.Sockets;
using System.IO;

using ESRI.ArcGIS.CatalogUI;
using ESRI.ArcGIS.Catalog;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Display;
using System.Drawing;
using ESRI.ArcGIS.ADF.COMSupport;
using ESRI.ArcGIS.Geometry;

namespace OliviaAddIn
{
    /**
     * @file OliviaGlob.cs
     * Clase de variables globales de la herramienta.
     * Contiene las definiciones e instancias globales accesibles desde
     * cualquier otra clase de la herramienta.
     */

    /**
    * Para Indicar si la ventana se cierra porque se ha dado a cerrar, o a ejecutar sectorización, o planificación
    */
    public enum TiposEstado
    {
        Inicio,
        Secto,
        FinOkSecto,
        PreparadoPlanif,
        Planif,
        FinOkPlanif,
        FinPlanif,
        RePlanif,
        FinNOk
    }    

    /**
     * Clase de variables globales de la herramienta.
     * Contiene las definiciones e instancias globales accesibles desde
     * cualquier otra clase de la herramienta.
     */
    class OliviaGlob
    {
        /**
        * Nombre de las capas que se van a necesitar para la exportación de datos para la limpieza
        */
        public struct Capas
        {
            public static string ftclass_ejes;      //<Nombre de la capa de ejes de carretera
            public static string ftclass_zonas;     //<Nombre de la capa de zonas
            public static string ftclass_restri;    //<Nombre de la capa de restricciones
            public static string ftclass_muni;      //<Nombre de la capa de municipios de TOMTOM
        };
              
        /**
         * Paths de la configuración
         */
        public struct Paths
        {
            public static string PathWork;          //<Path del directorio de trabajo
            public static string PathCfg;           //<Path de la configuración general
            public static string PathGeofoto;       //<Path del ejecutable de Geofoto
            public static string PathTemp;          //<Path temporal de generación de archivos intermedios
            public static string DirData;           //<Dir donde están los shapefiles data y nw
            public static string PathData;          //<Path del shp con datos a planificar, ya filtrados e intersecados con las zonas y niveles
            public static string PathNW;            //<Path del shp con la red navegable
            public static string PathCartela;       //<Path de la cartela que se emplea como plantilla para la generación de mapas en formato PDF
			//paths GDBs
            public static string PathGdbGen;        //<Path de la gdb general de la que se extraen los datos de interés
            public static string PathGdbNw;         //<Path de la gdb referente a la red de carreteras de TOMTOM
            public static string PathSimbVSM;       //<Path de la galeria de estilos aplicada por VSM
            public static string PathSimbESRI;       //<Path de la galeria de estilos de ESRI
        };
        
        /**
         * Indica si ya hay una instancia de la herramienta OLIVIA abierta
         */
        public static bool ya_open_app = false;
        /**
         * Indica si se ejecuta la app en modo demo_id
         */
        public static bool demo_id = false;
        /**
         * Variable global de la ventana de inicio de la herramienta OLIVIA
         */
        public static InicioDlg inidlg;
        /**
        * Variable de la clase exportador limpieza viaria
        */
        public static DatosGDB gdb;
        /**
         * Variable de la clase exportador limpieza viaria
         */
        public static DatosGDBLimp gdb_limp = null;
        /**
         * Variable de la clase exportador recogida de reiduos
         */
        public static DatosGDBReco gdb_reco = null;
        /**
        * Variable de la clase Maqueta para la creación de mapas
        */
        public static Maqueta mapa = new Maqueta();
        /**
         * Variable de la clase progreso de ejecución
         */
        public static ProgresoEjec progr_eje = null;
        /**
         * Indica en qué modo está la herramienta
         */
        public static GeneralDef.TiposOliv tip_oliv = GeneralDef.TiposOliv.OlivNoDef;
        /**
         * IP donde va a realizar la conexión a geofoto, se inicializa al arrancar con la local
         */
        public static string ip = "0.0.0.0";
        /**
         * Puerto local donde va a realizar la conexión a geofoto, se inicializa al arrancar
         */
        public static int puerto;
        /**
         * Time out de la conexión con geofoto, en seg
         */
        public static int t_out_sock = 20;	
        /**
         * array que contiene los identificadores de los ámbitos exportados. Se utilizará para aplicarles el sector oportuno una vez procesado en geofoto
         */
        public static string cartela_tto = "";
        /**
         * array que contiene los identificadores de los ámbitos exportados. Se utilizará para aplicarles el sector oportuno una vez procesado en geofoto
         */
        public static string cartela_ambs = "";
        /**
        * Nombre del marco de datos del mapa de localización existente en la cartela a la hora de la maquetación de datos.
        */
        public static string df_princip = "Layers";
        /**
        * Nombre del marco de datos del mapa de localización existente en la cartela a la hora de la maquetación de datos.
        */
        public static string df_secund1 = "MAP";
        /**
        * Nombre del marco de datos del mapa principal existente en la cartela a la hora de la maquetación de datos.
        */
        public static string df_secund = "MAPA";              
        /**
         * Nombre del manual que se abrirá cuand ose pincha en el botón de ayuda disponible en las distintas ventanas.
         */
        public static string manual = "Manual_Olivia";
        /**
         * El Buffer de exportación de la red, en m
         * (zona de influencia) a aplicar a los polígonos de ámbitos de trabajo, para extraer la red navegable correspondiente a cada ámbito.
         */
        public static int buff_export = 1000;
        public static int coorsys = (int)esriSRProjCS4Type.esriSRProjCS_ETRS1989_UTM_Zone_30N;//sistema de coordenadas de trabajo,al que se convierte los datos de entrada
        public static int coorsys_in = (int)esriSRProjCS4Type.esriSRProjCS_ETRS1989_UTM_Zone_30N; //sistema de coordenadas de entrada, al que se convierten los datos a la salida
            
        
        //*************************************************************************************
        //Métodos  
        public static bool guarda_ini_gen(out string err_str)
        {            
            IniFile ini;
            string aux = null;
            err_str = "";

            ini = new IniFile(Paths.PathCfg, true);
            if (ini == null)
            {
                err_str = "Error al guardar la configuración general";
                return false;
            }

            //paths de las gdbs
            aux = pon_path_relativo(Paths.PathGdbGen, Paths.PathWork);
            ini.SetValue(GeneralDef.GrupoGDB, GeneralDef.GDB_gen, aux);
            aux = pon_path_relativo(Paths.PathGdbNw, Paths.PathWork);
            ini.SetValue(GeneralDef.GrupoGDB, GeneralDef.GDB_nw, aux);
            aux = pon_path_relativo(Paths.PathSimbVSM, Paths.PathWork);
            ini.SetValue(GeneralDef.GrupoGDB, GeneralDef.simb_vsm, aux);
            aux = pon_path_relativo(Paths.PathSimbESRI, Paths.PathWork);
            ini.SetValue(GeneralDef.GrupoGDB, GeneralDef.simb_esri, aux);
            ini.SetValue(GeneralDef.GrupoGDB, GeneralDef.GDB_puerto, puerto);
            ini.SetValue(GeneralDef.GrupoGDB, GeneralDef.GG_buff, OliviaGlob.buff_export);

            //propiedades generales
            ini.SetValue(GeneralDef.GrupoGen, GeneralDef.GG_pw, Paths.PathWork);
            aux = pon_path_relativo(Paths.PathGeofoto, Paths.PathWork);
            ini.SetValue(GeneralDef.GrupoGen, GeneralDef.GG_pg, aux);
            aux = pon_path_relativo(Paths.PathTemp, Paths.PathWork);
            ini.SetValue(GeneralDef.GrupoGen, GeneralDef.GG_pt, aux); 
            aux = pon_path_relativo(Paths.DirData, Paths.PathWork);
            ini.SetValue(GeneralDef.GrupoGen, GeneralDef.GG_pd, aux);
            aux = pon_path_relativo(Paths.PathCartela, Paths.PathWork);
            ini.SetValue(GeneralDef.GrupoGen, GeneralDef.GG_pcar, aux);

            //para el grupo CAPAS GENERALES
            ini.SetValue(GeneralDef.GrupoCapa, GeneralDef.GC_eje, OliviaGlob.Capas.ftclass_ejes);
            ini.SetValue(GeneralDef.GrupoCapa, GeneralDef.GC_zon, OliviaGlob.Capas.ftclass_zonas);
            ini.SetValue(GeneralDef.GrupoCapa, GeneralDef.GC_rest, OliviaGlob.Capas.ftclass_restri);
            ini.SetValue(GeneralDef.GrupoCapa, GeneralDef.GC_muni, OliviaGlob.Capas.ftclass_muni);
            
            //para el grupo CAPAS de LIMPIEZA
            ini.SetValue(GeneralDef.GrupoCapaLImp, GeneralDef.GCA_niv, LimpiezaDef.Capas.ftclass_niveles);
            ini.SetValue(GeneralDef.GrupoCapaLImp, GeneralDef.GCA_cont, LimpiezaDef.Capas.ftclass_cont);
            ini.SetValue(GeneralDef.GrupoCapaLImp, GeneralDef.GCA_mobi, LimpiezaDef.Capas.ftclass_mobi);
            ini.SetValue(GeneralDef.GrupoCapaLImp, GeneralDef.GCA_limp, LimpiezaDef.Capas.ftclass_limp_mec);
            ini.SetValue(GeneralDef.GrupoCapaLImp, GeneralDef.GCA_inst, LimpiezaDef.Capas.ftclass_instala);

            //para el grupo CAMPOS de LIMPIEZA
            ini.SetValue(GeneralDef.GrupoCampoLimp, GeneralDef.GAA_entid, LimpiezaDef.Campos.consulta_entidad);
            ini.SetValue(GeneralDef.GrupoCampoLimp, GeneralDef.GAA_mecan, LimpiezaDef.Campos.consulta_mecan);

            //para el grupo de ATRIBUTOS de LIMPIEZA
            ini.SetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_esc, LimpiezaDef.Atributos.atr_esca);
            ini.SetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_fuent, LimpiezaDef.Atributos.atr_fuent);
            ini.SetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_infan, LimpiezaDef.Atributos.atr_infan);
            ini.SetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_pape, LimpiezaDef.Atributos.atr_pape);
            ini.SetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_paso_niv, LimpiezaDef.Atributos.atr_paso_niv);
            ini.SetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_pipi, LimpiezaDef.Atributos.atr_pipi);
            ini.SetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_sane, LimpiezaDef.Atributos.atr_sane);
            ini.SetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_acera, LimpiezaDef.Atributos.atr_acera);
            ini.SetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_aparc, LimpiezaDef.Atributos.atr_aparc);
            ini.SetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_bord, LimpiezaDef.Atributos.atr_bord);
            ini.SetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_hoja, LimpiezaDef.Atributos.atr_hoja);
            ini.SetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_peat, LimpiezaDef.Atributos.atr_peat);
            ini.SetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_terri, LimpiezaDef.Atributos.atr_terri);
            ini.SetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_ocio, LimpiezaDef.Atributos.atr_ocio);
            ini.SetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_org_ofi, LimpiezaDef.Atributos.atr_org_ofi);
            ini.SetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_parq, LimpiezaDef.Atributos.atr_parq);
            ini.SetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_park, LimpiezaDef.Atributos.atr_park);
            ini.SetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_play, LimpiezaDef.Atributos.atr_play);
            ini.SetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_polid, LimpiezaDef.Atributos.atr_polid);
            ini.SetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_turis, LimpiezaDef.Atributos.atr_turis);
            ini.SetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_solar, LimpiezaDef.Atributos.atr_solar);
            ini.SetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_suelo, LimpiezaDef.Atributos.atr_suelo);

            //para el grupo FILTROS de LIMPIEZA
            ini.SetValue(GeneralDef.GrupoFiltLimp, GeneralDef.GFA_eje, LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbEjeCalle]);
            ini.SetValue(GeneralDef.GrupoFiltLimp, GeneralDef.GFA_blm, LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbBordLibreMec]);
            ini.SetValue(GeneralDef.GrupoFiltLimp, GeneralDef.GFA_blnm, LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbBordLibreNoMec]);
            ini.SetValue(GeneralDef.GrupoFiltLimp, GeneralDef.GFA_ba, LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbBordAparc]);
            ini.SetValue(GeneralDef.GrupoFiltLimp, GeneralDef.GFA_bam, LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbAceMec]);
            ini.SetValue(GeneralDef.GrupoFiltLimp, GeneralDef.GFA_banm, LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbAceNoMec]);
            ini.SetValue(GeneralDef.GrupoFiltLimp, GeneralDef.GFA_cpm, LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbCallePeatMec]);
            ini.SetValue(GeneralDef.GrupoFiltLimp, GeneralDef.GFA_cpnm, LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbCallePeatNoMec]);
            ini.SetValue(GeneralDef.GrupoFiltLimp, GeneralDef.GFA_chm, LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbBordHojaMec]);
            ini.SetValue(GeneralDef.GrupoFiltLimp, GeneralDef.GFA_chnm, LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbBordHojaNoMec]);
            ini.SetValue(GeneralDef.GrupoFiltLimp, GeneralDef.GFA_cont, LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbConte]);
            ini.SetValue(GeneralDef.GrupoFiltLimp, GeneralDef.GFA_pap, LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbPape]);
            ini.SetValue(GeneralDef.GrupoFiltLimp, GeneralDef.GFA_inf, LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbZInf]);
            ini.SetValue(GeneralDef.GrupoFiltLimp, GeneralDef.GFA_pipi, LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbPipi]);
            ini.SetValue(GeneralDef.GrupoFiltLimp, GeneralDef.GFA_sane, LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbSane]);

            //para el grupo PARAMETROS de LIMPIEZA
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoM, LimpiezaDef.Parametros.t_ttoM);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttom, LimpiezaDef.Parametros.t_ttom);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_v_despM, LimpiezaDef.Parametros.v_despM);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_v_despm, LimpiezaDef.Parametros.v_despm);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_cardescM, LimpiezaDef.Parametros.t_cardescM);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_cardescm, LimpiezaDef.Parametros.t_cardescm);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_cardesc, LimpiezaDef.Parametros.t_cardesc);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_t_despM, LimpiezaDef.Parametros.t_despM);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_t_despm, LimpiezaDef.Parametros.t_despm);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_t_desp, LimpiezaDef.Parametros.t_desp);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_convM, LimpiezaDef.Parametros.t_convM);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_convm, LimpiezaDef.Parametros.t_convm);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_conv, LimpiezaDef.Parametros.t_conv);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_descM, LimpiezaDef.Parametros.t_descansoM);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_descm, LimpiezaDef.Parametros.t_descansom);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_desc, LimpiezaDef.Parametros.t_descanso);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_h_inicio, LimpiezaDef.Parametros.h_inicio);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_anchM, LimpiezaDef.Parametros.ancho_viaM);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_anchm, LimpiezaDef.Parametros.ancho_viam);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_anch, LimpiezaDef.Parametros.ancho_via);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoBarMan, LimpiezaDef.Parametros.ttoBarMan);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoBarManMant, LimpiezaDef.Parametros.ttoBarManMant);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoBarMMot, LimpiezaDef.Parametros.ttoBarMMot);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoBarMC, LimpiezaDef.Parametros.ttoBarMC);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoBarMAP, LimpiezaDef.Parametros.ttoBarMAP);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoBarMix, LimpiezaDef.Parametros.ttoBarMix);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoBalMan, LimpiezaDef.Parametros.ttoBalMan);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoBalMC, LimpiezaDef.Parametros.ttoBalMC);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoBalMAP, LimpiezaDef.Parametros.ttoBalMAP);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoBalMix, LimpiezaDef.Parametros.ttoBalMix);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoBL, LimpiezaDef.Parametros.ttoBL);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoCH, LimpiezaDef.Parametros.ttoCH);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoVPap, LimpiezaDef.Parametros.ttoVPap);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoLPap, LimpiezaDef.Parametros.ttoLPap);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoLC, LimpiezaDef.Parametros.ttoLC);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoLZI, LimpiezaDef.Parametros.ttoLZI);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoLPip, LimpiezaDef.Parametros.ttoLPip);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoLS, LimpiezaDef.Parametros.ttoLS);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespBarMan, LimpiezaDef.Parametros.vdespBarMan);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespBarManMant, LimpiezaDef.Parametros.vdespBarManMant);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespBarMMot, LimpiezaDef.Parametros.vdespBarMMot);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespBarMC, LimpiezaDef.Parametros.vdespBarMC);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespBarMAP, LimpiezaDef.Parametros.vdespBarMAP);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespBarMix, LimpiezaDef.Parametros.vdespBarMix);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespBalMan, LimpiezaDef.Parametros.vdespBalMan);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespBalMC, LimpiezaDef.Parametros.vdespBalMC);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespBalMAP, LimpiezaDef.Parametros.vdespBalMAP);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespBalMix, LimpiezaDef.Parametros.vdespBalMix);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespBL, LimpiezaDef.Parametros.vdespBL);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespCH, LimpiezaDef.Parametros.vdespCH);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespVPap, LimpiezaDef.Parametros.vdespVPap);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespLPap, LimpiezaDef.Parametros.vdespLPap);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespLC, LimpiezaDef.Parametros.vdespLC);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespLZI, LimpiezaDef.Parametros.vdespLZI);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespLPip, LimpiezaDef.Parametros.vdespLPip);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespLS, LimpiezaDef.Parametros.vdespLS);
            ini.SetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_umbral_reco, LimpiezaDef.Parametros.umbral_reco);
            
            //para el grupo CAMPOS de RECOGIDA
            ini.SetValue(GeneralDef.GrupoCampoReco, GeneralDef.GAR_id, RecogidaDef.campos_def.cons_id);
            ini.SetValue(GeneralDef.GrupoCampoReco, GeneralDef.GAR_nomrec, RecogidaDef.campos_def.cons_nomrec);
            ini.SetValue(GeneralDef.GrupoCampoReco, GeneralDef.GAR_lateral, RecogidaDef.campos_def.cons_lateral);
            ini.SetValue(GeneralDef.GrupoCampoReco, GeneralDef.GAR_frac, RecogidaDef.campos_def.cons_fracc);
            ini.SetValue(GeneralDef.GrupoCampoReco, GeneralDef.GAR_capac, RecogidaDef.campos_def.cons_capac);
            ini.SetValue(GeneralDef.GrupoCampoReco, GeneralDef.GAR_uds, RecogidaDef.campos_def.cons_uds);
            ini.SetValue(GeneralDef.GrupoCampoReco, GeneralDef.GAR_kgrec, RecogidaDef.campos_def.cons_kgrec);
            ini.SetValue(GeneralDef.GrupoCampoReco, GeneralDef.GAR_kgrec_val, RecogidaDef.kgrec_cont);
            ini.SetValue(GeneralDef.GrupoCampoReco, GeneralDef.GAR_is_lleno, RecogidaDef.lleno);
            ini.SetValue(GeneralDef.GrupoCampoReco, GeneralDef.GAR_is_campo, RecogidaDef.kgrec_camp);

            //para el grupo de ATRIBUTOS de RECOGIDA
            //Rellena los tipos de fracción
            ini.SetValue(GeneralDef.GrupoAtribReco, GeneralDef.GAT_organica, RecogidaDef.tipos_fracc_str[(int)RecogidaDef.TiposFracción.Organica]);
            ini.SetValue(GeneralDef.GrupoAtribReco, GeneralDef.GAT_resto, RecogidaDef.tipos_fracc_str[(int)RecogidaDef.TiposFracción.Resto]);
            ini.SetValue(GeneralDef.GrupoAtribReco, GeneralDef.GAT_envase, RecogidaDef.tipos_fracc_str[(int)RecogidaDef.TiposFracción.Envases]);
            ini.SetValue(GeneralDef.GrupoAtribReco, GeneralDef.GAT_papel, RecogidaDef.tipos_fracc_str[(int)RecogidaDef.TiposFracción.Papel]);
            ini.SetValue(GeneralDef.GrupoAtribReco, GeneralDef.GAT_vidrio, RecogidaDef.tipos_fracc_str[(int)RecogidaDef.TiposFracción.Vidrio]);
            //Rellena los tipos de carga
            ini.SetValue(GeneralDef.GrupoAtribReco, GeneralDef.GAT_trasera, RecogidaDef.tipos_carg_str[(int)RecogidaDef.TiposCarga.Trasera]);
            ini.SetValue(GeneralDef.GrupoAtribReco, GeneralDef.GAT_lateral, RecogidaDef.tipos_carg_str[(int)RecogidaDef.TiposCarga.Lateral]);
            ini.SetValue(GeneralDef.GrupoAtribReco, GeneralDef.GAT_superior, RecogidaDef.tipos_carg_str[(int)RecogidaDef.TiposCarga.Superior]);
            ini.SetValue(GeneralDef.GrupoAtribReco, GeneralDef.GAT_bilat, RecogidaDef.tipos_carg_str[(int)RecogidaDef.TiposCarga.Bilateral]);
            ini.SetValue(GeneralDef.GrupoAtribReco, GeneralDef.GAT_bolseo, RecogidaDef.tipos_carg_str[(int)RecogidaDef.TiposCarga.BolseoPtaPta]);
            ini.SetValue(GeneralDef.GrupoAtribReco, GeneralDef.GAT_lavado, RecogidaDef.tipos_carg_str[(int)RecogidaDef.TiposCarga.Lavado]);
                        
            //para el grupo PARAMETROS de RECOGIDA
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_vaciM, RecogidaDef.Parametros.t_vaciM);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_vacim, RecogidaDef.Parametros.t_vacim);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_llegsalM, RecogidaDef.Parametros.t_llegsalM);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_llegsalm, RecogidaDef.Parametros.t_llegsalm);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_llegsal, RecogidaDef.Parametros.t_llegsal);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_descM, RecogidaDef.Parametros.t_descM);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_descm, RecogidaDef.Parametros.t_descm);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_desc, RecogidaDef.Parametros.t_desc);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_convM, RecogidaDef.Parametros.t_convM);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_convm, RecogidaDef.Parametros.t_convm);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_conv, RecogidaDef.Parametros.t_conv);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_descansoM, RecogidaDef.Parametros.t_descansoM);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_descansom, RecogidaDef.Parametros.t_descansom);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_descanso, RecogidaDef.Parametros.t_descanso);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_h_inicio, RecogidaDef.Parametros.h_inicio);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_dv_org, RecogidaDef.Parametros.dens_vehi_org);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_dv_res, RecogidaDef.Parametros.dens_vehi_res);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_dv_env, RecogidaDef.Parametros.dens_vehi_env);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_dv_pap, RecogidaDef.Parametros.dens_vehi_pap);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_dv_vid, RecogidaDef.Parametros.dens_vehi_vid);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_dv_otr, RecogidaDef.Parametros.dens_vehi_otr);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_dc_org, RecogidaDef.Parametros.dens_cont_org);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_dc_res, RecogidaDef.Parametros.dens_cont_res);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_dc_env, RecogidaDef.Parametros.dens_cont_env);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_dc_pap, RecogidaDef.Parametros.dens_cont_pap);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_dc_vid, RecogidaDef.Parametros.dens_cont_vid);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_dc_otr, RecogidaDef.Parametros.dens_cont_otr);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_anchv_3, RecogidaDef.Parametros.anch_vehi_3);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_anchv_2, RecogidaDef.Parametros.anch_vehi_2);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_anchv_s, RecogidaDef.Parametros.anch_vehi_s);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_rgiro_3, RecogidaDef.Parametros.rad_giro_3);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_rgiro_2, RecogidaDef.Parametros.rad_giro_2);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_rgiro_s, RecogidaDef.Parametros.rad_giro_s);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_tv_tra, RecogidaDef.Parametros.t_vaci_tra);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_tv_lat, RecogidaDef.Parametros.t_vaci_lat);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_tv_sup, RecogidaDef.Parametros.t_vaci_sup);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_tv_bi, RecogidaDef.Parametros.t_vaci_bi);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_tv_bol, RecogidaDef.Parametros.t_vaci_bol);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_tv_lav, RecogidaDef.Parametros.t_vaci_lav);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_tv_otr, RecogidaDef.Parametros.t_vaci_otr);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_kgmaxM, RecogidaDef.Parametros.kgmaxM);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_kgmaxm, RecogidaDef.Parametros.kgmaxm);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_carga_maxM, RecogidaDef.Parametros.carga_maxM);
            ini.SetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_carga_maxm, RecogidaDef.Parametros.carga_maxm);
            
            //para el grupo ATRIBUTOS de LATERALIDAD
            ini.SetValue(GeneralDef.GrupoCampoLater, GeneralDef.GAL_amb, RecogidaDef.tipos_lateralidad[(int)RecogidaDef.Lateralidad.Ambos]);
            ini.SetValue(GeneralDef.GrupoCampoLater, GeneralDef.GAL_dcha, RecogidaDef.tipos_lateralidad[(int)RecogidaDef.Lateralidad.Dcha]);
            ini.SetValue(GeneralDef.GrupoCampoLater, GeneralDef.GAL_izq, RecogidaDef.tipos_lateralidad[(int)RecogidaDef.Lateralidad.Izqda]);

            //para el grupo CAMPOS de SENSORES
            ini.SetValue(GeneralDef.GrupoCampoSens, GeneralDef.GSR_id, RecogidaDef.campos_def.cons_id_sens);
            ini.SetValue(GeneralDef.GrupoCampoSens, GeneralDef.GSR_url, RecogidaDef.campos_def.cons_url_sens);
            ini.SetValue(GeneralDef.GrupoCampoSens, GeneralDef.GSR_fecha, RecogidaDef.campos_def.cons_fecha_sens);
            ini.SetValue(GeneralDef.GrupoCampoSens, GeneralDef.GSR_fechaf, RecogidaDef.campos_def.cons_fechaf_sens);

            //para el grupo CAMPOS de DATOS EXTERNOS
            ini.SetValue(GeneralDef.GrupoCampoCsv, GeneralDef.GCR_id, RecogidaDef.campos_def.cons_id_csv);
            ini.SetValue(GeneralDef.GrupoCampoCsv, GeneralDef.GCR_llen, RecogidaDef.campos_def.cons_llen_csv);
            ini.SetValue(GeneralDef.GrupoCampoCsv, GeneralDef.GCR_fecha, RecogidaDef.campos_def.cons_fecha_csv);
            ini.SetValue(GeneralDef.GrupoCampoSens, GeneralDef.GSR_fecha, RecogidaDef.campos_def.cons_fechai_csv);
            ini.SetValue(GeneralDef.GrupoCampoSens, GeneralDef.GSR_fechaf, RecogidaDef.campos_def.cons_fechaf_csv);

            //para el grupo de NOMBRES de SIMBOLOGIA de VSM
            //Nombre de simbolos VSM
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_auto, RecogidaDef.nombre_simbrec_vsm[0]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_bil, RecogidaDef.nombre_simbrec_vsm[1]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_bol, RecogidaDef.nombre_simbrec_vsm[2]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_abi, RecogidaDef.nombre_simbrec_vsm[3]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_neu, RecogidaDef.nombre_simbrec_vsm[4]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_pil, RecogidaDef.nombre_simbrec_vsm[5]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_lenv, RecogidaDef.nombre_simbrec_vsm[6]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_lpap, RecogidaDef.nombre_simbrec_vsm[7]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_lvid, RecogidaDef.nombre_simbrec_vsm[8]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_lorg, RecogidaDef.nombre_simbrec_vsm[9]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_lrest, RecogidaDef.nombre_simbrec_vsm[10]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_tenv, RecogidaDef.nombre_simbrec_vsm[11]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_tpap, RecogidaDef.nombre_simbrec_vsm[12]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_tvid, RecogidaDef.nombre_simbrec_vsm[13]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_torg, RecogidaDef.nombre_simbrec_vsm[14]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_trest, RecogidaDef.nombre_simbrec_vsm[15]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_ienv, RecogidaDef.nombre_simbrec_vsm[16]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_ipap, RecogidaDef.nombre_simbrec_vsm[17]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_ivid, RecogidaDef.nombre_simbrec_vsm[18]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_sot, RecogidaDef.nombre_simbrec_vsm[19]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_esc, LimpiezaDef.nombre_simblimp_vsm[0]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_fuen, LimpiezaDef.nombre_simblimp_vsm[1]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_jinf, LimpiezaDef.nombre_simblimp_vsm[2]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_pap, LimpiezaDef.nombre_simblimp_vsm[3]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_pniv, LimpiezaDef.nombre_simblimp_vsm[4]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_pip, LimpiezaDef.nombre_simblimp_vsm[5]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_san, LimpiezaDef.nombre_simblimp_vsm[6]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_ace, LimpiezaDef.nombre_simblimp_vsm[7]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_apar, LimpiezaDef.nombre_simblimp_vsm[8]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_bor, LimpiezaDef.nombre_simblimp_vsm[9]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_hoj, LimpiezaDef.nombre_simblimp_vsm[10]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_pea, LimpiezaDef.nombre_simblimp_vsm[11]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_terr, LimpiezaDef.nombre_simblimp_vsm[12]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_oci, LimpiezaDef.nombre_simblimp_vsm[13]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_ofi, LimpiezaDef.nombre_simblimp_vsm[14]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_par, LimpiezaDef.nombre_simblimp_vsm[15]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_park, LimpiezaDef.nombre_simblimp_vsm[16]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_pla, LimpiezaDef.nombre_simblimp_vsm[17]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_pol, LimpiezaDef.nombre_simblimp_vsm[18]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_tur, LimpiezaDef.nombre_simblimp_vsm[19]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_sol, LimpiezaDef.nombre_simblimp_vsm[20]);
            ini.SetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_sue, LimpiezaDef.nombre_simblimp_vsm[21]);

            ini.salvar();

            return true;
        }

        public static bool lee_ini_gen(out string err_str)
        {
            IniFile ini;
            RegistryKey rk, rkprg;
            string strky, str, aux = null, dir = null;
            err_str = "";

            //Variables de los directorios de trabajo donde se guardan las configuraciones
            //habrá que leerlos al arrancar de un ini, que será generado por el instalador
            //están iniciados para uso de debug

            //el path del archivo de configuración se obtiene del registro
            strky = OliviaDef.GeneralDef.OlvRegKey;
            rk = Registry.CurrentUser;
            rkprg = rk.CreateSubKey(strky);
            str = null;
            if (rkprg.ValueCount > 0)
            {
                str = (String)rkprg.GetValue("path_cfg");
                if (!string.IsNullOrEmpty(str))
                    Paths.PathCfg = str;
            }
            if(str==null)
                Paths.PathCfg = "C:\\Olivia\\cfg.ini"; //por defecto

            ini = new IniFile(Paths.PathCfg, false);
            if (ini == null)
            {
                err_str = "Error al leer el archivo de configuración";
                return false;
            }

            try
            {

                //inicializa las variables por defecto
                ini_default();

                //para el grupo de opciones generales
                Paths.PathWork = ini.GetValue(GeneralDef.GrupoGen, GeneralDef.GG_pw, Paths.PathWork);
                dir = Paths.PathWork;

                //para el grupo GDB
                aux = ini.GetValue(GeneralDef.GrupoGDB, GeneralDef.GDB_gen, Paths.PathGdbGen);
                Paths.PathGdbGen = pon_path_absoluto(aux, dir);
                aux = ini.GetValue(GeneralDef.GrupoGDB, GeneralDef.GDB_nw, Paths.PathGdbNw);
                Paths.PathGdbNw = pon_path_absoluto(aux, dir);
                aux = ini.GetValue(GeneralDef.GrupoGDB, GeneralDef.simb_vsm, Paths.PathSimbVSM);
                Paths.PathSimbVSM = pon_path_absoluto(aux, dir);
                aux = ini.GetValue(GeneralDef.GrupoGDB, GeneralDef.simb_esri, Paths.PathSimbESRI);
                Paths.PathSimbESRI = pon_path_absoluto(aux, dir);
                puerto = ini.GetValue(GeneralDef.GrupoGDB, GeneralDef.GDB_puerto, puerto);
                OliviaGlob.buff_export = ini.GetValue(GeneralDef.GrupoGDB, GeneralDef.GG_buff, 1000);       //para el buffer
                
                //para el grupo de opciones generales            
                aux = ini.GetValue(GeneralDef.GrupoGen, GeneralDef.GG_pg, Paths.PathGeofoto);
                Paths.PathGeofoto = pon_path_absoluto(aux, dir);
                aux = ini.GetValue(GeneralDef.GrupoGen, GeneralDef.GG_pt, Paths.PathTemp);
                Paths.PathTemp = pon_path_absoluto(aux, dir);
                aux = ini.GetValue(GeneralDef.GrupoGen, GeneralDef.GG_pd, Paths.DirData);
                Paths.DirData = pon_path_absoluto(aux, dir);
                aux = ini.GetValue(GeneralDef.GrupoGDB, GeneralDef.GDB_nw, Paths.PathGdbNw);
                Paths.PathGdbNw = pon_path_absoluto(aux, dir);
                aux = ini.GetValue(GeneralDef.GrupoGen, GeneralDef.GG_pcar, Paths.PathCartela);
                Paths.PathCartela = pon_path_absoluto(aux, dir);

                //para el grupo de CAPAS GENERALES
                OliviaGlob.Capas.ftclass_ejes = ini.GetValue(GeneralDef.GrupoCapa, GeneralDef.GC_eje, OliviaGlob.Capas.ftclass_ejes);
                OliviaGlob.Capas.ftclass_zonas = ini.GetValue(GeneralDef.GrupoCapa, GeneralDef.GC_zon, OliviaGlob.Capas.ftclass_zonas);
                OliviaGlob.Capas.ftclass_restri = ini.GetValue(GeneralDef.GrupoCapa, GeneralDef.GC_rest, OliviaGlob.Capas.ftclass_restri);
                OliviaGlob.Capas.ftclass_muni = ini.GetValue(GeneralDef.GrupoCapa, GeneralDef.GC_muni, OliviaGlob.Capas.ftclass_muni);                                

                //para el grupo CAPAS de LIMPIEZA
                LimpiezaDef.Capas.ftclass_niveles = ini.GetValue(GeneralDef.GrupoCapaLImp, GeneralDef.GCA_niv, LimpiezaDef.Capas.ftclass_niveles);
                LimpiezaDef.Capas.ftclass_cont = ini.GetValue(GeneralDef.GrupoCapaLImp, GeneralDef.GCA_cont, LimpiezaDef.Capas.ftclass_cont);
                LimpiezaDef.Capas.ftclass_mobi = ini.GetValue(GeneralDef.GrupoCapaLImp, GeneralDef.GCA_mobi, LimpiezaDef.Capas.ftclass_mobi);
                LimpiezaDef.Capas.ftclass_limp_mec = ini.GetValue(GeneralDef.GrupoCapaLImp, GeneralDef.GCA_limp, LimpiezaDef.Capas.ftclass_limp_mec);
                LimpiezaDef.Capas.ftclass_instala = ini.GetValue(GeneralDef.GrupoCapaLImp, GeneralDef.GCA_inst, LimpiezaDef.Capas.ftclass_instala);

                //para el grupo CAMPOS de LIMPIEZA
                LimpiezaDef.Campos.consulta_entidad = ini.GetValue(GeneralDef.GrupoCampoLimp, GeneralDef.GAA_entid, LimpiezaDef.Campos.consulta_entidad);
                LimpiezaDef.Campos.consulta_mecan = ini.GetValue(GeneralDef.GrupoCampoLimp, GeneralDef.GAA_mecan, LimpiezaDef.Campos.consulta_mecan);

                //para el grupo de ATRIBUTOS de LIMPIEZA
                LimpiezaDef.Atributos.atr_esca = ini.GetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_esc, LimpiezaDef.Atributos.atr_esca);
                LimpiezaDef.Atributos.atr_fuent = ini.GetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_fuent, LimpiezaDef.Atributos.atr_fuent);
                LimpiezaDef.Atributos.atr_infan = ini.GetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_infan, LimpiezaDef.Atributos.atr_infan);
                LimpiezaDef.Atributos.atr_pape = ini.GetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_pape, LimpiezaDef.Atributos.atr_pape);
                LimpiezaDef.Atributos.atr_paso_niv = ini.GetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_paso_niv, LimpiezaDef.Atributos.atr_paso_niv);
                LimpiezaDef.Atributos.atr_pipi = ini.GetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_pipi, LimpiezaDef.Atributos.atr_pipi);
                LimpiezaDef.Atributos.atr_sane = ini.GetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_sane, LimpiezaDef.Atributos.atr_sane);
                LimpiezaDef.Atributos.atr_acera = ini.GetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_acera, LimpiezaDef.Atributos.atr_acera);
                LimpiezaDef.Atributos.atr_aparc = ini.GetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_aparc, LimpiezaDef.Atributos.atr_aparc);
                LimpiezaDef.Atributos.atr_bord = ini.GetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_bord, LimpiezaDef.Atributos.atr_bord);
                LimpiezaDef.Atributos.atr_hoja = ini.GetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_hoja, LimpiezaDef.Atributos.atr_hoja);
                LimpiezaDef.Atributos.atr_peat = ini.GetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_peat, LimpiezaDef.Atributos.atr_peat);
                LimpiezaDef.Atributos.atr_terri = ini.GetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_terri, LimpiezaDef.Atributos.atr_terri);
                LimpiezaDef.Atributos.atr_ocio = ini.GetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_ocio, LimpiezaDef.Atributos.atr_ocio);
                LimpiezaDef.Atributos.atr_org_ofi = ini.GetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_org_ofi, LimpiezaDef.Atributos.atr_org_ofi);
                LimpiezaDef.Atributos.atr_parq = ini.GetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_parq, LimpiezaDef.Atributos.atr_parq);
                LimpiezaDef.Atributos.atr_park = ini.GetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_park, LimpiezaDef.Atributos.atr_park);
                LimpiezaDef.Atributos.atr_play = ini.GetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_play, LimpiezaDef.Atributos.atr_play);
                LimpiezaDef.Atributos.atr_polid = ini.GetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_polid, LimpiezaDef.Atributos.atr_polid);
                LimpiezaDef.Atributos.atr_turis = ini.GetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_turis, LimpiezaDef.Atributos.atr_turis);
                LimpiezaDef.Atributos.atr_solar = ini.GetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_solar, LimpiezaDef.Atributos.atr_solar);
                LimpiezaDef.Atributos.atr_suelo = ini.GetValue(GeneralDef.GrupoAtribLimp, GeneralDef.GAL_suelo, LimpiezaDef.Atributos.atr_suelo);

                //para el grupo FILTROS de LIMPIEZA
                LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbEjeCalle] =
                    ini.GetValue(GeneralDef.GrupoFiltLimp, GeneralDef.GFA_eje, LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbEjeCalle]);
                LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbBordLibreMec] =
                    ini.GetValue(GeneralDef.GrupoFiltLimp, GeneralDef.GFA_blm, LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbBordLibreMec]);
                LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbBordLibreNoMec] =
                    ini.GetValue(GeneralDef.GrupoFiltLimp, GeneralDef.GFA_blnm, LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbBordLibreNoMec]);
                LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbBordAparc] =
                    ini.GetValue(GeneralDef.GrupoFiltLimp, GeneralDef.GFA_ba, LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbBordAparc]);
                LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbAceMec] =
                    ini.GetValue(GeneralDef.GrupoFiltLimp, GeneralDef.GFA_bam, LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbAceMec]);
                LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbAceNoMec] =
                    ini.GetValue(GeneralDef.GrupoFiltLimp, GeneralDef.GFA_banm, LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbAceNoMec]);
                LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbCallePeatMec] =
                    ini.GetValue(GeneralDef.GrupoFiltLimp, GeneralDef.GFA_cpm, LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbCallePeatMec]);
                LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbCallePeatNoMec] =
                    ini.GetValue(GeneralDef.GrupoFiltLimp, GeneralDef.GFA_cpnm, LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbCallePeatNoMec]);
                LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbBordHojaMec] =
                    ini.GetValue(GeneralDef.GrupoFiltLimp, GeneralDef.GFA_chm, LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbBordHojaMec]);
                LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbBordHojaNoMec] =
                    ini.GetValue(GeneralDef.GrupoFiltLimp, GeneralDef.GFA_chnm, LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbBordHojaNoMec]);
                LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbConte] =
                    ini.GetValue(GeneralDef.GrupoFiltLimp, GeneralDef.GFA_cont, LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbConte]);
                LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbPape] =
                    ini.GetValue(GeneralDef.GrupoFiltLimp, GeneralDef.GFA_pap, LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbPape]);
                LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbZInf] =
                    ini.GetValue(GeneralDef.GrupoFiltLimp, GeneralDef.GFA_inf, LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbZInf]);
                LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbPipi] =
                    ini.GetValue(GeneralDef.GrupoFiltLimp, GeneralDef.GFA_pipi, LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbPipi]);
                LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbSane] =
                    ini.GetValue(GeneralDef.GrupoFiltLimp, GeneralDef.GFA_sane, LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbSane]);

                //para el grupo PARAMETROS de LIMPIEZA
                LimpiezaDef.Parametros.t_ttoM = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoM, LimpiezaDef.Parametros.t_ttoM);
                LimpiezaDef.Parametros.t_ttom = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttom, LimpiezaDef.Parametros.t_ttom);
                LimpiezaDef.Parametros.v_despM = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_v_despM, LimpiezaDef.Parametros.v_despM);
                LimpiezaDef.Parametros.v_despm = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_v_despm, LimpiezaDef.Parametros.v_despm);
                LimpiezaDef.Parametros.t_cardescM = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_cardescM, LimpiezaDef.Parametros.t_cardescM);
                LimpiezaDef.Parametros.t_cardescm = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_cardescm, LimpiezaDef.Parametros.t_cardescm);
                LimpiezaDef.Parametros.t_cardesc = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_cardesc, LimpiezaDef.Parametros.t_cardesc);
                LimpiezaDef.Parametros.t_despM = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_t_despM, LimpiezaDef.Parametros.t_despM);
                LimpiezaDef.Parametros.t_despm = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_t_despm, LimpiezaDef.Parametros.t_despm);
                LimpiezaDef.Parametros.t_desp = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_t_desp, LimpiezaDef.Parametros.t_desp);
                LimpiezaDef.Parametros.t_convM = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_convM, LimpiezaDef.Parametros.t_convM);
                LimpiezaDef.Parametros.t_convm = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_convm, LimpiezaDef.Parametros.t_convm);
                LimpiezaDef.Parametros.t_conv = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_conv, LimpiezaDef.Parametros.t_conv);
                LimpiezaDef.Parametros.t_descansoM = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_descM, LimpiezaDef.Parametros.t_descansoM);
                LimpiezaDef.Parametros.t_descansom = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_descm, LimpiezaDef.Parametros.t_descansom);
                LimpiezaDef.Parametros.t_descanso = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_desc, LimpiezaDef.Parametros.t_descanso);
                LimpiezaDef.Parametros.h_inicio = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_h_inicio, LimpiezaDef.Parametros.h_inicio);
                LimpiezaDef.Parametros.ancho_viaM = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_anchM, LimpiezaDef.Parametros.ancho_viaM);
                LimpiezaDef.Parametros.ancho_viam = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_anchm, LimpiezaDef.Parametros.ancho_viam);
                LimpiezaDef.Parametros.ancho_via = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_anch, LimpiezaDef.Parametros.ancho_via);
                LimpiezaDef.Parametros.ttoBarMan = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoBarMan, LimpiezaDef.Parametros.ttoBarMan);
                LimpiezaDef.Parametros.ttoBarManMant = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoBarManMant, LimpiezaDef.Parametros.ttoBarManMant);
                LimpiezaDef.Parametros.ttoBarMMot = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoBarMMot, LimpiezaDef.Parametros.ttoBarMMot);
                LimpiezaDef.Parametros.ttoBarMC = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoBarMC, LimpiezaDef.Parametros.ttoBarMC);
                LimpiezaDef.Parametros.ttoBarMAP = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoBarMAP, LimpiezaDef.Parametros.ttoBarMAP);
                LimpiezaDef.Parametros.ttoBarMix = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoBarMix, LimpiezaDef.Parametros.ttoBarMix);
                LimpiezaDef.Parametros.ttoBalMan = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoBalMan, LimpiezaDef.Parametros.ttoBalMan);
                LimpiezaDef.Parametros.ttoBalMC = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoBalMC, LimpiezaDef.Parametros.ttoBalMC);
                LimpiezaDef.Parametros.ttoBalMAP = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoBalMAP, LimpiezaDef.Parametros.ttoBalMAP);
                LimpiezaDef.Parametros.ttoBalMix = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoBalMix, LimpiezaDef.Parametros.ttoBalMix);
                LimpiezaDef.Parametros.ttoBL = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoBL, LimpiezaDef.Parametros.ttoBL);
                LimpiezaDef.Parametros.ttoCH = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoCH, LimpiezaDef.Parametros.ttoCH);
                LimpiezaDef.Parametros.ttoVPap = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoVPap, LimpiezaDef.Parametros.ttoVPap);
                LimpiezaDef.Parametros.ttoLPap = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoLPap, LimpiezaDef.Parametros.ttoLPap);
                LimpiezaDef.Parametros.ttoLC = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoLC, LimpiezaDef.Parametros.ttoLC);
                LimpiezaDef.Parametros.ttoLZI = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoLZI, LimpiezaDef.Parametros.ttoLZI);
                LimpiezaDef.Parametros.ttoLPip = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoLPip, LimpiezaDef.Parametros.ttoLPip);
                LimpiezaDef.Parametros.ttoLS = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_ttoLS, LimpiezaDef.Parametros.ttoLS);
                LimpiezaDef.Parametros.vdespBarMan = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespBarMan, LimpiezaDef.Parametros.vdespBarMan);
                LimpiezaDef.Parametros.vdespBarManMant = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespBarManMant, LimpiezaDef.Parametros.vdespBarManMant);
                LimpiezaDef.Parametros.vdespBarMMot = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespBarMMot, LimpiezaDef.Parametros.vdespBarMMot);
                LimpiezaDef.Parametros.vdespBarMC = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespBarMC, LimpiezaDef.Parametros.vdespBarMC);
                LimpiezaDef.Parametros.vdespBarMAP = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespBarMAP, LimpiezaDef.Parametros.vdespBarMAP);
                LimpiezaDef.Parametros.vdespBarMix = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespBarMix, LimpiezaDef.Parametros.vdespBarMix);
                LimpiezaDef.Parametros.vdespBalMan = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespBalMan, LimpiezaDef.Parametros.vdespBalMan);
                LimpiezaDef.Parametros.vdespBalMC = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespBalMC, LimpiezaDef.Parametros.vdespBalMC);
                LimpiezaDef.Parametros.vdespBalMAP = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespBalMAP, LimpiezaDef.Parametros.vdespBalMAP);
                LimpiezaDef.Parametros.vdespBalMix = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespBalMix, LimpiezaDef.Parametros.vdespBalMix);
                LimpiezaDef.Parametros.vdespBL = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespBL, LimpiezaDef.Parametros.vdespBL);
                LimpiezaDef.Parametros.vdespCH = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespCH, LimpiezaDef.Parametros.vdespCH);
                LimpiezaDef.Parametros.vdespVPap = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespVPap, LimpiezaDef.Parametros.vdespVPap);
                LimpiezaDef.Parametros.vdespLPap = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespLPap, LimpiezaDef.Parametros.vdespLPap);
                LimpiezaDef.Parametros.vdespLC = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespLC, LimpiezaDef.Parametros.vdespLC);
                LimpiezaDef.Parametros.vdespLZI = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespLZI, LimpiezaDef.Parametros.vdespLZI);
                LimpiezaDef.Parametros.vdespLPip = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespLPip, LimpiezaDef.Parametros.vdespLPip);
                LimpiezaDef.Parametros.vdespLS = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_vdespLS, LimpiezaDef.Parametros.vdespLS);
                LimpiezaDef.Parametros.umbral_reco = ini.GetValue(GeneralDef.GrupoParamLimp, GeneralDef.GPA_umbral_reco, LimpiezaDef.Parametros.umbral_reco);

                ////////////////////////
                //para el grupo CAMPOS de RECOGIDA
                RecogidaDef.campos_def.cons_id = ini.GetValue(GeneralDef.GrupoCampoReco, GeneralDef.GAR_id, RecogidaDef.campos_def.cons_id);
                RecogidaDef.campos_def.cons_nomrec = ini.GetValue(GeneralDef.GrupoCampoReco, GeneralDef.GAR_nomrec, RecogidaDef.campos_def.cons_nomrec);
                RecogidaDef.campos_def.cons_lateral = ini.GetValue(GeneralDef.GrupoCampoReco, GeneralDef.GAR_lateral, RecogidaDef.campos_def.cons_lateral);
                RecogidaDef.campos_def.cons_fracc = ini.GetValue(GeneralDef.GrupoCampoReco, GeneralDef.GAR_frac, RecogidaDef.campos_def.cons_fracc);
                RecogidaDef.campos_def.cons_capac = ini.GetValue(GeneralDef.GrupoCampoReco, GeneralDef.GAR_capac, RecogidaDef.campos_def.cons_capac);
                RecogidaDef.campos_def.cons_uds = ini.GetValue(GeneralDef.GrupoCampoReco, GeneralDef.GAR_uds, RecogidaDef.campos_def.cons_uds);
                RecogidaDef.campos_def.cons_kgrec = ini.GetValue(GeneralDef.GrupoCampoReco, GeneralDef.GAR_kgrec, RecogidaDef.campos_def.cons_kgrec);
                RecogidaDef.kgrec_cont = ini.GetValue(GeneralDef.GrupoCampoReco, GeneralDef.GAR_kgrec_val, RecogidaDef.kgrec_cont);
                RecogidaDef.lleno = ini.GetValue(GeneralDef.GrupoCampoReco, GeneralDef.GAR_is_lleno, RecogidaDef.lleno);
                RecogidaDef.kgrec_camp = ini.GetValue(GeneralDef.GrupoCampoReco, GeneralDef.GAR_is_campo, RecogidaDef.kgrec_camp);
                
                //para el grupo de ATRIBUTOS de RECOGIDA
                //Rellena los tipos de fracción
                RecogidaDef.tipos_fracc_str[(int)RecogidaDef.TiposFracción.Organica] = ini.GetValue(GeneralDef.GrupoAtribReco, GeneralDef.GAT_organica, RecogidaDef.tipos_fracc_str[(int)RecogidaDef.TiposFracción.Organica]);
                RecogidaDef.tipos_fracc_str[(int)RecogidaDef.TiposFracción.Resto] = ini.GetValue(GeneralDef.GrupoAtribReco, GeneralDef.GAT_resto, RecogidaDef.tipos_fracc_str[(int)RecogidaDef.TiposFracción.Resto]);
                RecogidaDef.tipos_fracc_str[(int)RecogidaDef.TiposFracción.Envases] = ini.GetValue(GeneralDef.GrupoAtribReco, GeneralDef.GAT_envase, RecogidaDef.tipos_fracc_str[(int)RecogidaDef.TiposFracción.Envases]);
                RecogidaDef.tipos_fracc_str[(int)RecogidaDef.TiposFracción.Papel] = ini.GetValue(GeneralDef.GrupoAtribReco, GeneralDef.GAT_papel, RecogidaDef.tipos_fracc_str[(int)RecogidaDef.TiposFracción.Papel]);
                RecogidaDef.tipos_fracc_str[(int)RecogidaDef.TiposFracción.Vidrio] = ini.GetValue(GeneralDef.GrupoAtribReco, GeneralDef.GAT_vidrio, RecogidaDef.tipos_fracc_str[(int)RecogidaDef.TiposFracción.Vidrio]);
                //Rellena los tipos de carga
                RecogidaDef.tipos_carg_str[(int)RecogidaDef.TiposCarga.Trasera] = ini.GetValue(GeneralDef.GrupoAtribReco, GeneralDef.GAT_trasera, RecogidaDef.tipos_carg_str[(int)RecogidaDef.TiposCarga.Trasera]);
                RecogidaDef.tipos_carg_str[(int)RecogidaDef.TiposCarga.Lateral] = ini.GetValue(GeneralDef.GrupoAtribReco, GeneralDef.GAT_lateral, RecogidaDef.tipos_carg_str[(int)RecogidaDef.TiposCarga.Lateral]);
                RecogidaDef.tipos_carg_str[(int)RecogidaDef.TiposCarga.Superior] = ini.GetValue(GeneralDef.GrupoAtribReco, GeneralDef.GAT_superior, RecogidaDef.tipos_carg_str[(int)RecogidaDef.TiposCarga.Superior]);
                RecogidaDef.tipos_carg_str[(int)RecogidaDef.TiposCarga.Bilateral] = ini.GetValue(GeneralDef.GrupoAtribReco, GeneralDef.GAT_bilat, RecogidaDef.tipos_carg_str[(int)RecogidaDef.TiposCarga.Bilateral]);
                RecogidaDef.tipos_carg_str[(int)RecogidaDef.TiposCarga.BolseoPtaPta] = ini.GetValue(GeneralDef.GrupoAtribReco, GeneralDef.GAT_bolseo, RecogidaDef.tipos_carg_str[(int)RecogidaDef.TiposCarga.BolseoPtaPta]);
                RecogidaDef.tipos_carg_str[(int)RecogidaDef.TiposCarga.Lavado] = ini.GetValue(GeneralDef.GrupoAtribReco, GeneralDef.GAT_lavado, RecogidaDef.tipos_carg_str[(int)RecogidaDef.TiposCarga.Lavado]);

                //para el grupo PARAMETROS de RECOGIDA
                RecogidaDef.Parametros.t_vaciM = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_vaciM, RecogidaDef.Parametros.t_vaciM);
                RecogidaDef.Parametros.t_vacim = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_vacim, RecogidaDef.Parametros.t_vacim);
                RecogidaDef.Parametros.t_llegsalM = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_llegsalM, RecogidaDef.Parametros.t_llegsalM);
                RecogidaDef.Parametros.t_llegsalm = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_llegsalm, RecogidaDef.Parametros.t_llegsalm);
                RecogidaDef.Parametros.t_llegsal = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_llegsal, RecogidaDef.Parametros.t_llegsal);
                RecogidaDef.Parametros.t_descM = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_descM, RecogidaDef.Parametros.t_descM);
                RecogidaDef.Parametros.t_descm = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_descm, RecogidaDef.Parametros.t_descm);
                RecogidaDef.Parametros.t_desc = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_desc, RecogidaDef.Parametros.t_desc);
                RecogidaDef.Parametros.t_convM = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_convM, RecogidaDef.Parametros.t_convM);
                RecogidaDef.Parametros.t_convm = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_convm, RecogidaDef.Parametros.t_convm);
                RecogidaDef.Parametros.t_conv = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_conv, RecogidaDef.Parametros.t_conv);
                RecogidaDef.Parametros.t_descansoM = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_descansoM, RecogidaDef.Parametros.t_descansoM);
                RecogidaDef.Parametros.t_descansom = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_descansom, RecogidaDef.Parametros.t_descansom);
                RecogidaDef.Parametros.t_descanso = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_descanso, RecogidaDef.Parametros.t_descanso);
                RecogidaDef.Parametros.h_inicio = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_h_inicio, RecogidaDef.Parametros.h_inicio);
                RecogidaDef.Parametros.dens_vehi_org = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_dv_org, RecogidaDef.Parametros.dens_vehi_org);
                RecogidaDef.Parametros.dens_vehi_res = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_dv_res, RecogidaDef.Parametros.dens_vehi_res);
                RecogidaDef.Parametros.dens_vehi_env = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_dv_env, RecogidaDef.Parametros.dens_vehi_env);
                RecogidaDef.Parametros.dens_vehi_pap = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_dv_pap, RecogidaDef.Parametros.dens_vehi_pap);
                RecogidaDef.Parametros.dens_vehi_vid = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_dv_vid, RecogidaDef.Parametros.dens_vehi_vid);
                RecogidaDef.Parametros.dens_vehi_otr = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_dv_otr, RecogidaDef.Parametros.dens_vehi_otr);
                RecogidaDef.Parametros.dens_cont_org = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_dc_org, RecogidaDef.Parametros.dens_cont_org);
                RecogidaDef.Parametros.dens_cont_res = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_dc_res, RecogidaDef.Parametros.dens_cont_res);
                RecogidaDef.Parametros.dens_cont_env = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_dc_env, RecogidaDef.Parametros.dens_cont_env);
                RecogidaDef.Parametros.dens_cont_pap = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_dc_pap, RecogidaDef.Parametros.dens_cont_pap);
                RecogidaDef.Parametros.dens_cont_vid = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_dc_vid, RecogidaDef.Parametros.dens_cont_vid);
                RecogidaDef.Parametros.dens_cont_otr = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_dc_otr, RecogidaDef.Parametros.dens_cont_otr);
                RecogidaDef.Parametros.anch_vehi_3 = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_anchv_3, RecogidaDef.Parametros.anch_vehi_3);
                RecogidaDef.Parametros.anch_vehi_2 = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_anchv_2, RecogidaDef.Parametros.anch_vehi_2);
                RecogidaDef.Parametros.anch_vehi_s = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_anchv_s, RecogidaDef.Parametros.anch_vehi_s);
                RecogidaDef.Parametros.rad_giro_3 = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_rgiro_3, RecogidaDef.Parametros.rad_giro_3);
                RecogidaDef.Parametros.rad_giro_2 = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_rgiro_2, RecogidaDef.Parametros.rad_giro_2);
                RecogidaDef.Parametros.rad_giro_s = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_rgiro_s, RecogidaDef.Parametros.rad_giro_s);
                RecogidaDef.Parametros.t_vaci_tra = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_tv_tra, RecogidaDef.Parametros.t_vaci_tra);
                RecogidaDef.Parametros.t_vaci_lat = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_tv_lat, RecogidaDef.Parametros.t_vaci_lat);
                RecogidaDef.Parametros.t_vaci_sup = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_tv_sup, RecogidaDef.Parametros.t_vaci_sup);
                RecogidaDef.Parametros.t_vaci_bi = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_tv_bi, RecogidaDef.Parametros.t_vaci_bi);
                RecogidaDef.Parametros.t_vaci_bol = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_tv_bol, RecogidaDef.Parametros.t_vaci_bol);
                RecogidaDef.Parametros.t_vaci_lav = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_tv_lav, RecogidaDef.Parametros.t_vaci_lav);
                RecogidaDef.Parametros.t_vaci_otr = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_tv_otr, RecogidaDef.Parametros.t_vaci_otr);
                RecogidaDef.Parametros.kgmaxM = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_kgmaxM, RecogidaDef.Parametros.kgmaxM);
                RecogidaDef.Parametros.kgmaxm = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_kgmaxm, RecogidaDef.Parametros.kgmaxm);
                RecogidaDef.Parametros.carga_maxM = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_carga_maxM, RecogidaDef.Parametros.carga_maxM);
                RecogidaDef.Parametros.carga_maxm = ini.GetValue(GeneralDef.GrupoParamReco, GeneralDef.GPR_carga_maxm, RecogidaDef.Parametros.carga_maxm);

                //para el grupo ATRIBUTOS de LATERALIDAD
                RecogidaDef.tipos_lateralidad[(int)RecogidaDef.Lateralidad.Ambos] = ini.GetValue(GeneralDef.GrupoCampoLater, GeneralDef.GAL_amb, RecogidaDef.tipos_lateralidad[(int)RecogidaDef.Lateralidad.Ambos]);
                RecogidaDef.tipos_lateralidad[(int)RecogidaDef.Lateralidad.Dcha] = ini.GetValue(GeneralDef.GrupoCampoLater, GeneralDef.GAL_dcha, RecogidaDef.tipos_lateralidad[(int)RecogidaDef.Lateralidad.Dcha]);
                RecogidaDef.tipos_lateralidad[(int)RecogidaDef.Lateralidad.Izqda] = ini.GetValue(GeneralDef.GrupoCampoLater, GeneralDef.GAL_izq, RecogidaDef.tipos_lateralidad[(int)RecogidaDef.Lateralidad.Izqda]);

                //para el grupo CAMPOS de SENSORES
                RecogidaDef.campos_def.cons_id_sens = ini.GetValue(GeneralDef.GrupoCampoSens, GeneralDef.GSR_id, RecogidaDef.campos_def.cons_id_sens);
                RecogidaDef.campos_def.cons_url_sens = ini.GetValue(GeneralDef.GrupoCampoSens, GeneralDef.GSR_url, RecogidaDef.campos_def.cons_url_sens);
                RecogidaDef.campos_def.cons_fecha_sens = ini.GetValue(GeneralDef.GrupoCampoSens, GeneralDef.GSR_fecha, RecogidaDef.campos_def.cons_fecha_sens);
                RecogidaDef.campos_def.cons_fechaf_sens = ini.GetValue(GeneralDef.GrupoCampoSens, GeneralDef.GSR_fechaf, RecogidaDef.campos_def.cons_fechaf_sens);

                //para el grupo CAMPOS de DATOS EXTERNOS
                RecogidaDef.campos_def.cons_id_csv = ini.GetValue(GeneralDef.GrupoCampoCsv, GeneralDef.GCR_id, RecogidaDef.campos_def.cons_id_csv);
                RecogidaDef.campos_def.cons_llen_csv = ini.GetValue(GeneralDef.GrupoCampoCsv, GeneralDef.GCR_llen, RecogidaDef.campos_def.cons_llen_csv);
                RecogidaDef.campos_def.cons_fecha_csv = ini.GetValue(GeneralDef.GrupoCampoCsv, GeneralDef.GCR_fecha, RecogidaDef.campos_def.cons_fecha_csv);
                RecogidaDef.campos_def.cons_fechai_csv = ini.GetValue(GeneralDef.GrupoCampoSens, GeneralDef.GSR_fecha, RecogidaDef.campos_def.cons_fechai_csv);
                RecogidaDef.campos_def.cons_fechaf_csv = ini.GetValue(GeneralDef.GrupoCampoSens, GeneralDef.GSR_fechaf, RecogidaDef.campos_def.cons_fechaf_csv);

                //para el grupo de NOMBRES de SIMBOLOGIA de VSM
                //Nombre de simbolos VSM
                RecogidaDef.nombre_simbrec_vsm[0] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_auto, RecogidaDef.nombre_simbrec_vsm[0]);
                RecogidaDef.nombre_simbrec_vsm[1] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_bil, RecogidaDef.nombre_simbrec_vsm[1]);
                RecogidaDef.nombre_simbrec_vsm[2] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_bol, RecogidaDef.nombre_simbrec_vsm[2]);
                RecogidaDef.nombre_simbrec_vsm[3] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_abi, RecogidaDef.nombre_simbrec_vsm[3]);
                RecogidaDef.nombre_simbrec_vsm[4] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_neu, RecogidaDef.nombre_simbrec_vsm[4]);
                RecogidaDef.nombre_simbrec_vsm[5] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_pil, RecogidaDef.nombre_simbrec_vsm[5]);
                RecogidaDef.nombre_simbrec_vsm[6] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_lenv, RecogidaDef.nombre_simbrec_vsm[6]);
                RecogidaDef.nombre_simbrec_vsm[7] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_lpap, RecogidaDef.nombre_simbrec_vsm[7]);
                RecogidaDef.nombre_simbrec_vsm[8] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_lvid, RecogidaDef.nombre_simbrec_vsm[8]);
                RecogidaDef.nombre_simbrec_vsm[9] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_lorg, RecogidaDef.nombre_simbrec_vsm[9]);
                RecogidaDef.nombre_simbrec_vsm[10] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_lrest, RecogidaDef.nombre_simbrec_vsm[10]);
                RecogidaDef.nombre_simbrec_vsm[11] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_tenv, RecogidaDef.nombre_simbrec_vsm[11]);
                RecogidaDef.nombre_simbrec_vsm[12] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_tpap, RecogidaDef.nombre_simbrec_vsm[12]);
                RecogidaDef.nombre_simbrec_vsm[13] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_tvid, RecogidaDef.nombre_simbrec_vsm[13]);
                RecogidaDef.nombre_simbrec_vsm[14] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_torg, RecogidaDef.nombre_simbrec_vsm[14]);
                RecogidaDef.nombre_simbrec_vsm[15] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_trest, RecogidaDef.nombre_simbrec_vsm[15]);
                RecogidaDef.nombre_simbrec_vsm[16] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_ienv, RecogidaDef.nombre_simbrec_vsm[16]);
                RecogidaDef.nombre_simbrec_vsm[17] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_ipap, RecogidaDef.nombre_simbrec_vsm[17]);
                RecogidaDef.nombre_simbrec_vsm[18] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_ivid, RecogidaDef.nombre_simbrec_vsm[18]);
                RecogidaDef.nombre_simbrec_vsm[19] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_sot, RecogidaDef.nombre_simbrec_vsm[19]);
                LimpiezaDef.nombre_simblimp_vsm[0] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_esc, LimpiezaDef.nombre_simblimp_vsm[0]);
                LimpiezaDef.nombre_simblimp_vsm[1] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_fuen, LimpiezaDef.nombre_simblimp_vsm[1]);
                LimpiezaDef.nombre_simblimp_vsm[2] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_jinf, LimpiezaDef.nombre_simblimp_vsm[2]);
                LimpiezaDef.nombre_simblimp_vsm[3] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_pap, LimpiezaDef.nombre_simblimp_vsm[3]);
                LimpiezaDef.nombre_simblimp_vsm[4] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_pniv, LimpiezaDef.nombre_simblimp_vsm[4]);
                LimpiezaDef.nombre_simblimp_vsm[5] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_pip, LimpiezaDef.nombre_simblimp_vsm[5]);
                LimpiezaDef.nombre_simblimp_vsm[6] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_san, LimpiezaDef.nombre_simblimp_vsm[6]);
                LimpiezaDef.nombre_simblimp_vsm[7] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_ace, LimpiezaDef.nombre_simblimp_vsm[7]);
                LimpiezaDef.nombre_simblimp_vsm[8] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_apar, LimpiezaDef.nombre_simblimp_vsm[8]);
                LimpiezaDef.nombre_simblimp_vsm[9] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_bor, LimpiezaDef.nombre_simblimp_vsm[9]);
                LimpiezaDef.nombre_simblimp_vsm[10] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_hoj, LimpiezaDef.nombre_simblimp_vsm[10]);
                LimpiezaDef.nombre_simblimp_vsm[11] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_pea, LimpiezaDef.nombre_simblimp_vsm[11]);
                LimpiezaDef.nombre_simblimp_vsm[12] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_terr, LimpiezaDef.nombre_simblimp_vsm[12]);
                LimpiezaDef.nombre_simblimp_vsm[13] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_oci, LimpiezaDef.nombre_simblimp_vsm[13]);
                LimpiezaDef.nombre_simblimp_vsm[14] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_ofi, LimpiezaDef.nombre_simblimp_vsm[14]);
                LimpiezaDef.nombre_simblimp_vsm[15] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_par, LimpiezaDef.nombre_simblimp_vsm[15]);
                LimpiezaDef.nombre_simblimp_vsm[16] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_park, LimpiezaDef.nombre_simblimp_vsm[16]);
                LimpiezaDef.nombre_simblimp_vsm[17] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_pla, LimpiezaDef.nombre_simblimp_vsm[17]);
                LimpiezaDef.nombre_simblimp_vsm[18] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_pol, LimpiezaDef.nombre_simblimp_vsm[18]);
                LimpiezaDef.nombre_simblimp_vsm[19] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_tur, LimpiezaDef.nombre_simblimp_vsm[19]);
                LimpiezaDef.nombre_simblimp_vsm[20] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_sol, LimpiezaDef.nombre_simblimp_vsm[20]);
                LimpiezaDef.nombre_simblimp_vsm[21] = ini.GetValue(GeneralDef.GrupoSimbVsm, GeneralDef.GSV_sue, LimpiezaDef.nombre_simblimp_vsm[21]);

                //se inicializa aqui gdb_limp porque si se hace en el constructor iniciliza tambien la clase DatosGDBLimp.
                //En el constructor de DatosGDBLimp hay una función (rellena_ftclass()) que depende de esta (lee_ini_gen()).
                //se accederia antes a rellena_ftclass() que a esta funcion (lee_ini_gen()) y habría errores.
                                
            }
            catch
            {
                err_str = "Error al coger información del archivo de configuración";
                return false;
            }

            return true;
        }

        /**
         * Inicializa los nombres por defecto de las variables, para debug por si no hay instalador
         */ 
        public static void ini_default()
        {
            Paths.PathWork = "C:\\Olivia\\";
            Paths.PathGeofoto = "C:\\Desa\\geobin\\Debug\\geofoto.exe";
            Paths.DirData = "C:\\Olivia\\data\\";
            Paths.PathTemp = "C:\\Olivia\\temp\\";
            Paths.PathCartela = "C:\\olivia\\data\\Plantilla.mxd";

            Paths.PathGdbGen="C:\\Olivia\\gdb\\BASE DE DATOS.gdb";
            Paths.PathGdbNw = "C:\\Datos ejemplo\\BUENO\\Multinet_Q4_2015\\TomTom_Q4_2015.gdb";
            Paths.PathSimbVSM = "C:\\Olivia\\styles\\Simbologia.style";
            Paths.PathSimbESRI = "C:\\Olivia\\styles\\ESRI.style";
            puerto = 19995;
            buff_export = 1000;

            ///////////////////////////////////////
            //Capas, consultas y filtros GENERALES
            Capas.ftclass_ejes = "TomTom_Q4_2015___nw";
            Capas.ftclass_zonas = "SubNiveles";
            Capas.ftclass_restri = "TomTom_Q4_2015___rs";
            Capas.ftclass_muni = "TomTom_Q4_2015___a8";

            ///////////////////////////////////////
            //Capas, consultas, atributos y filtros de LIMPIEZA
            LimpiezaDef.Capas.ftclass_niveles = "a2_Niveles_Limpieza";
            LimpiezaDef.Capas.ftclass_cont = "a_Contendores";
            LimpiezaDef.Capas.ftclass_mobi = "a_Mobiliario";
            LimpiezaDef.Capas.ftclass_limp_mec = "b_LimpMececanica";
            LimpiezaDef.Capas.ftclass_instala = "c_Instalaciones";

            LimpiezaDef.Campos.consulta_entidad = "NOM_TIPO_ENTIDAD";
            LimpiezaDef.Campos.consulta_mecan = "MECANIZABLE";

            LimpiezaDef.Atributos.atr_esca = "Escaleras";
            LimpiezaDef.Atributos.atr_fuent = "Fuentes";
            LimpiezaDef.Atributos.atr_infan = "JuegosInfantiles";
            LimpiezaDef.Atributos.atr_pape = "Papelera";
            LimpiezaDef.Atributos.atr_paso_niv = "Paso_Dist_Nivel";
            LimpiezaDef.Atributos.atr_pipi = "Pipican";
            LimpiezaDef.Atributos.atr_sane = "Sanecan";
            LimpiezaDef.Atributos.atr_acera = "Aceras";
            LimpiezaDef.Atributos.atr_aparc = "Banda_Aparcamiento";
            LimpiezaDef.Atributos.atr_bord = "Bordillo_Libre";
            LimpiezaDef.Atributos.atr_hoja = "Caida_Hoja";
            LimpiezaDef.Atributos.atr_peat = "Peatonales";
            LimpiezaDef.Atributos.atr_terri = "Areas Terrizas";
            LimpiezaDef.Atributos.atr_ocio = "Ocio";
            LimpiezaDef.Atributos.atr_org_ofi = "Organismos_Oficiales";
            LimpiezaDef.Atributos.atr_parq = "Parques";
            LimpiezaDef.Atributos.atr_park = "Parquin";
            LimpiezaDef.Atributos.atr_play = "Playa";
            LimpiezaDef.Atributos.atr_polid = "Polideportivo";
            LimpiezaDef.Atributos.atr_turis = "Puntos_Interes_Turistico";
            LimpiezaDef.Atributos.atr_solar = "Solares";
            LimpiezaDef.Atributos.atr_suelo = "Uso_Suelos";

            forma_filtros_limp();
            
            //para el grupo PARAMETROS de LIMPIEZA
            LimpiezaDef.Parametros.t_ttoM = 40000;
            LimpiezaDef.Parametros.t_ttom = 0;
            LimpiezaDef.Parametros.v_despM = 40000;
            LimpiezaDef.Parametros.v_despm = 0;
            LimpiezaDef.Parametros.t_cardescM = 40000;
            LimpiezaDef.Parametros.t_cardescm = 0;
            LimpiezaDef.Parametros.t_cardesc = 40;
            LimpiezaDef.Parametros.t_despM = 40000;
            LimpiezaDef.Parametros.t_despm = 0;
            LimpiezaDef.Parametros.t_desp = 25;
            LimpiezaDef.Parametros.t_convM = 40000;
            LimpiezaDef.Parametros.t_convm = 0;
            LimpiezaDef.Parametros.t_conv = 60 * 8;
            LimpiezaDef.Parametros.t_descansoM = 40000;
            LimpiezaDef.Parametros.t_descansom = 0;
            LimpiezaDef.Parametros.t_descanso = 30;
            LimpiezaDef.Parametros.h_inicio = 420;
            LimpiezaDef.Parametros.ancho_viaM = 2000;
            LimpiezaDef.Parametros.ancho_viam = 0;
            LimpiezaDef.Parametros.ancho_via = 2;
            LimpiezaDef.Parametros.ttoBarMan = 2900;
            LimpiezaDef.Parametros.ttoBarManMant = 2900;
            LimpiezaDef.Parametros.ttoBarMMot = 3500;
            LimpiezaDef.Parametros.ttoBarMC = 4000;
            LimpiezaDef.Parametros.ttoBarMAP = 4200;
            LimpiezaDef.Parametros.ttoBarMix = 5600;
            LimpiezaDef.Parametros.ttoBalMan = 4000;
            LimpiezaDef.Parametros.ttoBalMC = 5000;
            LimpiezaDef.Parametros.ttoBalMAP = 4200;
            LimpiezaDef.Parametros.ttoBalMix = 5600;
            LimpiezaDef.Parametros.ttoBL = 4000;
            LimpiezaDef.Parametros.ttoCH = 5600;
            LimpiezaDef.Parametros.ttoVPap = 1;
            LimpiezaDef.Parametros.ttoLPap = 5;
            LimpiezaDef.Parametros.ttoLC = 5;
            LimpiezaDef.Parametros.ttoLZI = 30;
            LimpiezaDef.Parametros.ttoLPip = 30;
            LimpiezaDef.Parametros.ttoLS = 5;
            LimpiezaDef.Parametros.vdespBarMan = 5;
            LimpiezaDef.Parametros.vdespBarManMant = 5;
            LimpiezaDef.Parametros.vdespBarMMot = 25;
            LimpiezaDef.Parametros.vdespBarMC = 15;
            LimpiezaDef.Parametros.vdespBarMAP = 15;
            LimpiezaDef.Parametros.vdespBarMix = 15;
            LimpiezaDef.Parametros.vdespBalMan = 15;
            LimpiezaDef.Parametros.vdespBalMC = 0;
            LimpiezaDef.Parametros.vdespBalMAP = 15;
            LimpiezaDef.Parametros.vdespBalMix = 15;
            LimpiezaDef.Parametros.vdespBL = 5;
            LimpiezaDef.Parametros.vdespCH = 15;
            LimpiezaDef.Parametros.vdespVPap = 0;
            LimpiezaDef.Parametros.vdespLPap = 0;
            LimpiezaDef.Parametros.vdespLC = 0;
            LimpiezaDef.Parametros.vdespLZI = 0;
            LimpiezaDef.Parametros.vdespLPip = 0;
            LimpiezaDef.Parametros.vdespLS = 0;
            LimpiezaDef.Parametros.umbral_reco = 80;

            ///////////////////////////////////////
            //Capas, consultas, atributos y filtros de RECOGIDA

            RecogidaDef.campos_def.cons_id = RecogidaDef.campos.cons_id = "OBJECTID";
            RecogidaDef.campos_def.cons_nomrec = RecogidaDef.campos.cons_nomrec = "NOMB_TIP_REC";
            RecogidaDef.campos_def.cons_lateral = RecogidaDef.campos.cons_lateral = "LATERALIDAD";
            RecogidaDef.campos_def.cons_fracc = RecogidaDef.campos.cons_fracc = "FRACCION";
            RecogidaDef.campos_def.cons_capac = RecogidaDef.campos.cons_capac = "CAPACIDAD";
            RecogidaDef.campos_def.cons_uds = RecogidaDef.campos.cons_uds = "UNIDADES";
            RecogidaDef.campos_def.cons_kgrec = RecogidaDef.campos.cons_kgrec = "KGRECO";
            RecogidaDef.kgrec_cont = RecogidaDef.kgrec_cont = 200;

            //Rellena los tipos de fracción
            RecogidaDef.tipos_fracc_str[(int)RecogidaDef.TiposFracción.Organica] = "Organica";
            RecogidaDef.tipos_fracc_str[(int)RecogidaDef.TiposFracción.Resto] = "Resto";
            RecogidaDef.tipos_fracc_str[(int)RecogidaDef.TiposFracción.Envases] = "Envases";
            RecogidaDef.tipos_fracc_str[(int)RecogidaDef.TiposFracción.Papel] = "PapelCarton";
            RecogidaDef.tipos_fracc_str[(int)RecogidaDef.TiposFracción.Vidrio] = "Vidrio";
            //Rellena los tipos de carga
            RecogidaDef.tipos_carg_str[(int)RecogidaDef.TiposCarga.Trasera] = "Carga_Trasera";
            RecogidaDef.tipos_carg_str[(int)RecogidaDef.TiposCarga.Lateral] = "Carga_Lateral";
            RecogidaDef.tipos_carg_str[(int)RecogidaDef.TiposCarga.Superior] = "Carga_Superior";
            RecogidaDef.tipos_carg_str[(int)RecogidaDef.TiposCarga.Bilateral] = "Carga_Bilateral";
            RecogidaDef.tipos_carg_str[(int)RecogidaDef.TiposCarga.BolseoPtaPta] = "Bolseo";
            RecogidaDef.tipos_carg_str[(int)RecogidaDef.TiposCarga.Lavado] = "Lavado de cont";
                        
            RecogidaDef.Parametros.t_vaciM = 40000;
            RecogidaDef.Parametros.t_vacim = 0;
            RecogidaDef.Parametros.t_llegsalM = 40000;
            RecogidaDef.Parametros.t_llegsalm = 0;
            RecogidaDef.Parametros.t_llegsal = 5;
            RecogidaDef.Parametros.t_descM = 40000;
            RecogidaDef.Parametros.t_descm = 0;
            RecogidaDef.Parametros.t_desc = 40;
            RecogidaDef.Parametros.t_convM = 40000;
            RecogidaDef.Parametros.t_convm = 0;
            RecogidaDef.Parametros.t_conv = 60 * 8;
            RecogidaDef.Parametros.t_descansoM = 40000;
            RecogidaDef.Parametros.t_descansom = 0;
            RecogidaDef.Parametros.t_descanso = 30;
            RecogidaDef.Parametros.h_inicio = 420;
            RecogidaDef.Parametros.dens_vehi_org = 500;
            RecogidaDef.Parametros.dens_vehi_res = 500;
            RecogidaDef.Parametros.dens_vehi_env = 120;
            RecogidaDef.Parametros.dens_vehi_pap = 250;
            RecogidaDef.Parametros.dens_vehi_vid = 350;
            RecogidaDef.Parametros.dens_vehi_otr = 100;
            RecogidaDef.Parametros.dens_cont_org = 150;
            RecogidaDef.Parametros.dens_cont_res = 100;
            RecogidaDef.Parametros.dens_cont_env = 28;
            RecogidaDef.Parametros.dens_cont_pap = 90;
            RecogidaDef.Parametros.dens_cont_vid = 250;
            RecogidaDef.Parametros.dens_cont_otr = 100;
            RecogidaDef.Parametros.anch_vehi_3 = 2.4;
            RecogidaDef.Parametros.anch_vehi_2 = 2.2;
            RecogidaDef.Parametros.anch_vehi_s = 2;
            RecogidaDef.Parametros.rad_giro_3 = 175;
            RecogidaDef.Parametros.rad_giro_2 = 175;
            RecogidaDef.Parametros.rad_giro_s = 175;
            RecogidaDef.Parametros.t_vaci_tra = 30;
            RecogidaDef.Parametros.t_vaci_lat = 90;
            RecogidaDef.Parametros.t_vaci_sup = 180;
            RecogidaDef.Parametros.t_vaci_bi = 100;
            RecogidaDef.Parametros.t_vaci_bol = 5;
            RecogidaDef.Parametros.t_vaci_lav = 60;
            RecogidaDef.Parametros.t_vaci_otr = 60;
            RecogidaDef.Parametros.kgmaxM = 20000;
            RecogidaDef.Parametros.kgmaxm = 0;
            RecogidaDef.Parametros.carga_maxM = 100;
            RecogidaDef.Parametros.carga_maxm = 50;

            //Atributos LATERALIDAD
            RecogidaDef.tipos_lateralidad[(int)RecogidaDef.Lateralidad.Ambos] = "Ambos";
            RecogidaDef.tipos_lateralidad[(int)RecogidaDef.Lateralidad.Dcha] = "Derecha";
            RecogidaDef.tipos_lateralidad[(int)RecogidaDef.Lateralidad.Izqda] = "Izquierda";

            //Campos de SENSORES
            RecogidaDef.campos_def.cons_id_sens = RecogidaDef.campos.cons_id_sens = "OBJECTID";
            RecogidaDef.campos_def.cons_url_sens = RecogidaDef.campos.cons_url_sens = "http://localiza.info/Utilidades/APIManager.aspx";
            RecogidaDef.campos_def.cons_fecha_sens = RecogidaDef.campos.cons_fecha_sens = "2000-01-01T00:00:00";
            RecogidaDef.campos_def.cons_fechaf_sens = RecogidaDef.campos.cons_fechaf_sens = "2050-01-01T00:00:00";

            //Campos de CSV
            RecogidaDef.campos_def.cons_id_csv = RecogidaDef.campos.cons_id_csv = "Nº";
            RecogidaDef.campos_def.cons_llen_csv = RecogidaDef.campos.cons_llen_csv = "Lectura";
            RecogidaDef.campos_def.cons_fecha_csv = RecogidaDef.campos.cons_fecha_csv = "Fecha";
            RecogidaDef.campos_def.cons_fechai_csv = RecogidaDef.campos.cons_fechai_csv = "01/01/2000 0:01";
            RecogidaDef.campos_def.cons_fechaf_csv = RecogidaDef.campos.cons_fechaf_csv = "01/01/2049 0:00";

            //Nombre de simbolos VSM
            RecogidaDef.rellena_simbrec_vsm();
            LimpiezaDef.rellena_simblimp_vsm();

            //rellena nombres
            LimpiezaDef.rellena_tto_gdb();
            LimpiezaDef.rellena_amb_gdb();
            LimpiezaDef.rellena_preftto_gdb();
            LimpiezaDef.rellena_simb_tiptto();
            LimpiezaDef.inicia_tiempos();
        }

        /**
         * Forma los filtros con las consultas y atributos
         */
        public static void forma_filtros_limp()
        {
            LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbEjeCalle] = "";
            LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbBordLibreMec] = LimpiezaDef.Campos.consulta_entidad + " = '" + LimpiezaDef.Atributos.atr_bord + "' AND " + LimpiezaDef.Campos.consulta_mecan + " = 'Si'";
            LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbBordLibreNoMec] = LimpiezaDef.Campos.consulta_entidad + " = '" + LimpiezaDef.Atributos.atr_bord + "' AND " + LimpiezaDef.Campos.consulta_mecan + " = 'No'";
            LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbBordAparc] = LimpiezaDef.Campos.consulta_entidad + " = '" + LimpiezaDef.Atributos.atr_aparc + "'";
            LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbAceMec] = LimpiezaDef.Campos.consulta_entidad + " = '" + LimpiezaDef.Atributos.atr_acera + "' AND " + LimpiezaDef.Campos.consulta_mecan + " = 'Si'";
            LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbAceNoMec] = LimpiezaDef.Campos.consulta_entidad + " = '" + LimpiezaDef.Atributos.atr_acera + "' AND " + LimpiezaDef.Campos.consulta_mecan + " = 'No'";
            LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbCallePeatMec] = LimpiezaDef.Campos.consulta_entidad + " = '" + LimpiezaDef.Atributos.atr_peat + "' AND " + LimpiezaDef.Campos.consulta_mecan + " = 'Si'";
            LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbCallePeatNoMec] = LimpiezaDef.Campos.consulta_entidad + " = '" + LimpiezaDef.Atributos.atr_peat + "' AND " + LimpiezaDef.Campos.consulta_mecan + " = 'No'";
            LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbBordHojaMec] = LimpiezaDef.Campos.consulta_entidad + " = '" + LimpiezaDef.Atributos.atr_hoja + "' AND " + LimpiezaDef.Campos.consulta_mecan + " = 'Si'";
            LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbBordHojaNoMec] = LimpiezaDef.Campos.consulta_entidad + " = '" + LimpiezaDef.Atributos.atr_hoja + "' AND " + LimpiezaDef.Campos.consulta_mecan + " = 'No'";
            LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbConte] = "";
            LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbPape] = LimpiezaDef.Campos.consulta_entidad + " = '" + LimpiezaDef.Atributos.atr_pape + "'";
            LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbZInf] = LimpiezaDef.Campos.consulta_entidad + " = '" + LimpiezaDef.Atributos.atr_infan + "'";
            LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbPipi] = LimpiezaDef.Campos.consulta_entidad + " = '" + LimpiezaDef.Atributos.atr_pipi + "'";
            LimpiezaDef.filtro_str[(int)LimpiezaDef.AmbitsTra.AmbSane] = LimpiezaDef.Campos.consulta_entidad + " = '" + LimpiezaDef.Atributos.atr_sane + "'";
        }
        
        /**
         * Devuelve una lista de las ips locales
         */
        public static string[] dame_local_ips()
        {
            IPHostEntry host;
            List<string> host_str = new List<string>();

            if (!System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable())
            {
                return null;
            }

            host = Dns.GetHostEntry(Dns.GetHostName());
            foreach (var ip in host.AddressList)
            {
                if (ip.AddressFamily == AddressFamily.InterNetwork)
                {
                    host_str.Add(ip.ToString());
                }
            }
            return host_str.ToArray();
        }

        /**
         * Cambia el color de la progressbar a rojo si es error o amarillo si es warning
         */
        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
        static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr w, IntPtr l);
        public static void ProgressBarSetState(ProgressBar pBar, int state)
        {
            uint WM_USER = 0x400;
            uint PBM_SETSTATE = WM_USER + 16;

            /*enum ProgressBarState{
                PBST_NORMAL = 1,    //green
                PBST_ERROR,         //red
                PBST_PAUSED         //yellow
            };*/

            SendMessage(pBar.Handle, PBM_SETSTATE, (IntPtr)state, IntPtr.Zero);
        }

        [DllImport("user32.dll")]
        public static extern bool PostMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);

        /**
         * Borra los archivos exportados para el proceso
         */
        public static void borra_files()
        {
            string[] list = null;
            string capa_principal = System.IO.Path.GetFileNameWithoutExtension(OliviaGlob.Paths.PathData);
            string capa_principal_nw = System.IO.Path.GetFileNameWithoutExtension(OliviaGlob.Paths.PathNW);
            
            try
            {
                if (capa_principal == null)
                    return;
                list = Directory.GetFiles(Paths.DirData, capa_principal + "*");
                if (list.Length>0)
                {
                    foreach (string f in list)
                    {
                        if (System.IO.Path.GetExtension(f) == ".lock")
                            continue;
                        File.Delete(f);
                    }
                }
                if (capa_principal_nw == null)
                    return;
                list = Directory.GetFiles(Paths.DirData, capa_principal_nw + "*");
                if (list.Length > 0)
                {
                    foreach (string f in list)
                    {
                        File.Delete(f);
                    }
                }
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        /**
         * Hace las tareas posteriores a finalizar un proceso, bien porque se ha cancelado o porque se ha terminado
         * modo 1, lanza ventana de selección de gdb para importar resultados
         */
        public static void fin_proceso(TiposEstado modo)
        {
            bool mal = true;
            string err = "";

            if (modo == TiposEstado.FinOkSecto)
            {
                if (gdb.import_secto_ini())
                {
                    mal = false;
                }
                else
                {
                    mal = true;
                    err = gdb.err_st;
                }
            }
            else if (modo == TiposEstado.FinOkPlanif)
            {
				guarda_csv();
                if (gdb.import_planif())
                {
                    mal = false;
                }
                else
                {
                    mal = true;
                    err = gdb.err_st;
                }
            }
            else if (modo == TiposEstado.FinNOk)
            {
                mal = true;
                err = progr_eje.err_str;
            }

            borra_files();
            if (mal)
            {
                MessageBox.Show(err, "Olivia", MessageBoxButtons.OK, MessageBoxIcon.Error);

                /*if (tip_oliv == OliviaDef.GeneralDef.TiposOliv.OlivLimp)
                    inidlg.lim.Close();
                else if (tip_oliv == OliviaDef.GeneralDef.TiposOliv.OlivResi)
                    inidlg.reco.Close();
                inidlg.Show();*/
            }
            
            if (tip_oliv == OliviaDef.GeneralDef.TiposOliv.OlivLimp)
                inidlg.lim.Show();//PostMessage(inidlg.lim.Handle, 0x0018, 1, 0);
            else if (tip_oliv == OliviaDef.GeneralDef.TiposOliv.OlivResi)
                inidlg.reco.Show();//PostMessage(inidlg.reco.Handle, 0x0018, 1, 0);
            
        }

		/**
         * cambia la carpeta referida a directorio de trabajo por los caracteres OliviaDirWork (%dir_work%)
         */
        static string pon_path_relativo(string path, string dir_work)
        {
            int aux, aux1;
	        string s2 = null, s1 = path, dir = null;

	        if (dir_work == null || dir_work[0] == 0)
		        return path;
            int indice = path.IndexOf(dir_work);
            if (indice == -1)
                return path;

            if (indice != -1)
            {
                int largo = dir_work.Length;
                aux = path.Length;
                aux1 = aux - indice - largo;
                aux = aux - aux1;
                dir = path.Substring(indice, largo);//directorio de trabajo. Se sustituirá por OliviaDef.GeneralDef.OliviaDirWork para que el en .ini aparezca en lugar del path completa %dir_work% en lo que es la parte del path correspondiente al directorio de trabajo
                s1 = path.Substring(0, indice);//parte primera del path que no coincide con el directorio de trabajo (dir_work). Generalmente será null
                s2 = path.Substring(aux, aux1);//parte findel del path. El final del path que va después de dir_work
            }
            path = string.Concat(string.Concat(s1, OliviaDef.GeneralDef.OliviaDirWork), s2);

	        return path;
        }

        /**
         * cambia los caracteres OliviaDirWork (%dir_work%) por la ruta correspondiente en el disco duro
         */
        static string pon_path_absoluto(string path, string dir_work)
        {
	        string res = null;
	        string s2 = null, s1 = path;
            int largo;

	        if (dir_work == null || dir_work[0] == 0)
		        return path;

            int indice = path.IndexOf("%");
            if (indice == -1)
                return path;

	        while (indice != -1)
	        {
                res = path.Substring(0, indice);
                indice = indice + 1;
                largo = path.Length - indice;
                s1 = path.Substring(indice, largo);

                indice = s1.IndexOf("%");
                indice = indice + 1;
                largo = s1.Length - indice;
                s2 = s1.Substring(indice, largo);

                indice = s2.IndexOf("%");
	        }
            path = string.Concat(string.Concat(res, dir_work), s2);
	        return path;
        }

        /*
         * Permite guardar el archivo CSV que contiene la secuencia qeu se ha llevado a cabo en las rutas en la planificación.
         */
        public static void guarda_csv()
        {
            string auxi, nombre = null;
            DialogResult dialogResult;
            string[] nameDokL;

            nameDokL = Directory.GetFiles(Paths.DirData, 
                System.IO.Path.GetFileNameWithoutExtension(OliviaGlob.Paths.PathData) + gdb.name_csv + ".*");
            System.Windows.Forms.SaveFileDialog dlg = new System.Windows.Forms.SaveFileDialog();
            dlg.Title = "Guardar Secuencia de la Planificación";
            dlg.Filter = "Secuencia en formato CSV (*.csv)|*.csv";
            dlg.InitialDirectory = Paths.DirData;

            if (tip_oliv == OliviaDef.GeneralDef.TiposOliv.OlivLimp)
                gdb_limp.decode_gdb(System.IO.Path.GetFileNameWithoutExtension(OliviaGlob.Paths.PathData),
                    out auxi, out nombre);
            else if (tip_oliv == OliviaDef.GeneralDef.TiposOliv.OlivResi)
                gdb_reco.decode_gdb(System.IO.Path.GetFileNameWithoutExtension(OliviaGlob.Paths.PathData),
                    out auxi, out nombre);
            else
                nombre = System.IO.Path.GetFileNameWithoutExtension(OliviaGlob.Paths.PathData);

            dlg.FileName = nombre;

            if (dlg.ShowDialog() != DialogResult.OK && dlg.FileName.Length > 0)
            {
                dialogResult = MessageBox.Show("Se va a perder el archivo que contiene la secuencia en planificación, ¿está seguro?", "Olivia", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (dialogResult == DialogResult.No)
                    guarda_csv();
            }
            else
            {
                if(File.Exists(dlg.FileName))
                    File.Delete(dlg.FileName);
                File.Move(nameDokL[0], dlg.FileName);
            }
        }

        /**
        * Dado un tiempo en horas y minutos devuelve los minutos resultantes
        */
        public static double dame_min(int[] h_m)
        {
            double t_min;

            t_min = h_m[0] * 60 + h_m[1];
            return t_min;
        }

        /**
        * Dado un tiempo en minutos devuelve las horas modulo 60 y los minutos restantes
        */
        public static int[] dame_h_m(double t)
        {
            int[] hm = { 0, 0 };

            hm[0] = (int)(t / 60);
            hm[1] = (int)(t - hm[0] * 60);

            return hm;
        }

    }
}
