private void MetroWindow_Loaded(object sender, RoutedEventArgs e)
        {
            //Todas las orientaciones disponibles
            CmbRumboFrente.ItemsSource = Met_Manzana.DespliegoOrientaciones();

            if (!string.IsNullOrWhiteSpace(M.Manzana.RumboFrente.rumboActual))
            {
                CmbRumboFrente.SelectedItem = M.Manzana.RumboFrente.rumboActual;
            }

            //Agrego los tipos de Colindancias
            cmbTipo.ItemsSource = M.Constant.TipoColindancias;

            //Obtengo las Manzanas que cumplen con criterio en plano
            cmbManzana.ItemsSource = ObtengoManzanas();

            //Si solamente leyó una manzana que la asigné de manera automática
            if (cmbManzana.Items.Count == 1)
            {
                cmbManzana.SelectedIndex = 0;
            }

            //La lista debe de estar de acuerdo a lo insertado en listado de Colindancias
            ListPrincipal.ItemsSource = M.Manzana.ColindanciaManzana;

            //Asigno Lote o Macrolote
            if (M.Manzana.EsMacrolote)
            {
                rbMacroLote.IsChecked = true;
            }
            else
            {
                rbLote.IsChecked = true;
            }
        }
        private void AsignaOrientaciones(string RumboFrente)
        {
            //Inicializo Lista
            M.Manzana.OrientacionCalculada = new List <string>();

            //Calculo las Orientaciones de acuerdo a Lista
            M.Manzana.OrientacionCalculada = Met_Manzana.OrientacionFrente(RumboFrente);

            //Asigno resultado
            cmbRumboActual.ItemsSource = M.Manzana.OrientacionCalculada;

            //Asigno la primera orientación
            cmbRumboActual.SelectedIndex = 0;
        }
        private void btnAdd_Click(object sender, RoutedEventArgs e)
        {
            ObjectId idtxtCol  = new ObjectId(),  //Id de Texto con el que Colinda
                     idLineCol = new ObjectId();  //Id de Linea/Polilinea con la que Colinda

            //Selecciono el Item
            string rumboSeleccionado = (cmbRumboActual.SelectedItem ?? "").ToString();

            //Si ya se selecciono algo en el combobox de tipo
            if (cmbTipo.SelectedIndex != -1)
            {
                this.WindowState = WindowState.Minimized;
                //Solicito que me hagan saber el texto que colinda
                if (Met_Autodesk.Entity("Selecciona la línea de colindancia al " + rumboSeleccionado + "\n",
                                        out idLineCol, M.Constant.TiposLineas) &&
                    Met_Autodesk.Entity("Selecciona la colindancia al " + rumboSeleccionado + "\n",
                                        out idtxtCol, typeof(DBText)))
                {
                    if (idLineCol.OpenEntity().Layer == M.Constant.LayerManzana)
                    {
                        //Obtengo el DBText seleccionado
                        DBText DBTextColindancia = idtxtCol.OpenEntity() as DBText;

                        //Texto del DB Text
                        string txtColindancia = DBTextColindancia.TextString.FormatString();

                        //Modelo los datos
                        M.ManzanaData insertedData = new M.ManzanaData()
                        {
                            hndPlColindancia  = idLineCol.Handle,
                            hndTxtColindancia = idtxtCol.Handle,
                            inicialRumbo      = (M.Constant.Orientaciones
                                                 [Met_Manzana.ObtengoPosicion(rumboSeleccionado, 0), 1]),
                            rumboActual     = rumboSeleccionado,
                            textColindancia = cmbTipo.SelectedIndex > 0 ? txtColindancia :
                                              "calle " + txtColindancia
                        };

                        bool PolilineaNueva = false,
                             RumboNuevo     = false;

                        int sigPosicion = 0;

                        //Si ya se había insertado esa polilinea
                        PolilineaNueva = M.Manzana.ColindanciaManzana.Where
                                             (x => x.hndPlColindancia.Value == insertedData.hndPlColindancia.Value).
                                         Count() > 0 ? false : true;

                        //Si ya se había insertado ese rumbo en la lista
                        RumboNuevo = M.Manzana.ColindanciaManzana.
                                     Where(x => x.rumboActual == insertedData.rumboActual).Count() > 0
                            ? false : true;

                        //Si es Nueva Polilinea y nuevo Rumbo
                        if (PolilineaNueva && RumboNuevo)
                        {
                            sigPosicion = insertedData.InsertoColindancia();
                        }
                        else
                        {
                            sigPosicion = insertedData.ReasignoColindancia(PolilineaNueva, RumboNuevo);
                        }

                        //Reviso que rumbo mostrará
                        SigColindancia(sigPosicion);

                        if (ListPrincipal.ItemsSource != null)
                        {
                            ListPrincipal.Items.Refresh();
                        }
                        else
                        {
                            ListPrincipal.ItemsSource = M.Manzana.ColindanciaManzana;
                        }
                    }
                    else
                    {
                        this.ShowMessageAsync("Layer Incorrecto", "La línea debe de estar en Layer " + M.Constant.LayerManzana);
                    }
                }
                this.WindowState = WindowState.Normal;
            }
            else
            {
                this.ShowMessageAsync("Datos no seleccionados", "Favor de seleccionar Tipo de Colindancia");
            }
        }