EgtGeomKernel :

- miglioria a costruzione Zmap.
This commit is contained in:
Dario Sassi
2017-07-21 12:59:31 +00:00
parent e38d490bea
commit e162483df8
+26 -31
View File
@@ -238,8 +238,8 @@ VolZmap::CreateFromFlatRegion( const ISurfFlatRegion& Surf, double dDimZ, double
m_nNy[1] / m_nDexNumPBlock +
( m_nNy[1] % m_nDexNumPBlock >= m_nDexNumPBlock / 2 ? 1 : 0)) ;
}
else {
else {
m_MapFrame[1].Set( ptMapOrig, Y_AX, Z_AX, X_AX) ;
m_MapFrame[2].Set( ptMapOrig, Z_AX, X_AX, Y_AX) ;
@@ -308,36 +308,34 @@ VolZmap::CreateFromFlatRegion( const ISurfFlatRegion& Surf, double dDimZ, double
int nFind = 0 ;
// Numero di looop della componente connessa
// Numero di loop della componente connessa
int nLoopNum = Surf.GetLoopCount( nChunk) ;
// Ciclo sui loop della componente
for ( int nLoop = 0 ; nLoop < nLoopNum ; ++ nLoop) {
ICurve * pCurve = Surf.GetLoop( nChunk, nLoop) ;
PtrOwner< ICurve> pCurve( Surf.GetLoop( nChunk, nLoop)) ;
if ( IsNull( pCurve))
continue ;
if ( pCurve -> IsPointOn( ptP1, 10 * EPS_SMALL)) {
double dP1 ;
if ( pCurve->GetParamAtPoint( ptP1, dP1, 10 * EPS_SMALL)) {
double dP1 ;
Point3d ptTemp1 ;
Vector3d vtT1 ;
pCurve -> GetParamAtPoint(ptP1, dP1) ;
pCurve -> GetPointTang( dP1, ICurve::FROM_MINUS, ptTemp1, vtT1) ;
pCurve->GetPointTang( dP1, ICurve::FROM_MINUS, ptTemp1, vtT1) ;
vtN1 = vtT1 ^ Z_AX ;
nFind ++ ;
}
if ( pCurve -> IsPointOn( ptP2, 10 * EPS_SMALL)) {
double dP2 ;
if ( pCurve->GetParamAtPoint( ptP2, dP2, 10 * EPS_SMALL)) {
double dP2 ;
Point3d ptTemp2 ;
Vector3d vtT2 ;
pCurve -> GetParamAtPoint(ptP2, dP2) ;
pCurve -> GetPointTang( dP2, ICurve::FROM_MINUS, ptTemp2, vtT2) ;
pCurve->GetPointTang( dP2, ICurve::FROM_MINUS, ptTemp2, vtT2) ;
vtN2 = vtT2 ^ Z_AX ;
@@ -352,7 +350,7 @@ VolZmap::CreateFromFlatRegion( const ISurfFlatRegion& Surf, double dDimZ, double
break ;
}
}
// Se trovata componente esco dal cilco
// Se trovata componente esco dal ciclo
if ( nFind == 2)
break ;
}
@@ -465,16 +463,16 @@ VolZmap::CreateFromFlatRegion( const ISurfFlatRegion& Surf, double dDimZ, double
for ( int nLoop = 0 ; nLoop < nLoopNum ; ++ nLoop) {
ICurve * pCurve = Surf.GetLoop( nChunk, nLoop) ;
PtrOwner< ICurve> pCurve( Surf.GetLoop( nChunk, nLoop)) ;
if ( IsNull( pCurve))
continue ;
if ( pCurve -> IsPointOn( ptP1, 10 * EPS_SMALL)) {
double dP1 ;
if ( pCurve->GetParamAtPoint( ptP1, dP1, 10 * EPS_SMALL)) {
double dP1 ;
Point3d ptTemp1 ;
Vector3d vtT1, vtN1 ;
pCurve -> GetParamAtPoint(ptP1, dP1) ;
pCurve -> GetPointTang( dP1, ICurve::FROM_MINUS, ptTemp1, vtT1) ;
pCurve->GetPointTang( dP1, ICurve::FROM_MINUS, ptTemp1, vtT1) ;
vtN1 = vtT1 ^ Z_AX ;
// Aggiorno normale inferiore al tratto di dexel
@@ -483,14 +481,12 @@ VolZmap::CreateFromFlatRegion( const ISurfFlatRegion& Surf, double dDimZ, double
nFind ++ ;
}
if ( pCurve -> IsPointOn( ptP2, 10 * EPS_SMALL)) {
double dP2 ;
if ( pCurve->GetParamAtPoint( ptP2, dP2, 10 * EPS_SMALL)) {
double dP2 ;
Point3d ptTemp2 ;
Vector3d vtT2, vtN2 ;
pCurve -> GetParamAtPoint(ptP2, dP2) ;
pCurve -> GetPointTang( dP2, ICurve::FROM_MINUS, ptTemp2, vtT2) ;
pCurve->GetPointTang( dP2, ICurve::FROM_MINUS, ptTemp2, vtT2) ;
vtN2 = vtT2 ^ Z_AX ;
// Aggiorno normale superiore al tratto di dexel
@@ -498,14 +494,15 @@ VolZmap::CreateFromFlatRegion( const ISurfFlatRegion& Surf, double dDimZ, double
nFind ++ ;
}
// Se trovata componente esco dal cilco
// Se trovata componente esco dal ciclo
if ( nFind == 2) {
// Aggiorno il numero della componente connessa
m_Values[1][nPos1][nCurrentSize].nCompo = nChunk + 1 ;
}
}
// Se trovata componente esco dal cilco
// Se trovata componente esco dal ciclo
if ( nFind == 2)
break ;
}
@@ -519,14 +516,12 @@ VolZmap::CreateFromFlatRegion( const ISurfFlatRegion& Surf, double dDimZ, double
m_dMaxZ[0] = dDimZ ;
if ( bTriDex) {
m_dMinZ[1] = 0 ;
m_dMaxZ[1] = dLengthX ;
m_dMinZ[2] = 0 ;
m_dMaxZ[2] = dLengthY ;
}
else {
m_dMinZ[1] = 0 ;
m_dMaxZ[1] = 0 ;
m_dMinZ[2] = 0 ;
@@ -552,7 +547,7 @@ VolZmap::CreateFromFlatRegion( const ISurfFlatRegion& Surf, double dDimZ, double
bool
VolZmap::CreateFromTriMesh( const ISurfTriMesh& Surf, double dPrec, bool bTriDex)
{
// Se la superficie non è chiusa non ha senso continuare
// Se la superficie non è chiusa non ha senso continuare
if ( ! Surf.IsClosed())
return false ;