EgtMachKernel :

- aggiunta funzione SetMachinLook.
This commit is contained in:
Dario Sassi
2016-01-18 16:19:22 +00:00
parent a449bd16cc
commit 5737467fec
5 changed files with 102 additions and 21 deletions
+85
View File
@@ -441,6 +441,22 @@ Machine::GetAxis( int nGroup) const
return ( dynamic_cast<Axis*>( m_pGeomDB->GetUserObj( nGroup))) ;
}
//----------------------------------------------------------------------------
bool
Machine::IsLinearAxisGroup( int nGroup) const
{
Axis* pAx = GetAxis( nGroup) ;
return ( pAx != nullptr && pAx->GetType() == MCH_AT_LINEAR) ;
}
//----------------------------------------------------------------------------
bool
Machine::IsRotaryAxisGroup( int nGroup) const
{
Axis* pAx = GetAxis( nGroup) ;
return ( pAx != nullptr && pAx->GetType() == MCH_AT_ROTARY) ;
}
//----------------------------------------------------------------------------
Table*
Machine::GetTable( int nGroup) const
@@ -575,3 +591,72 @@ Machine::CreateExitGroups( int nLay, const MUEXITVECTOR& vMuExit)
}
return true ;
}
//----------------------------------------------------------------------------
bool
Machine::SetLook( int nFlag)
{
// verifico DB geometrico
if ( m_pGeomDB == nullptr)
return false ;
// recupero l'identificativo del gruppo di base della macchina
int nMBaseId = m_pGeomDB->GetFirstInGroup( GetMGeoId()) ;
// recupero la tavola corrente
int nTabId = GetCurrTable() ;
if ( nTabId == GDB_ID_NULL)
return false ;
// nascondo o visualizzo i fratelli e tutti i fratelli degli ascendenti della tavola
bool bTabOnly = ( nFlag != MCH_LOOK_ALL) ;
int nTabCurrId = nTabId ;
int nParentId = m_pGeomDB->GetParentId( nTabCurrId) ;
while ( nParentId != GDB_ID_NULL && nParentId != nMBaseId) {
int nId = m_pGeomDB->GetFirstInGroup( nParentId) ;
while ( nId != GDB_ID_NULL) {
if ( nId != nTabCurrId)
m_pGeomDB->SetStatus( nId, ( bTabOnly ? GDB_ST_OFF : GDB_ST_ON)) ;
nId = m_pGeomDB->GetNext( nId) ;
}
nTabCurrId = nParentId ;
nParentId = m_pGeomDB->GetParentId( nParentId) ;
}
// recupero l'utensile corrente
int nToolId = GetCurrTool() ;
// nascondo o visualizzo i fratelli e tutti i fratelli degli ascendenti
bool bToolOnly = ( nFlag > MCH_LOOK_TAB && nFlag < MCH_LOOK_ALL) ;
int nToolCurrId = nToolId ;
nParentId = m_pGeomDB->GetParentId( nToolCurrId) ;
while ( nParentId != GDB_ID_NULL && nParentId != nMBaseId) {
bool bHide = bToolOnly ;
if ( nFlag == MCH_LOOK_TAB_HEAD) {
if ( IsHeadGroup( nParentId) || IsRotaryAxisGroup( nParentId))
bHide = false ;
}
int nId = m_pGeomDB->GetFirstInGroup( nParentId) ;
while ( nId != GDB_ID_NULL) {
if ( nId != nToolCurrId)
m_pGeomDB->SetStatus( nId, ( bHide ? GDB_ST_OFF : GDB_ST_ON)) ;
else
m_pGeomDB->SetStatus( nId, GDB_ST_ON) ;
nId = m_pGeomDB->GetNext( nId) ;
}
nToolCurrId = nParentId ;
nParentId = m_pGeomDB->GetParentId( nParentId) ;
}
// sistemo gli oggetti del gruppo di base
int nId = m_pGeomDB->GetFirstInGroup( nMBaseId) ;
while ( nId != GDB_ID_NULL) {
if ( nId != nTabCurrId && nId != nToolCurrId)
m_pGeomDB->SetStatus( nId, ( nFlag != MCH_LOOK_ALL ? GDB_ST_OFF : GDB_ST_ON)) ;
else if ( nId == nTabCurrId)
m_pGeomDB->SetStatus( nId, GDB_ST_ON) ;
else
m_pGeomDB->SetStatus( nId, ( nFlag == MCH_LOOK_TAB ? GDB_ST_OFF : GDB_ST_ON)) ;
nId = m_pGeomDB->GetNext( nId) ;
}
return true ;
}