private void CmBTriangularPuntos_Click(object sender, EventArgs e) { //Triangular los puntos autogenerados IList <Triangulo> Res = new List <Triangulo>(); Geometry.Operaciones.Triangulacion.Triangulacion DelaTriang = new Geometry.Operaciones.Triangulacion.Triangulacion(); Geometry.Log.Log DelaLog = new Geometry.Log.Log(); if (DelaTriang.TriangularMalla(new Poligono(), new List <Linea>(), lstPuntos3d, TipoTriangulado.Delaunay)) { Res = DelaTriang.Resultado; DelaLog = DelaTriang.LogTriangulacion; } else { } }
public SubProcesoTriangulacion(TipoTriangulado tipoTriangulado, List <Punto3D> Vertices, List <Linea> Rupturas, Triangulo Envolvente, int Anterior, int Siguiente) { _logProceso.Add(new Log.EventoLog(Log.TypeEvento.Inicio, "Inicialización del Proceso.")); _tipoTriangulado = tipoTriangulado; _vertices = Vertices; _rupturas = Rupturas; //Añade a la triangulación los índices de la malla anterior y la siguiente _ResTriangulacion = Triangulacion.GetNewResultadoTriangulacion(tipoTriangulado); _ResTriangulacion.Seccion.TrianguloSeccion = Envolvente; _ResTriangulacion.Seccion.ParAristas.Anterior = Anterior; _ResTriangulacion.Seccion.ParAristas.Siguiente = Siguiente; _logProceso.Add(new Log.EventoLog(Log.TypeEvento.Fin, "Inicialización del Proceso.")); _Estado = TriangulacionMultiProceso.Estado.EnEspera; }
public void Ejecutar() { //Ejecuta procesa _Vértices y _Rupturas para obtener _ResTriangulación try { _Estado = TriangulacionMultiProceso.Estado.EnEjecucion; _logProceso.ActualizaProcessLog(OnThread); _logProceso.Add(new Log.EventoLog(Log.TypeEvento.Inicio, "Procesa la Triangulación.")); ITriangulador Triangulador = Triangulacion.GetNewTriangulador(_tipoTriangulado); //Calcula Triangulación _ResTriangulacion.Resultado = Triangulador.Triangular(_ResTriangulacion.Seccion.TrianguloSeccion.ToPoligono(), _rupturas, _vertices); _Estado = TriangulacionMultiProceso.Estado.Terminado; } catch (System.Threading.ThreadAbortException) { _logProceso.Add(new Log.EventoLog(Log.TypeEvento.Informacion, "Proceso abortado.")); _Error = new Exception("Subproceso de triangulación abortado."); _Estado = TriangulacionMultiProceso.Estado.Detenido; System.Threading.Thread.ResetAbort(); } catch (Exception sysEx) { _logProceso.Add(new Log.EventoLog(Log.TypeEvento.Error, sysEx.ToString())); _Error = sysEx; _Estado = TriangulacionMultiProceso.Estado.ConErrores; } finally { _logProceso.Add(new Log.EventoLog(Log.TypeEvento.Fin, "Procesa la Triangulación.")); //Lanzar evento Filanlizado?.Invoke(this, EventArgs.Empty); } }
public void Ejecutar() { //Ejecuta el merge de las dos triangulaciones try { _Estado = TriangulacionMultiProceso.Estado.EnEjecucion; _logProceso.ActualizaProcessLog(OnThread); _logProceso.Add(new Log.EventoLog(Log.TypeEvento.Inicio, "Procesa el Merge.")); ITriangulador Triangulador = Triangulacion.GetNewMerge(_tipoTriangulado); //Calcula Merge _ResTriangulacion.Resultado = Triangulador.Merge(_triangulacion1, _triangulacion2); _Estado = TriangulacionMultiProceso.Estado.Terminado; } catch (System.Threading.ThreadAbortException) { _logProceso.Add(new Log.EventoLog(Log.TypeEvento.Informacion, "Proceso abortado.")); _Error = new Exception("Subproceso de merge abortado."); _Estado = TriangulacionMultiProceso.Estado.Detenido; System.Threading.Thread.ResetAbort(); } catch (Exception sysEx) { _logProceso.Add(new Log.EventoLog(Log.TypeEvento.Error, sysEx.ToString())); _Error = sysEx; _Estado = TriangulacionMultiProceso.Estado.ConErrores; } finally { _logProceso.Add(new Log.EventoLog(Log.TypeEvento.Fin, "Procesa el Merge.")); //Lanza evento Filanlizado?.Invoke(this, new EventArgs()); } }
public SubProcesoMerge(TipoTriangulado tipoTriangulado, IResultadoTriangulacion Triang1, IResultadoTriangulacion Triang2) { _logProceso.Add(new Log.EventoLog(Log.TypeEvento.Inicio, "Inicialización el Proceso.")); _tipoTriangulado = tipoTriangulado; _triangulacion1 = Triang1.Resultado; _triangulacion2 = Triang2.Resultado; _ResTriangulacion = Triangulacion.GetNewResultadoTriangulacion(tipoTriangulado); if (Triang1.Seccion.ParAristas.Anterior == Triang2.Seccion.ParAristas.Siguiente) { // 1,2 - 0,1 _ResTriangulacion.Seccion.ParAristas.Anterior = Triang1.Seccion.ParAristas.Siguiente; _ResTriangulacion.Seccion.ParAristas.Siguiente = Triang2.Seccion.ParAristas.Anterior; } else { if (Triang1.Seccion.ParAristas.Siguiente == Triang2.Seccion.ParAristas.Anterior) { // 0,1 - 1,2 _ResTriangulacion.Seccion.ParAristas.Anterior = Triang1.Seccion.ParAristas.Anterior; _ResTriangulacion.Seccion.ParAristas.Siguiente = Triang2.Seccion.ParAristas.Siguiente; } else { //No son consecutivas } } _logProceso.Add(new Log.EventoLog(Log.TypeEvento.Fin, "Inicialización el Proceso.")); _Estado = TriangulacionMultiProceso.Estado.EnEspera; }