EgtGeomKernel 1.6l10 :

- migliorie a Zmap.
This commit is contained in:
Dario Sassi
2016-02-01 07:42:49 +00:00
parent d945d53ab5
commit d21f27ae2d
5 changed files with 834 additions and 19 deletions
+161 -8
View File
@@ -2571,30 +2571,55 @@ GdbExecutor::SurfTriMeshDoSewing( const STRVECTOR& vsParams)
bool
GdbExecutor::ExecuteVolZmap(const string& sCmd2, const STRVECTOR& vsParams)
{
// parametri : Id, IdParent, ptO, dPrec, dLengthX, dLengthY, dLengthZ
// se creazione
if ( sCmd2 == "") {
return VolZmapCreate( vsParams) ;
}
// se sottrazione intervalli
else if ( sCmd2 == "SUB") {
return VolZmapIntervalsSubtraction( vsParams) ;
}
// se addizione intervalli
else if ( sCmd2 == "ADD") {
return VolZmapIntervalsAddiction( vsParams) ;
}
else if ( sCmd2 == "MIL") {
return VolZmapMilling( vsParams) ;
}
else if ( sCmd2 == "SET") {
return VolZmapSetTool( vsParams) ;
}
return false ;
}
//----------------------------------------------------------------------------
bool
GdbExecutor::VolZmapCreate( const STRVECTOR& vsParams)
{
// parametri : Id, IdParent, ptO, dPrec, dLengthX, dLengthY, dLengthZ
if ( vsParams.size() != 7)
return false ;
// recupero il riferimento in cui è immerso
// recupero il riferimento in cui è immerso
Frame3d frRef ;
if ( ! m_pGDB->GetGroupGlobFrame( GetIdParam( vsParams[1]), frRef))
return false ;
// recupero punto iniziale
// recupero punto iniziale
Point3d ptO ;
if ( ! GetPointParam( vsParams[2], frRef, ptO))
return false ;
// recupero precisione
// recupero precisione
double dPrec ;
if ( ! FromString( vsParams[3], dPrec))
return false ;
// recupero LunghezzaX
// recupero LunghezzaX
double dLengthX ;
if ( ! FromString( vsParams[4], dLengthX))
return false ;
// recupero LunghezzaY
// recupero LunghezzaY
double dLengthY ;
if ( ! FromString( vsParams[5], dLengthY))
return false ;
// recupero LunghezzaZ
// recupero LunghezzaZ
double dLengthZ ;
if ( ! FromString( vsParams[6], dLengthZ))
return false ;
@@ -2603,7 +2628,135 @@ GdbExecutor::ExecuteVolZmap(const string& sCmd2, const STRVECTOR& vsParams)
pZprova->CreateMap( ptO, dPrec, dLengthX, dLengthY, dLengthZ);
// inserisco nel DB
return AddGeoObj(vsParams[0], vsParams[1], Release( pZprova)) ;
return AddGeoObj(vsParams[0], vsParams[1], Release( pZprova)) ;
}
//----------------------------------------------------------------------------
bool
GdbExecutor::VolZmapIntervalsSubtraction( const STRVECTOR& vsParams)
{
// parametri : Id, IdParent, ptP, dMin, dMax
if ( vsParams.size() != 5)
return false ;
// recupero il riferimento in cui è immerso
Frame3d frRef ;
if ( ! m_pGDB->GetGroupGlobFrame( GetIdParam( vsParams[1]), frRef))
return false ;
// recupero punto
Point3d ptP ;
if ( ! GetPointParam( vsParams[2], frRef, ptP))
return false ;
// recupero minimo
double dMin ;
if ( ! FromString( vsParams[3], dMin))
return false ;
// recupero massimo
double dMax ;
if ( ! FromString( vsParams[4], dMax))
return false ;
// recupero lo Zmap
int nIdZmap = GetIdParam( vsParams[0]) ;
VolZmap* pZmap = GetBasicVolZmap( m_pGDB->GetGeoObj( nIdZmap)) ;
if ( pZmap == nullptr)
return false ;
// eseguo la sottrazione
return pZmap->SubtractIntervals( ptP, dMin, dMax) ;
}
//----------------------------------------------------------------------------
bool
GdbExecutor::VolZmapIntervalsAddiction( const STRVECTOR& vsParams)
{
// parametri : Id, IdParent, ptP, dMin, dMax
if ( vsParams.size() != 5)
return false ;
// recupero il riferimento in cui è immerso
Frame3d frRef ;
if ( ! m_pGDB->GetGroupGlobFrame( GetIdParam( vsParams[1]), frRef))
return false ;
// recupero punto
Point3d ptP ;
if ( ! GetPointParam( vsParams[2], frRef, ptP))
return false ;
// recupero minimo
double dMin ;
if ( ! FromString( vsParams[3], dMin))
return false ;
// recupero massimo
double dMax ;
if ( ! FromString( vsParams[4], dMax))
return false ;
// recupero lo Zmap
int nIdZmap = GetIdParam( vsParams[0]) ;
VolZmap* pZmap = GetBasicVolZmap( m_pGDB->GetGeoObj( nIdZmap)) ;
if ( pZmap == nullptr)
return false ;
// eseguo l'addizione
return pZmap->AddIntervals( ptP, dMin, dMax) ;
}
//----------------------------------------------------------------------------
bool
GdbExecutor::VolZmapMilling( const STRVECTOR& vsParams)
{
// parametri : Id, IdParent, ptPs, ptPe, vtVs, vtVe
if ( vsParams.size() != 6)
return false ;
// recupero il riferimento in cui è immerso
Frame3d frRef ;
if ( ! m_pGDB->GetGroupGlobFrame( GetIdParam( vsParams[1]), frRef))
return false ;
// recupero punto iniziale
Point3d ptPs ;
if ( ! GetPointParam( vsParams[2], frRef, ptPs))
return false ;
// recupero punto finale
Point3d ptPe ;
if ( ! GetPointParam( vsParams[3], frRef, ptPe))
return false ;
// recupero il vettore direzione iniziale
Vector3d vtDs ;
if ( ! GetVectorParam( vsParams[4], frRef, vtDs))
return false ;
// recupero il vettore direzione iniziale
Vector3d vtDe ;
if ( ! GetVectorParam( vsParams[5], frRef, vtDe))
return false ;
// recupero lo Zmap
int nIdZmap = GetIdParam( vsParams[0]) ;
VolZmap* pZmap = GetBasicVolZmap( m_pGDB->GetGeoObj( nIdZmap)) ;
if ( pZmap == nullptr)
return false ;
// eseguo la lavorazione
return pZmap->MillingStep( ptPs, ptPe, vtDs, vtDe) ;
}
//----------------------------------------------------------------------------
bool
GdbExecutor::VolZmapSetTool( const STRVECTOR& vsParams)
{
// parametri : ZmapId, CrvId, nToolType, sToolName
if ( vsParams.size() != 4)
return false ;
// recupero lo Zmap
int nZmapId = GetIdParam( vsParams[0]) ;
VolZmap* pZmap = GetBasicVolZmap( m_pGDB->GetGeoObj( nZmapId)) ;
if ( pZmap == nullptr)
return false ;
// recupero il profilo utensile
int nCrvId = GetIdParam( vsParams[1]) ;
CurveComposite* pToolOutline = GetBasicCurveComposite( m_pGDB->GetGeoObj( nCrvId)) ;
if ( pToolOutline == nullptr)
return false ;
// recupero tipo utensile
int nToolType ;
if ( ! FromString( vsParams[2], nToolType))
return false ;
// recupero la stringa nome dell'utensile
string sToolName ;
sToolName = vsParams[3] ;
// assegno utensile
return pZmap->SetTool( sToolName, nToolType, pToolOutline) ;
}
//----------------------------------------------------------------------------