EgtGeomKernel 1.5d3 :
- aggiunte Move, Rot, Mirror e Scale di gruppo espresse nel suo proprio rif.
This commit is contained in:
+82
@@ -685,6 +685,25 @@ GeomDB::TranslateGlob( int nId, const Vector3d& vtMove)
|
||||
return pGdbObj->Translate( vtMoveLoc) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// La traslazione è espressa nel riferimento del gruppo (ovvero il proprio).
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
GeomDB::TranslateGroup( int nId, const Vector3d& vtMove)
|
||||
{
|
||||
// recupero il gruppo Gdb
|
||||
GdbGroup* pGdbGroup ;
|
||||
if ( ( pGdbGroup = GetGdbGroup( nId)) == nullptr)
|
||||
return false ;
|
||||
// utilizzo il riferimento proprio
|
||||
// porto il movimento nel riferimento in cui è immerso
|
||||
Vector3d vtMoveLoc = vtMove ;
|
||||
if ( ! vtMoveLoc.ToGlob( pGdbGroup->GetFrame()))
|
||||
return false ;
|
||||
// eseguo la traslazione
|
||||
return pGdbGroup->Translate( vtMoveLoc) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
GeomDB::Rotate( int nId, const Point3d& ptAx, const Vector3d& vtAx, double dCosAng, double dSinAng)
|
||||
@@ -720,6 +739,28 @@ GeomDB::RotateGlob( int nId, const Point3d& ptAx, const Vector3d& vtAx, double d
|
||||
return pGdbObj->Rotate( ptAxLoc, vtAxLoc, dCosAng, dSinAng) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// La rotazione è espressa nel riferimento del gruppo (ovvero il proprio).
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
GeomDB::RotateGroup( int nId, const Point3d& ptAx, const Vector3d& vtAx, double dCosAng, double dSinAng)
|
||||
{
|
||||
// recupero il gruppo Gdb
|
||||
GdbGroup* pGdbGroup ;
|
||||
if ( ( pGdbGroup = GetGdbGroup( nId)) == nullptr)
|
||||
return false ;
|
||||
// utilizzo il riferimento proprio
|
||||
// porto i parametri di rotazione nel riferimento in cui è immerso
|
||||
Point3d ptAxLoc = ptAx ;
|
||||
if ( ! ptAxLoc.ToGlob( pGdbGroup->GetFrame()))
|
||||
return false ;
|
||||
Vector3d vtAxLoc = vtAx ;
|
||||
if ( ! vtAxLoc.ToGlob( pGdbGroup->GetFrame()))
|
||||
return false ;
|
||||
// eseguo la rotazione
|
||||
return pGdbGroup->Rotate( ptAxLoc, vtAxLoc, dCosAng, dSinAng) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
GeomDB::Scale( int nId, const Frame3d& frRef, double dCoeffX, double dCoeffY, double dCoeffZ)
|
||||
@@ -752,6 +793,25 @@ GeomDB::ScaleGlob( int nId, const Frame3d& frRef, double dCoeffX, double dCoeffY
|
||||
return pGdbObj->Scale( frRefLoc, dCoeffX, dCoeffY, dCoeffZ) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// La scalatura è espressa nel riferimento del gruppo (ovvero il proprio).
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
GeomDB::ScaleGroup( int nId, const Frame3d& frRef, double dCoeffX, double dCoeffY, double dCoeffZ)
|
||||
{
|
||||
// recupero il gruppo Gdb
|
||||
GdbGroup* pGdbGroup ;
|
||||
if ( ( pGdbGroup = GetGdbGroup( nId)) == nullptr)
|
||||
return false ;
|
||||
// utilizzo il riferimento proprio
|
||||
// porto il riferimento di scalatura nel riferimento in cui è immerso
|
||||
Frame3d frRefLoc = frRef ;
|
||||
if ( ! frRefLoc.ToGlob( pGdbGroup->GetFrame()))
|
||||
return false ;
|
||||
// eseguo la scalatura
|
||||
return pGdbGroup->Scale( frRefLoc, dCoeffX, dCoeffY, dCoeffZ) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
GeomDB::Mirror( int nId, const Point3d& ptOn, const Vector3d& vtNorm)
|
||||
@@ -787,6 +847,28 @@ GeomDB::MirrorGlob( int nId, const Point3d& ptOn, const Vector3d& vtNorm)
|
||||
return pGdbObj->Mirror( ptOnLoc, vtNormLoc) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// La specchiatura è espressa nel riferimento del gruppo (ovvero il proprio).
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
GeomDB::MirrorGroup( int nId, const Point3d& ptOn, const Vector3d& vtNorm)
|
||||
{
|
||||
// recupero il gruppo Gdb
|
||||
GdbGroup* pGdbGroup ;
|
||||
if ( ( pGdbGroup = GetGdbGroup( nId)) == nullptr)
|
||||
return false ;
|
||||
// utilizzo il riferimento proprio
|
||||
// porto i parametri di mirror nel riferimento in cui è immerso
|
||||
Point3d ptOnLoc = ptOn ;
|
||||
if ( ! ptOnLoc.ToGlob( pGdbGroup->GetFrame()))
|
||||
return false ;
|
||||
Vector3d vtNormLoc = vtNorm ;
|
||||
if ( ! vtNormLoc.ToGlob( pGdbGroup->GetFrame()))
|
||||
return false ;
|
||||
// eseguo l'operazione
|
||||
return pGdbGroup->Mirror( ptOnLoc, vtNormLoc) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Selection
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user