EgtGeomKernel : migliorata scalatura non uniforme, con conservazione del piano XY dei riferimenti di gruppo.
This commit is contained in:
+32
-6
@@ -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 ;
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user