EgtGeomKernel : migliorata scalatura non uniforme, con conservazione del piano XY dei riferimenti di gruppo.

This commit is contained in:
Dario Sassi
2014-01-20 10:57:14 +00:00
parent 4ebb43bf1e
commit b2c6866eff
7 changed files with 115 additions and 15 deletions
+32 -6
View File
@@ -755,12 +755,38 @@ GdbExecutor::GetPointWParam( const std::string& sParam, Point3d& ptP, double& dW
bool
GdbExecutor::GetFrameParam( const std::string& sParam, Frame3d& frF)
{
// deve essere nome di frame già nel DB
const IGeoFrame3d* pFr ;
if ( ( pFr = GetGeoFrame3d( m_pGDB->GetGeoObj( GetIdParam( sParam)))) == nullptr)
return false ;
frF = pFr->GetFrame() ;
return true ;
// se insieme di punto origine e tre versori
if ( sParam[0] == '(') {
Point3d ptOrig ;
Vector3d vtX ;
Vector3d vtY ;
Vector3d vtZ ;
string sTmp ;
STRVECTOR vsParams ;
STRVECTOR::iterator Iter ;
// elimino primo e ultimo carattere
sTmp = sParam.substr( 1, sParam.size()-2) ;
// divido in parti
Tokenize( sTmp, ",", "(", ")", vsParams) ;
// verifico siano 4 parti e le converto
if ( vsParams.size() != 4)
return false ;
if ( GetPointParam( vsParams[0], ptOrig) &&
GetVectorParam( vsParams[1], vtX) &&
GetVectorParam( vsParams[2], vtY) &&
GetVectorParam( vsParams[3], vtZ))
return frF.Set( ptOrig, vtX, vtY, vtZ) ;
else
return false ;
}
// altrimenti nome di frame già nel DB
else {
const IGeoFrame3d* pFr ;
if ( ( pFr = GetGeoFrame3d( m_pGDB->GetGeoObj( GetIdParam( sParam)))) == nullptr)
return false ;
frF = pFr->GetFrame() ;
return true ;
}
}
//----------------------------------------------------------------------------