EgtMachKernel 1.6r8 :

- aggiunta gestione SCC (Solution Choice Criterion) nelle lavorazioni
- possibilità di calcolo Tip con dimensioni massime anzichè quelle di lavoro
- migliorato controllo pezzi prima di inserimento nei grezzi
- migliorato caricamento tavola al cambio di gruppo di lavoro
- aggiunta prima versione di risalita tra i percorsi di lavorazione in base a controllo collisioni (ora solo box)
- in simulazione imposto variabile nome tavola prima di OnDispositionStart.
This commit is contained in:
Dario Sassi
2016-06-02 07:03:24 +00:00
parent 3cd21182d3
commit fe0cbd0191
37 changed files with 593 additions and 110 deletions
+55 -2
View File
@@ -17,6 +17,7 @@
#include "MachiningDataFactory.h"
#include "MachiningConst.h"
#include "/EgtDev/Include/EmkToolConst.h"
#include "/EgtDev/Include/EmkSimuGenConst.h"
#include "/EgtDev/Include/EGnStringUtils.h"
#include <array>
#include <cassert>
@@ -26,6 +27,7 @@ using namespace std ;
//----------------------------------------------------------------------------
enum nMillingKey {
KEY_DH = 0,
KEY_EAL,
KEY_F,
KEY_FE,
KEY_FS,
@@ -51,6 +53,8 @@ enum nMillingKey {
KEY_PS,
KEY_S,
KEY_SA,
KEY_SAL,
KEY_SCC,
KEY_ST,
KEY_STY,
KEY_TA,
@@ -65,6 +69,7 @@ enum nMillingKey {
static const std::array<std::string,KEY_ZZZ> sMillingKey = {
"DH",
"EAL",
"F",
"FE",
"FS",
@@ -90,6 +95,8 @@ static const std::array<std::string,KEY_ZZZ> sMillingKey = {
"PS",
"S",
"SA",
"SAL",
"SCC",
"ST",
"STY",
"TA",
@@ -136,6 +143,7 @@ MillingData::CopyFrom( const MachiningData* pMdata)
m_sName = pSdata->m_sName ;
m_ToolUuid = pSdata->m_ToolUuid ;
m_sToolName = pSdata->m_sToolName ;
m_nSolCh = pSdata->m_nSolCh ;
m_dSpeed = pSdata->m_dSpeed ;
m_dFeed = pSdata->m_dFeed ;
m_dEndFeed = pSdata->m_dEndFeed ;
@@ -151,6 +159,8 @@ MillingData::CopyFrom( const MachiningData* pMdata)
m_dStep = pSdata->m_dStep ;
m_nStepType = pSdata->m_nStepType ;
m_dSideAngle = pSdata->m_dSideAngle ;
m_dStartAddLen = pSdata->m_dStartAddLen ;
m_dEndAddLen = pSdata->m_dEndAddLen ;
m_bLeaveTab = pSdata->m_bLeaveTab ;
m_dTabLen = pSdata->m_dTabLen ;
m_dTabDist = pSdata->m_dTabDist ;
@@ -187,6 +197,7 @@ MillingData::SameAs(const MachiningData* pMdata) const
m_sName == pSdata->m_sName &&
m_ToolUuid == pSdata->m_ToolUuid &&
m_sToolName == pSdata->m_sToolName &&
m_nSolCh == pSdata->m_nSolCh &&
abs( m_dSpeed - pSdata->m_dSpeed) < EPS_MACH_ANG_PAR &&
abs( m_dFeed - pSdata->m_dFeed) < EPS_MACH_LEN_PAR &&
abs( m_dEndFeed - pSdata->m_dEndFeed) < EPS_MACH_LEN_PAR &&
@@ -202,6 +213,8 @@ MillingData::SameAs(const MachiningData* pMdata) const
abs( m_dStep - pSdata->m_dStep) < EPS_MACH_LEN_PAR &&
m_nStepType == pSdata->m_nStepType &&
abs( m_dSideAngle - pSdata->m_dSideAngle) < EPS_MACH_ANG_PAR &&
abs( m_dStartAddLen - pSdata->m_dStartAddLen) < EPS_MACH_LEN_PAR &&
abs( m_dEndAddLen - pSdata->m_dEndAddLen) < EPS_MACH_LEN_PAR &&
m_bLeaveTab == pSdata->m_bLeaveTab &&
abs( m_dTabLen - pSdata->m_dTabLen) < EPS_MACH_LEN_PAR &&
abs( m_dTabDist - pSdata->m_dTabDist) < EPS_MACH_LEN_PAR &&
@@ -262,6 +275,9 @@ MillingData::FromString( const string& sString, int& nKey)
if ( m_sDepth.empty())
m_sDepth = "0" ;
break ;
case KEY_EAL :
bOk = ::FromString( sVal, m_dEndAddLen) ;
break ;
case KEY_F :
bOk = ::FromString( sVal, m_dFeed) ;
break ;
@@ -338,6 +354,12 @@ MillingData::FromString( const string& sString, int& nKey)
case KEY_SA :
bOk = ::FromString( sVal, m_dSideAngle) ;
break ;
case KEY_SAL :
bOk = ::FromString( sVal, m_dStartAddLen) ;
break ;
case KEY_SCC :
bOk = ::FromString( sVal, m_nSolCh) ;
break ;
case KEY_ST :
bOk = ::FromString( sVal, m_dStep) ;
break ;
@@ -381,6 +403,7 @@ MillingData::ToString( int nInd) const
{
switch ( nInd) {
case KEY_DH : return ( sMillingKey[KEY_DH] + "=" + m_sDepth) ;
case KEY_EAL : return ( sMillingKey[KEY_EAL] + "=" + ::ToString( m_dEndAddLen)) ;
case KEY_F : return ( sMillingKey[KEY_F] + "=" + ::ToString( m_dFeed)) ;
case KEY_FE : return ( sMillingKey[KEY_FE] + "=" + ::ToString( m_dEndFeed)) ;
case KEY_FS : return ( sMillingKey[KEY_FS] + "=" + ::ToString( m_dStartFeed)) ;
@@ -406,6 +429,8 @@ MillingData::ToString( int nInd) const
case KEY_PS : return ( sMillingKey[KEY_PS] + "=" + ::ToString( m_dStartPos)) ;
case KEY_S : return ( sMillingKey[KEY_S] + "=" + ::ToString( m_dSpeed)) ;
case KEY_SA : return ( sMillingKey[KEY_SA] + "=" + ::ToString( m_dSideAngle)) ;
case KEY_SAL : return ( sMillingKey[KEY_SAL] + "=" + ::ToString( m_dStartAddLen)) ;
case KEY_SCC : return ( sMillingKey[KEY_SCC] + "=" + ::ToString( m_nSolCh)) ;
case KEY_ST : return ( sMillingKey[KEY_ST] + "=" + ::ToString( m_dStep)) ;
case KEY_STY : return ( sMillingKey[KEY_STY] + "=" + ::ToString( m_nStepType)) ;
case KEY_TA : return ( sMillingKey[KEY_TA] + "=" + ::ToString( m_dTabAngle)) ;
@@ -424,8 +449,16 @@ MillingData::ToString( int nInd) const
bool
MillingData::IsOptional( int nKey) const
{
return ( nKey == KEY_F || nKey == KEY_FE || nKey == KEY_FS || nKey == KEY_FT ||
nKey == KEY_NNS || nKey == KEY_NNU || nKey == KEY_OL || nKey == KEY_OR || nKey == KEY_S) ;
return ( nKey == KEY_EAL || nKey == KEY_F || nKey == KEY_FE || nKey == KEY_FS || nKey == KEY_FT ||
nKey == KEY_NNS || nKey == KEY_NNU || nKey == KEY_OL || nKey == KEY_OR || nKey == KEY_S ||
nKey == KEY_SAL || nKey == KEY_SCC) ;
}
//----------------------------------------------------------------------------
bool
MillingData::VerifySolCh( int nVal) const
{
return IsValidOperationScc( nVal) ;
}
//----------------------------------------------------------------------------
@@ -529,6 +562,11 @@ MillingData::SetParam( int nType, int nVal)
return false ;
m_nLeadOutType = nVal ;
return true ;
case MPA_SCC :
if ( ! VerifySolCh( nVal))
return false ;
m_nSolCh = nVal ;
return true ;
}
return false ;
}
@@ -576,6 +614,12 @@ MillingData::SetParam( int nType, double dVal)
return false ;
m_dSideAngle = dVal ;
return true ;
case MPA_STARTADDLEN :
m_dStartAddLen = dVal ;
return true ;
case MPA_ENDADDLEN :
m_dEndAddLen = dVal ;
return true ;
case MPA_TABLEN :
m_dTabLen = dVal ;
return true ;
@@ -688,6 +732,9 @@ MillingData::GetParam( int nType, int& nVal) const
case MPA_LEADOUTTYPE :
nVal = m_nLeadOutType ;
return true ;
case MPA_SCC :
nVal = m_nSolCh ;
return true ;
}
return false ;
}
@@ -730,6 +777,12 @@ MillingData::GetParam( int nType, double& dVal) const
case MPA_SIDEANGLE :
dVal = m_dSideAngle ;
return true ;
case MPA_STARTADDLEN :
dVal = m_dStartAddLen ;
return true ;
case MPA_ENDADDLEN :
dVal = m_dEndAddLen ;
return true ;
case MPA_TABLEN :
dVal = m_dTabLen ;
return true ;