EgtGeomKernel :

- aggiunto un argomento alla CalcRegionPolyLines.
This commit is contained in:
Daniele Bariletti
2024-09-04 15:50:01 +02:00
parent 2267343afe
commit 7a01f67c8b
4 changed files with 16 additions and 10 deletions
+8 -2
View File
@@ -575,7 +575,7 @@ SurfFlatRegionByContours::GetUnusedCurveTempProps( INTVECTOR& vId)
//-------------------------------------------------------------------------------
bool
CalcRegionPolyLines( const POLYLINEVECTOR& vPL, POLYLINEVECTOR& vPLOrd, Vector3d& vtN, INTMATRIX& vnPLIndMat)
CalcRegionPolyLines( const POLYLINEVECTOR& vPL, POLYLINEVECTOR& vPLOrd, Vector3d& vtN, INTMATRIX& vnPLIndMat, BOOLVECTOR& vbInvert)
{
// matrice di interi : ogni riga corrisponde ad un chunk, dove in posizione 0 c'è il loop esterno e nelle
// successive i loop interni
@@ -638,6 +638,8 @@ CalcRegionPolyLines( const POLYLINEVECTOR& vPL, POLYLINEVECTOR& vPLOrd, Vector3d
bool bFirstCrv ;
Plane3d plExtLoop ;
double dAreaExtLoop = 0. ;
vbInvert.resize( vPL.size()) ;
fill( vbInvert.begin(), vbInvert.end(), false) ;
do {
bFirstCrv = true ;
for ( int i = 0 ; i < int( m_vArea.size()) ; ++ i) {
@@ -655,6 +657,7 @@ CalcRegionPolyLines( const POLYLINEVECTOR& vPL, POLYLINEVECTOR& vPLOrd, Vector3d
vPLOrd[j].Invert() ;
vCrvCompo[j]->Invert() ;
dAreaExtLoop *= -1 ;
vbInvert[j] = true ;
}
bFirstCrv = false ;
}
@@ -689,6 +692,7 @@ CalcRegionPolyLines( const POLYLINEVECTOR& vPL, POLYLINEVECTOR& vPLOrd, Vector3d
if ( m_vArea[i].second * dAreaExtLoop > 0.) {
vPLOrd[j].Invert() ;
vCrvCompo[j]->Invert() ;
vbInvert[j] = true ;
}
}
}
@@ -696,8 +700,10 @@ CalcRegionPolyLines( const POLYLINEVECTOR& vPL, POLYLINEVECTOR& vPLOrd, Vector3d
} while ( ! bFirstCrv) ;
if ( bInvertAll) {
for ( int i = 0 ; i < int( vPLOrd.size()) ; ++i)
for ( int i = 0 ; i < int( vPLOrd.size()) ; ++i) {
vPLOrd[i].Invert() ;
vbInvert[i] = ! vbInvert[i] ;
}
}
//// ordino le PolyLine per area