EgtMachKernel 1.6l9 :

- aggiunta funzione per Info su extra-corse
- aggiunte funzioni GetOperationMode e GetOperationStatus
- migliorata simulazione con sole rotazioni
- in simulazione, quando si incontra una extra-corsa è possibile richiedere info relative.
This commit is contained in:
Dario Sassi
2016-01-18 08:01:58 +00:00
parent b23c5c5699
commit a449bd16cc
9 changed files with 128 additions and 29 deletions
+44 -13
View File
@@ -652,44 +652,75 @@ Machine::GetNearestAngleInStroke( int nId, double dAngRef, double& dAng)
//----------------------------------------------------------------------------
bool
Machine::VerifyOutOfStroke( double dX, double dY, double dZ, double dAngA, double dAngB, int& nStat)
Machine::VerifyOutstroke( double dX, double dY, double dZ, double dAngA, double dAngB, int& nStat)
{
// default tutto ok
nStat = 0 ;
m_sOutstrokeInfo.clear() ;
// primo lineare
if ( m_vCalcLinAx.size() >= 1) {
if ( dX < m_vCalcLinAx[0].stroke.Min)
if ( dX < m_vCalcLinAx[0].stroke.Min) {
nStat += 1 ;
else if( dX > m_vCalcLinAx[0].stroke.Max)
string sAxName = GetAxis( m_vCalcLinAx[0].nGrpId)->GetName() ;
m_sOutstrokeInfo += sAxName + "=" + ToString( dX - m_vCalcLinAx[0].stroke.Min, 1) + " (L1-) " ;
}
else if( dX > m_vCalcLinAx[0].stroke.Max) {
nStat += 2 ;
string sAxName = GetAxis( m_vCalcLinAx[0].nGrpId)->GetName() ;
m_sOutstrokeInfo += sAxName + "=" + ToString( dX - m_vCalcLinAx[0].stroke.Max, 1) + " (L1+) " ;
}
}
// secondo lineare
if ( m_vCalcLinAx.size() >= 2) {
if ( dY < m_vCalcLinAx[1].stroke.Min)
if ( dY < m_vCalcLinAx[1].stroke.Min) {
nStat += 4 ;
else if( dY > m_vCalcLinAx[1].stroke.Max)
string sAxName = GetAxis( m_vCalcLinAx[1].nGrpId)->GetName() ;
m_sOutstrokeInfo += sAxName + "=" + ToString( dY - m_vCalcLinAx[1].stroke.Min, 1) + " (L2-) " ;
}
else if( dY > m_vCalcLinAx[1].stroke.Max) {
nStat += 8 ;
string sAxName = GetAxis( m_vCalcLinAx[1].nGrpId)->GetName() ;
m_sOutstrokeInfo += sAxName + "=" + ToString( dY - m_vCalcLinAx[1].stroke.Max, 1) + " (L2+) " ;
}
}
// terzo lineare
if ( m_vCalcLinAx.size() >= 3) {
if ( dZ < m_vCalcLinAx[2].stroke.Min)
if ( dZ < m_vCalcLinAx[2].stroke.Min) {
nStat += 16 ;
else if( dZ > m_vCalcLinAx[2].stroke.Max)
string sAxName = GetAxis( m_vCalcLinAx[2].nGrpId)->GetName() ;
m_sOutstrokeInfo += sAxName + "=" + ToString( dZ - m_vCalcLinAx[2].stroke.Min, 1) + " (L3-) " ;
}
else if( dZ > m_vCalcLinAx[2].stroke.Max) {
nStat += 32 ;
string sAxName = GetAxis( m_vCalcLinAx[2].nGrpId)->GetName() ;
m_sOutstrokeInfo += sAxName + "=" + ToString( dZ - m_vCalcLinAx[2].stroke.Max, 1) + " (L3+) " ;
}
}
// eventuale primo rotante
if ( m_vCalcRotAx.size() >= 1) {
if ( dAngA < m_vCalcRotAx[0].stroke.Min)
if ( dAngA < m_vCalcRotAx[0].stroke.Min) {
nStat += 64 ;
else if( dAngA > m_vCalcRotAx[0].stroke.Max)
string sAxName = GetAxis( m_vCalcRotAx[0].nGrpId)->GetName() ;
m_sOutstrokeInfo += sAxName + "=" + ToString( dAngA - m_vCalcRotAx[0].stroke.Min, 1) + " (R1-) " ;
}
else if( dAngA > m_vCalcRotAx[0].stroke.Max) {
nStat += 128 ;
string sAxName = GetAxis( m_vCalcRotAx[0].nGrpId)->GetName() ;
m_sOutstrokeInfo += sAxName + "=" + ToString( dAngA - m_vCalcRotAx[0].stroke.Max, 1) + " (R1+) " ;
}
}
// eventuale secondo rotante
if ( m_vCalcRotAx.size() >= 2) {
if ( dAngB < m_vCalcRotAx[1].stroke.Min)
if ( dAngB < m_vCalcRotAx[1].stroke.Min) {
nStat += 256 ;
else if( dAngB > m_vCalcRotAx[1].stroke.Max)
string sAxName = GetAxis( m_vCalcRotAx[1].nGrpId)->GetName() ;
m_sOutstrokeInfo += sAxName + "=" + ToString( dAngB - m_vCalcRotAx[1].stroke.Min, 1) + " (R2-) " ;
}
else if( dAngB > m_vCalcRotAx[1].stroke.Max) {
nStat += 512 ;
string sAxName = GetAxis( m_vCalcRotAx[1].nGrpId)->GetName() ;
m_sOutstrokeInfo += sAxName + "=" + ToString( dAngB - m_vCalcRotAx[1].stroke.Max, 1) + " (R2+) " ;
}
}
return true ;
}
@@ -714,7 +745,7 @@ Machine::GetAllCurrAxesName( STRVECTOR& vAxName)
{
vAxName.clear() ;
bool bOk = true ;
// ciclo sugi assi lineari correnti
// ciclo sugli assi lineari correnti
for ( auto& CalcLinAx : m_vCalcLinAx) {
Axis* pAx = GetAxis( CalcLinAx.nGrpId) ;
if ( pAx != nullptr)
@@ -722,7 +753,7 @@ Machine::GetAllCurrAxesName( STRVECTOR& vAxName)
else
bOk = false ;
}
// ciclo sugi assi rotanti correnti
// ciclo sugli assi rotanti correnti
for ( auto& CalcRotAx : m_vCalcRotAx) {
Axis* pAx = GetAxis( CalcRotAx.nGrpId) ;
if ( pAx != nullptr)