internal static int ReasignoColindancia(this M.ManzanaData insertedData, bool PolilineaNueva, bool RumboNuevo) { //Si ya existe Polilinea en la lista con Rumbo Nuevo if (!PolilineaNueva && RumboNuevo) { //Elimino de la lista M.Manzana.ColindanciaManzana. RemoveAll(x => x.hndPlColindancia.Value == insertedData.hndPlColindancia.Value); } //Si es Nueva Polilinea en la lista con Rumbo ya insertado else if (PolilineaNueva && !RumboNuevo) { //Buscar Polilinea de Rumbo anterior y eliminarlo--------------- //Polilinea repetida M.ManzanaData itemRepetido = new M.ManzanaData(); itemRepetido = M.Manzana.ColindanciaManzana. Where(x => x.rumboActual == insertedData.rumboActual).FirstOrDefault(); Entity entPl = itemRepetido.hndPlColindancia.toObjectId().OpenEntity(); DManager.RemoveXRecord(entPl.ExtensionDictionary, M.Constant.XRecordColindancia); //---------------------------------------------------------------- //Eliminar de lista Rumbo M.Manzana.ColindanciaManzana. RemoveAll(x => x.rumboActual == insertedData.rumboActual); } //Si es Polilinea y Rumbo ya insertados en la lista else if (!PolilineaNueva && !RumboNuevo) { M.ManzanaData itemRumbo = new M.ManzanaData(); //Calculo item de Polilinea-------------------------------------------------------- //Elimino de la lista M.Manzana.ColindanciaManzana. RemoveAll(x => x.hndPlColindancia.Value == insertedData.hndPlColindancia.Value); //---------------------------------------------------------------------------------- //Calculo item de Rumbo------------------------------------------------------------- itemRumbo = M.Manzana.ColindanciaManzana. Where(x => x.rumboActual == insertedData.rumboActual).FirstOrDefault(); if (itemRumbo != null) { ObjectId idPl = new ObjectId(); idPl = itemRumbo.hndPlColindancia.toObjectId(); Entity entPl = idPl.OpenEntity(); DManager.RemoveXRecord(entPl.ExtensionDictionary, M.Constant.XRecordColindancia); //Eliminar de lista Rumbo M.Manzana.ColindanciaManzana. RemoveAll(x => x.rumboActual == insertedData.rumboActual); //---------------------------------------------------------------------------------- } } return(insertedData.InsertoColindancia()); }
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"); } }