From 47e79756d17ae312d89d3617289bccabcb4bcf66 Mon Sep 17 00:00:00 2001 From: Daniele Bariletti Date: Mon, 12 Feb 2024 12:53:57 +0100 Subject: [PATCH] EgtGeomKernel : - corretto bug nella triangolazione delle sup. di Bezier. --- Tree.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/Tree.cpp b/Tree.cpp index cb2e4a8..9bdfaca 100644 --- a/Tree.cpp +++ b/Tree.cpp @@ -1805,8 +1805,9 @@ Tree::TraceLoopLabelCell( const POLYLINEVECTOR& vplPolygons) if ( ! nCells.empty()) nId = nCells.back() ; else - // il loop è risultato fuori dallo spazio parametrico - return false ; + // il loop è risultato fuori dallo spazio parametrico // può capitare se ho una superficie trimmata con più chunk con bbox separate. + // ma potrebbe anche essere indicatore di un errore + continue ; int nFirstCell = nId ; // trovo quali punti della polyline sono nella cella e l'intersezione PNTVECTOR vptInters ; @@ -2077,14 +2078,14 @@ Tree::FindInters( int& nId, const CurveLine& clTrim, PNTVECTOR& vptInters, bool // oltre il 3 sono le celle adiacenti in diagonale al vertice-> 4 corrisponde al ptTl e da lì in senso antiorario // -1 se la curva è sempre dentro la cella Point3d ptInters ; - int nEdge2 ; + //int nEdge2 ; if ( ptEnd.y >= ptTR.y && ptEnd.x <= ptTR.x) { - nEdge = 0 ; + //nEdge = 0 ; // lato sopra clEdge.Set( ptTR, ptTl) ; // lato sinistro if ( ptEnd.x < ptBL.x) { - nEdge2 = 1 ; + //nEdge2 = 1 ; clEdge2.Set( ptTl, ptBL) ; } } @@ -2094,7 +2095,7 @@ Tree::FindInters( int& nId, const CurveLine& clTrim, PNTVECTOR& vptInters, bool clEdge.Set( ptTl, ptBL) ; // lato sotto if ( ptEnd.y < ptBL.y) { - nEdge2 = 2 ; + //nEdge2 = 2 ; clEdge2.Set( ptBL, ptBr) ; } } @@ -2104,7 +2105,7 @@ Tree::FindInters( int& nId, const CurveLine& clTrim, PNTVECTOR& vptInters, bool clEdge.Set( ptBL, ptBr) ; // lato destro if ( ptEnd.x > ptTR.x) { - nEdge2 = 3 ; + //nEdge2 = 3 ; clEdge2.Set( ptBr, ptTR) ; } } @@ -2114,7 +2115,7 @@ Tree::FindInters( int& nId, const CurveLine& clTrim, PNTVECTOR& vptInters, bool clEdge.Set( ptBr, ptTR) ; // lato sopra if ( ptEnd.y > ptTR.y) { - nEdge2 = 0 ; + //nEdge2 = 0 ; clEdge2.Set( ptTR, ptTl) ; } }