EgtMachKernel 1.6j3 :

- aggiunta gestione DB utensili
- migliorata simulazione
- aggiunta impostazione macchina corrente anche senza macchinata.
This commit is contained in:
Dario Sassi
2015-10-27 10:12:13 +00:00
parent 2de785c6ce
commit 2c89d112fa
32 changed files with 904 additions and 237 deletions
+75 -2
View File
@@ -96,12 +96,13 @@ Machine::SetCurrTool( const string& sTool, const string& sHead, int nExit)
if ( nToolId == GDB_ID_NULL || m_pGeomDB->GetGdbType( nToolId) != GDB_TY_GROUP)
return false ;
double dTLen = 0 ;
if ( ! m_pMchMgr->GetToolParam( sTool, TPA_LEN, dTLen))
if ( ! m_pMchMgr->TdbGetToolParam( sTool, TPA_LEN, dTLen))
return false ;
// assegno tutti i dati
m_nCalcHeadId = nHeadId ;
m_nCalcExitId = nExitId ;
m_nCalcToolId = nToolId ;
m_dCalcRot1W = pHead->GetRot1W() ;
m_ptCalcPos = pExit->GetPos() ;
m_vtCalcDir = pExit->GetTDir() ;
m_vtCalcADir = pHead->GetADir() ;
@@ -132,6 +133,14 @@ Machine::GetCurrTool( string& sTool)
return m_pGeomDB->GetName( m_nCalcToolId, sTool) ;
}
//----------------------------------------------------------------------------
double
Machine::GetCurrRot1W( void)
{
// restituisco il peso del primo asse rotante nei confronti di movimento
return m_dCalcRot1W ;
}
//----------------------------------------------------------------------------
bool
Machine::CalculateKinematicChain( void)
@@ -502,4 +511,68 @@ Machine::VerifyOutOfStroke( double dX, double dY, double dZ, double dAngA, doubl
nStat += 512 ;
}
return true ;
}
}
//----------------------------------------------------------------------------
int
Machine::GetCurrLinAxes( void)
{
return int( m_vCalcLinAx.size()) ;
}
//----------------------------------------------------------------------------
int
Machine::GetCurrRotAxes( void)
{
return int( m_vCalcRotAx.size()) ;
}
//----------------------------------------------------------------------------
bool
Machine::GetAllCurrAxesName( STRVECTOR& vAxName)
{
vAxName.clear() ;
bool bOk = true ;
// ciclo sugi assi lineari correnti
for ( auto& CalcLinAx : m_vCalcLinAx) {
Axis* pAx = GetAxis( CalcLinAx.nGrpId) ;
if ( pAx != nullptr)
vAxName.emplace_back( pAx->GetName()) ;
else
bOk = false ;
}
// ciclo sugi assi rotanti correnti
for ( auto& CalcRotAx : m_vCalcRotAx) {
Axis* pAx = GetAxis( CalcRotAx.nGrpId) ;
if ( pAx != nullptr)
vAxName.emplace_back( pAx->GetName()) ;
else
bOk = false ;
}
return bOk ;
}
//----------------------------------------------------------------------------
bool
Machine::GetAllCurrAxesHomePos( DBLVECTOR& vAxHomeVal)
{
vAxHomeVal.clear() ;
bool bOk = true ;
// ciclo sugi assi lineari correnti
for ( auto& CalcLinAx : m_vCalcLinAx) {
Axis* pAx = GetAxis( CalcLinAx.nGrpId) ;
if ( pAx != nullptr)
vAxHomeVal.emplace_back( pAx->GetHomeVal()) ;
else
bOk = false ;
}
// ciclo sugi assi rotanti correnti
for ( auto& CalcRotAx : m_vCalcRotAx) {
Axis* pAx = GetAxis( CalcRotAx.nGrpId) ;
if ( pAx != nullptr)
vAxHomeVal.emplace_back( pAx->GetHomeVal()) ;
else
bOk = false ;
}
return bOk ;
}