EgtGeomKernel :
- in ChainCurves::Init si può passare la dimensione della cella - corretta GetSurfTriMeshBox nel caso Regular - chiamate asincrone in VolZmap per taglio spilloni delle tre matrici.
This commit is contained in:
+17
-14
@@ -33,6 +33,9 @@
|
||||
|
||||
using namespace std ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
const double BOOLEAN_SCALE = 1024 ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
IntersRectangleTriangle( const Point3d& ptP, const Vector3d& vtL1, const Vector3d& vtL2,
|
||||
@@ -951,7 +954,7 @@ SurfTriMesh::RetriangulationForBooleanOperation( CHAINMAP& LoopLines, TRIA3DVECT
|
||||
|
||||
// Creo i loop
|
||||
ChainCurves LoopCreator ;
|
||||
LoopCreator.Init( false, 10 * EPS_SMALL, int( it->second.size())) ;
|
||||
LoopCreator.Init( false, 10 * EPS_SMALL, int( it->second.size()), 10 * BOOLEAN_SCALE) ;
|
||||
// Carico le curve per concatenarle
|
||||
for ( int nCv = 0 ; nCv < int( it->second.size()); ++ nCv) {
|
||||
Point3d ptSt = it->second[nCv].ptSt ;
|
||||
@@ -962,7 +965,7 @@ SurfTriMesh::RetriangulationForBooleanOperation( CHAINMAP& LoopLines, TRIA3DVECT
|
||||
}
|
||||
// Recupero i concatenamenti
|
||||
INTVECTOR vIds ;
|
||||
Point3d ptNearStart ;
|
||||
Point3d ptNearStart = ( it->second.size() > 0 ? it->second[0].ptSt : ORIG) ;
|
||||
CHAINVECTOR vChain ;
|
||||
while ( LoopCreator.GetChainFromNear( ptNearStart, false, vIds)) {
|
||||
Chain chTemp ;
|
||||
@@ -2382,8 +2385,8 @@ SurfTriMesh::Add( const ISurfTriMesh& Other)
|
||||
SurfB.CopyFrom( &Other) ;
|
||||
Frame3d frScalingRef ;
|
||||
frScalingRef.Set( m_vVert[0].ptP, X_AX, Y_AX, Z_AX) ;
|
||||
Scale( frScalingRef, 1024., 1024., 1024.) ;
|
||||
SurfB.Scale( frScalingRef, 1024., 1024., 1024.) ;
|
||||
Scale( frScalingRef, BOOLEAN_SCALE, BOOLEAN_SCALE, BOOLEAN_SCALE) ;
|
||||
SurfB.Scale( frScalingRef, BOOLEAN_SCALE, BOOLEAN_SCALE, BOOLEAN_SCALE) ;
|
||||
IntersectTriMeshTriangle( SurfB) ;
|
||||
IdentifyParts() ;
|
||||
SurfB.IdentifyParts() ;
|
||||
@@ -2412,7 +2415,7 @@ SurfTriMesh::Add( const ISurfTriMesh& Other)
|
||||
return false ;
|
||||
RemoveTJunctions() ;
|
||||
bool bResult = ( AdjustVertices() && DoCompacting()) ;
|
||||
Scale( frScalingRef, 1. / 1024., 1. / 1024., 1. / 1024.) ;
|
||||
Scale( frScalingRef, 1. / BOOLEAN_SCALE, 1. / BOOLEAN_SCALE, 1. / BOOLEAN_SCALE) ;
|
||||
return bResult ;
|
||||
}
|
||||
|
||||
@@ -2425,8 +2428,8 @@ SurfTriMesh::Intersect( const ISurfTriMesh& Other)
|
||||
SurfB.CopyFrom( &Other) ;
|
||||
Frame3d frScalingRef ;
|
||||
frScalingRef.Set( m_vVert[0].ptP, X_AX, Y_AX, Z_AX) ;
|
||||
Scale( frScalingRef, 1024., 1024., 1024.) ;
|
||||
SurfB.Scale( frScalingRef, 1024., 1024., 1024.) ;
|
||||
Scale( frScalingRef, BOOLEAN_SCALE, BOOLEAN_SCALE, BOOLEAN_SCALE) ;
|
||||
SurfB.Scale( frScalingRef, BOOLEAN_SCALE, BOOLEAN_SCALE, BOOLEAN_SCALE) ;
|
||||
IntersectTriMeshTriangle( SurfB) ;
|
||||
IdentifyParts() ;
|
||||
SurfB.IdentifyParts() ;
|
||||
@@ -2455,7 +2458,7 @@ SurfTriMesh::Intersect( const ISurfTriMesh& Other)
|
||||
return false ;
|
||||
RemoveTJunctions() ;
|
||||
bool bResult = ( AdjustVertices() && DoCompacting()) ;
|
||||
Scale( frScalingRef, 1. / 1024., 1. / 1024., 1. / 1024.) ;
|
||||
Scale( frScalingRef, 1. / BOOLEAN_SCALE, 1. / BOOLEAN_SCALE, 1. / BOOLEAN_SCALE) ;
|
||||
return bResult ;
|
||||
}
|
||||
|
||||
@@ -2468,8 +2471,8 @@ SurfTriMesh::Subtract( const ISurfTriMesh& Other)
|
||||
SurfB.CopyFrom( &Other) ;
|
||||
Frame3d frScalingRef;
|
||||
frScalingRef.Set( m_vVert[0].ptP, X_AX, Y_AX, Z_AX) ;
|
||||
Scale( frScalingRef, 1024., 1024., 1024.) ;
|
||||
SurfB.Scale( frScalingRef, 1024., 1024., 1024.) ;
|
||||
Scale( frScalingRef, BOOLEAN_SCALE, BOOLEAN_SCALE, BOOLEAN_SCALE) ;
|
||||
SurfB.Scale( frScalingRef, BOOLEAN_SCALE, BOOLEAN_SCALE, BOOLEAN_SCALE) ;
|
||||
IntersectTriMeshTriangle( SurfB) ;
|
||||
IdentifyParts() ;
|
||||
SurfB.IdentifyParts() ;
|
||||
@@ -2499,7 +2502,7 @@ SurfTriMesh::Subtract( const ISurfTriMesh& Other)
|
||||
return false ;
|
||||
RemoveTJunctions() ;
|
||||
bool bResult = ( AdjustVertices() && DoCompacting()) ;
|
||||
Scale( frScalingRef, 1. / 1024., 1. / 1024., 1. / 1024.) ;
|
||||
Scale( frScalingRef, 1. / BOOLEAN_SCALE, 1. / BOOLEAN_SCALE, 1. / BOOLEAN_SCALE) ;
|
||||
return bResult ;
|
||||
}
|
||||
|
||||
@@ -2515,11 +2518,11 @@ SurfTriMesh::GetSurfClassification( const ISurfTriMesh& ClassifierSurf,
|
||||
SurfC.CopyFrom( &ClassifierSurf) ;
|
||||
Frame3d frScalingRef ;
|
||||
frScalingRef.Set( m_vVert[0].ptP, X_AX, Y_AX, Z_AX) ;
|
||||
Scale( frScalingRef, 1024., 1024., 1024.) ;
|
||||
SurfC.Scale( frScalingRef, 1024., 1024., 1024.) ;
|
||||
Scale( frScalingRef, BOOLEAN_SCALE, BOOLEAN_SCALE, BOOLEAN_SCALE) ;
|
||||
SurfC.Scale( frScalingRef, BOOLEAN_SCALE, BOOLEAN_SCALE, BOOLEAN_SCALE) ;
|
||||
IntersectTriMeshTriangle( SurfC) ;
|
||||
IdentifyParts() ;
|
||||
Scale( frScalingRef, 1. / 1024., 1. / 1024., 1. / 1024.) ;
|
||||
Scale( frScalingRef, 1. / BOOLEAN_SCALE, 1. / BOOLEAN_SCALE, 1. / BOOLEAN_SCALE) ;
|
||||
|
||||
int nTriaNum = GetTriangleSize() ;
|
||||
for ( int nT = 0 ; nT < nTriaNum ; ++ nT) {
|
||||
|
||||
Reference in New Issue
Block a user