EgtMachKernel :
- aggiunta gestione prima disposizione in lista operazioni - migliorato controllo dati macchina al caricamento - ora macchina deve essere disegnata e definita cinematicamente con tutti gli assi a 0, si definisce la posizione home e dopo il carico viene posta in questa posizione.
This commit is contained in:
+19
-13
@@ -25,13 +25,16 @@ using namespace std ;
|
||||
bool
|
||||
Machine::LoadTool( const string& sHead, int nExit, const string& sTool)
|
||||
{
|
||||
// controllo GeomDB
|
||||
if ( m_pGeomDB == nullptr)
|
||||
return false ;
|
||||
// recupero il gruppo della testa
|
||||
int nHdGrp = GetGroup( sHead) ;
|
||||
if ( ! IsHeadGroup( nHdGrp))
|
||||
return false ;
|
||||
// cerco il gruppo dell'uscita in quello della testa
|
||||
string sExit = MCH_EXIT + ToString( nExit) ;
|
||||
int nExGrp = m_pMchMgr->m_pGeomDB->GetFirstNameInGroup( nHdGrp, sExit) ;
|
||||
int nExGrp = m_pGeomDB->GetFirstNameInGroup( nHdGrp, sExit) ;
|
||||
Exit* pExit = GetExit( nExGrp) ;
|
||||
if ( pExit == nullptr)
|
||||
return false ;
|
||||
@@ -43,22 +46,22 @@ Machine::LoadTool( const string& sHead, int nExit, const string& sTool)
|
||||
if ( ! ExistsFile( sToolFile))
|
||||
return false ;
|
||||
// pulisco il gruppo dell'uscita
|
||||
m_pMchMgr->m_pGeomDB->EmptyGroup( nExGrp) ;
|
||||
m_pGeomDB->EmptyGroup( nExGrp) ;
|
||||
// inserisco l'utensile nel gruppo
|
||||
if ( ! m_pMchMgr->m_pGeomDB->Load( sToolFile, nExGrp))
|
||||
if ( ! m_pGeomDB->Load( sToolFile, nExGrp))
|
||||
return false ;
|
||||
int nTGrpId = m_pMchMgr->m_pGeomDB->GetFirstGroupInGroup( nExGrp) ;
|
||||
int nSolidId = m_pMchMgr->m_pGeomDB->GetFirstNameInGroup( nTGrpId, "SOLID") ;
|
||||
int nTGrpId = m_pGeomDB->GetFirstGroupInGroup( nExGrp) ;
|
||||
int nSolidId = m_pGeomDB->GetFirstNameInGroup( nTGrpId, "SOLID") ;
|
||||
if ( nSolidId == GDB_ID_NULL)
|
||||
return false ;
|
||||
m_pMchMgr->m_pGeomDB->RelocateGlob( nSolidId, nExGrp, GDB_FIRST_SON) ;
|
||||
m_pMchMgr->m_pGeomDB->Erase( nTGrpId) ;
|
||||
m_pMchMgr->m_pGeomDB->SetName( nSolidId, sTool) ;
|
||||
m_pGeomDB->RelocateGlob( nSolidId, nExGrp, GDB_FIRST_SON) ;
|
||||
m_pGeomDB->Erase( nTGrpId) ;
|
||||
m_pGeomDB->SetName( nSolidId, sTool) ;
|
||||
// lo ruoto 90 deg attorno alla X locale
|
||||
int nT = m_pMchMgr->m_pGeomDB->GetFirstGroupInGroup( nExGrp) ;
|
||||
int nT = m_pGeomDB->GetFirstGroupInGroup( nExGrp) ;
|
||||
if ( nT == GDB_ID_NULL)
|
||||
return false ;
|
||||
m_pMchMgr->m_pGeomDB->Rotate( nT, ORIG, X_AX, 90) ;
|
||||
m_pGeomDB->Rotate( nT, ORIG, X_AX, 90) ;
|
||||
pExit->SetTool( sTool) ;
|
||||
return EnableHeadInSet( sHead) ;
|
||||
}
|
||||
@@ -67,6 +70,9 @@ Machine::LoadTool( const string& sHead, int nExit, const string& sTool)
|
||||
bool
|
||||
Machine::ResetHeadSet( const string& sHead)
|
||||
{
|
||||
// controllo GeomDB
|
||||
if ( m_pGeomDB == nullptr)
|
||||
return false ;
|
||||
// recupero il set della testa
|
||||
const STRVECTOR& vsHSet = GetHSet( sHead) ;
|
||||
if ( vsHSet.empty())
|
||||
@@ -81,17 +87,17 @@ Machine::ResetHeadSet( const string& sHead)
|
||||
for ( int j = 1 ; true ; ++ j) {
|
||||
// recupero il gruppo dell'uscita
|
||||
string sExit = MCH_EXIT + ToString( j) ;
|
||||
int nExGrp = m_pMchMgr->m_pGeomDB->GetFirstNameInGroup( nHdGrp, sExit) ;
|
||||
int nExGrp = m_pGeomDB->GetFirstNameInGroup( nHdGrp, sExit) ;
|
||||
// recupero l'oggetto uscita
|
||||
Exit* pExit = GetExit( nExGrp) ;
|
||||
if ( pExit == nullptr)
|
||||
break ;
|
||||
// pulisco il gruppo dell'uscita
|
||||
m_pMchMgr->m_pGeomDB->EmptyGroup( nExGrp) ;
|
||||
m_pGeomDB->EmptyGroup( nExGrp) ;
|
||||
pExit->SetTool( "") ;
|
||||
}
|
||||
// visualizzo solo la prima testa
|
||||
m_pMchMgr->m_pGeomDB->SetStatus( nHdGrp, ( i == 0 ? GDB_ST_ON : GDB_ST_OFF)) ;
|
||||
m_pGeomDB->SetStatus( nHdGrp, ( i == 0 ? GDB_ST_ON : GDB_ST_OFF)) ;
|
||||
}
|
||||
return true ;
|
||||
}
|
||||
Reference in New Issue
Block a user