EgtMachKernel :
- aggiunta funzione SetMachinLook.
This commit is contained in:
+85
@@ -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 ;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user