private void GetInfoLote(ObjectIdCollection idsLotes) { string LoteOMacroLote = ""; //Complementa lbl de Lotes int countLote = 0, //Reviso cuantos Número de Lotes encontré countNumOficial = 0; //Reviso cuantos Números Oficiales encontré //Por cada lote encontrado en los segmentos foreach (ObjectId idLote in idsLotes) { //Punto minimo y máximo de la polílinea Point3d ptmin = new Point3d(), ptmax = new Point3d(); DBText idTextLote = new DBText(), idTextNumOficial = new DBText(); string valorLote = "", valorNumOficial = ""; int numLote = 0; //Abro entidad de PL Autodesk.AutoCAD.DatabaseServices.Polyline lote = (idLote.OpenEntity() as Autodesk.AutoCAD.DatabaseServices.Polyline); //Calculo punto mínimo y máximo ptmin = lote.GeometricExtents.MinPoint; ptmax = lote.GeometricExtents.MaxPoint; //Enfoco lote.Focus(20, 40); //Detecto Texto con LayerLote ObjectIdCollection idsTextoLotes = Met_Autodesk.ObjectsInside(ptmin, ptmax, typeof(DBText).Filter(M.Constant.LayerLote)); //Detecto Texto con Número Oficial ObjectIdCollection idsNoOficial = Met_Autodesk.ObjectsInside(ptmin, ptmax, typeof(DBText).Filter(M.Constant.LayerNoOficial)); //Reviso que sólo haya 1 para asignarlo //***NÚMERO LOTE--------------------------------------------------------------------------- if (idsTextoLotes.Count == 1) { idTextLote = idsTextoLotes.OfType <ObjectId>().FirstOrDefault().OpenEntity() as DBText; valorLote = idTextLote.TextString.GetAfterSpace(); if (int.TryParse(valorLote, out numLote)) { countLote++; } } else if (idsTextoLotes.Count > 1) //Si encontro más de uno imprimo cuantos encontró { valorLote = idsTextoLotes.Count + " Encontrados"; } //***----------------------------------------------------------------------------------------- //***NÚMERO OFICIAL--------------------------------------------------------------------------- if (idsNoOficial.Count == 1) { idTextNumOficial = idsNoOficial.OfType <ObjectId>().FirstOrDefault().OpenEntity() as DBText; valorNumOficial = idTextNumOficial.TextString.GetAfterSpace(); countNumOficial++; } else if (idsNoOficial.Count > 1) { valorNumOficial = idsTextoLotes.Count + " Encontrados"; } //***----------------------------------------------------------------------------------------- //Agrego Valor de Lotes M.Colindante.Lotes.Add(new M.Lote() { _long = idLote.Handle.Value, numOficial = valorNumOficial, numLote = numLote }); } //Valido si tiene todos los elementos necesarios if (countLote == idsLotes.Count && countNumOficial == idsLotes.Count) { if (M.Manzana.EsMacrolote) { tb1Paso0.IsEnabled = true;//Activo Paso 0 } else { tb1Paso1.IsEnabled = true;//Activo Paso 1 } } else { this.ShowMessageAsync("Error en Lotes", "La cantidad de Números de Lotes u Oficiales no es la correcta \n Ir a Detalles > Información del Lote"); } //Dependiendo de cuantos lotes encontró if (idsLotes.Count == 1) { LoteOMacroLote = M.Manzana.EsMacrolote ? "Macrolote" : "Lote"; } else { LoteOMacroLote = M.Manzana.EsMacrolote ? "Macrolotes" : "Lotes"; } lblGnLotes.Text = idsLotes.Count.ToString() + " " + LoteOMacroLote; tb2GridLotes.ItemsSource = M.Colindante.Lotes; }