Miglioramento gestione facce complanari
This commit is contained in:
@@ -4548,7 +4548,7 @@ SurfTriMesh::ItersectTriMeshFacets( SurfTriMesh& Other)
|
||||
Point3d ptCentroidA, ptCentroidB ;
|
||||
RegionA.GetCentroid( ptCentroidA) ;
|
||||
RegionB.GetCentroid( ptCentroidB) ;
|
||||
if ( AreSameVectorApprox( plPlaneA.GetVersN(), plPlaneB.GetVersN()) &&
|
||||
if ( AreSameOrOppositeVectorApprox( plPlaneA.GetVersN(), plPlaneB.GetVersN()) &&
|
||||
abs( ( ptCentroidB - ptCentroidA) * plPlaneA.GetVersN()) < EPS_SMALL) {
|
||||
BBox3d b3Box, b3BoxB;
|
||||
RegionA.GetLocalBBox(b3Box);
|
||||
@@ -4607,7 +4607,7 @@ SurfTriMesh::ItersectTriMeshFacets( SurfTriMesh& Other)
|
||||
Point3d ptCentroidA, ptCentroidB ;
|
||||
RegionA.GetCentroid( ptCentroidA) ;
|
||||
RegionB.GetCentroid( ptCentroidB) ;
|
||||
if (AreSameVectorApprox(plPlaneA.GetVersN(), plPlaneB.GetVersN()) &&
|
||||
if ( AreSameOrOppositeVectorApprox(plPlaneA.GetVersN(), plPlaneB.GetVersN()) &&
|
||||
abs((ptCentroidB - ptCentroidA) * plPlaneA.GetVersN()) < EPS_SMALL) {
|
||||
BBox3d b3Box, b3BoxB;
|
||||
RegionA.GetLocalBBox(b3Box);
|
||||
@@ -4670,6 +4670,10 @@ SurfTriMesh::ItersectTriMeshFacets( SurfTriMesh& Other)
|
||||
auto itFacetB = NewFacetB.find( nFB) ;
|
||||
// Faccia B divisa in pezzi
|
||||
if ( itFacetB != NewFacetB.end()) {
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
if (nFB == 1)
|
||||
int a = 0;
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
for ( int nPieceNumB = 0 ; nPieceNumB < int( itFacetB->second.size()) ; ++ nPieceNumB) {
|
||||
POLYLINEVECTOR& vPieceLoopsVecB = itFacetB->second[nPieceNumB].vPieceLoop ;
|
||||
PtrOwner<SurfFlatRegion> pRegB( GetBasicSurfFlatRegion( GetSurfFlatRegionFromPolyLineVector( vPieceLoopsVecB))) ;
|
||||
@@ -4701,7 +4705,7 @@ SurfTriMesh::ItersectTriMeshFacets( SurfTriMesh& Other)
|
||||
Point3d ptCentroidA, ptCentroidB ;
|
||||
RegionA.GetCentroid( ptCentroidA) ;
|
||||
RegionB.GetCentroid( ptCentroidB) ;
|
||||
if ( AreSameVectorApprox( plPlaneA.GetVersN(), plPlaneB.GetVersN()) &&
|
||||
if ( AreSameOrOppositeVectorApprox( plPlaneA.GetVersN(), plPlaneB.GetVersN()) &&
|
||||
abs( ( ptCentroidB - ptCentroidA) * plPlaneA.GetVersN()) < EPS_SMALL) {
|
||||
BBox3d b3Box, b3BoxB ;
|
||||
RegionA.GetLocalBBox( b3Box) ;
|
||||
@@ -4766,9 +4770,7 @@ SurfTriMesh::ItersectTriMeshFacets( SurfTriMesh& Other)
|
||||
Point3d ptCentroidA, ptCentroidB ;
|
||||
RegionA.GetCentroid( ptCentroidA) ;
|
||||
RegionB.GetCentroid( ptCentroidB) ;
|
||||
bool bVecOk = AreSameVectorApprox(plPlaneA.GetVersN(), plPlaneB.GetVersN());
|
||||
double dOk = abs((ptCentroidB - ptCentroidA) * plPlaneA.GetVersN());
|
||||
if ( AreSameVectorApprox( plPlaneA.GetVersN(), plPlaneB.GetVersN()) &&
|
||||
if ( AreSameOrOppositeVectorApprox( plPlaneA.GetVersN(), plPlaneB.GetVersN()) &&
|
||||
abs( ( ptCentroidB - ptCentroidA) * plPlaneA.GetVersN()) < EPS_SMALL) {
|
||||
BBox3d b3Box, b3BoxB;
|
||||
RegionA.GetLocalBBox(b3Box);
|
||||
|
||||
Reference in New Issue
Block a user