EgtGeomKernel :
- miglioria a costruzione Zmap.
This commit is contained in:
+26
-31
@@ -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 ;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user