EgtMachKernel :
- modifiche per visualizzazione utensili con lavorazioni.
This commit is contained in:
+34
-1
@@ -121,7 +121,10 @@ bool
|
||||
Machining::ShowTool( int nPath, double dFraz) const
|
||||
{
|
||||
// verifico validità gestore DB geometrico
|
||||
if ( m_pGeomDB == nullptr)
|
||||
if ( m_pGeomDB == nullptr || m_pMchMgr == nullptr)
|
||||
return false ;
|
||||
Machine* pMch = m_pMchMgr->GetCurrMachine() ;
|
||||
if ( pMch == nullptr)
|
||||
return false ;
|
||||
// recupero gruppo per geometria di lavorazione (Cutter Location)
|
||||
int nClId = m_pGeomDB->GetFirstNameInGroup( GetOwner(), MCH_CL) ;
|
||||
@@ -131,12 +134,16 @@ Machining::ShowTool( int nPath, double dFraz) const
|
||||
int nEntId = m_pGeomDB->GetFirstInGroup( m_pGeomDB->GetFirstGroupInGroup( nClId)) ;
|
||||
if ( nEntId == GDB_ID_NULL)
|
||||
return false ;
|
||||
string sName ; m_pGeomDB->GetName( nEntId, sName) ;
|
||||
if ( sName == MCH_CL_CLIMB)
|
||||
nEntId = m_pGeomDB->GetNext( nEntId) ;
|
||||
// recupero i dati di questa entità
|
||||
const CamData* pCamData = GetCamData( m_pGeomDB->GetUserObj( nEntId)) ;
|
||||
if ( pCamData == nullptr)
|
||||
return false ;
|
||||
Point3d ptEnd = pCamData->GetEndPoint() ;
|
||||
Vector3d vtTool = pCamData->GetToolDir() ;
|
||||
Vector3d vtBAux = pCamData->GetBackAuxDir() ;
|
||||
// creo o svuoto gruppo per anteprima utensile
|
||||
int nStId = m_pGeomDB->GetFirstNameInGroup( GetOwner(), MCH_ST) ;
|
||||
// se non c'è, lo aggiungo
|
||||
@@ -154,6 +161,32 @@ Machining::ShowTool( int nPath, double dFraz) const
|
||||
int nHeadId = m_pMchMgr->GetHeadId( GetHeadName()) ;
|
||||
int nId = m_pGeomDB->CopyGlob( nHeadId, GDB_ID_NULL, nStId) ;
|
||||
m_pGeomDB->SetStatus( nId, GDB_ST_ON) ;
|
||||
// dati correnti testa/uscita
|
||||
int nExitId = m_pGeomDB->GetFirstNameInGroup( nId, MCH_EXIT + ToString( GetExitNbr())) ;
|
||||
Frame3d frExit ;
|
||||
m_pGeomDB->GetGroupGlobFrame( nExitId, frExit) ;
|
||||
Point3d ptOrig = frExit.Orig() ;
|
||||
Vector3d vtDir = frExit.VersZ() ;
|
||||
Vector3d vtAux ;
|
||||
int nAvId = m_pGeomDB->GetFirstNameInGroup( nId, MCH_AUX_VECT) ;
|
||||
ExeStartVector( nAvId, GDB_ID_ROOT, vtAux) ;
|
||||
// rototraslo opportunamente
|
||||
Frame3d frHead ;
|
||||
m_pGeomDB->GetGroupGlobFrame( nId, frHead) ;
|
||||
Frame3d frRef ;
|
||||
if ( vtAux.IsSmall())
|
||||
frRef.Set( ptOrig, vtDir) ;
|
||||
else
|
||||
frRef.Set( ptOrig, vtDir, vtAux) ;
|
||||
Frame3d frShow ;
|
||||
if ( vtBAux.IsSmall())
|
||||
frShow.Set( ptEnd + vtTool * GetToolData().m_dLen, vtTool) ;
|
||||
else
|
||||
frShow.Set( ptEnd + vtTool * GetToolData().m_dLen, vtTool, vtBAux) ;
|
||||
frHead.ToLoc( frRef) ;
|
||||
frHead.ToGlob( frShow) ;
|
||||
*(m_pGeomDB->GetGroupFrame( nId)) = frHead ;
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user