diff --git a/MachiningConst.h b/MachiningConst.h index 090113c..78b3ecc 100644 --- a/MachiningConst.h +++ b/MachiningConst.h @@ -71,6 +71,8 @@ MPA2TPA( int nType) case MPA_STARTFEED : return TPA_STARTFEED ; case MPA_ENDFEED : return TPA_ENDFEED ; case MPA_TIPFEED : return TPA_TIPFEED ; + case MPA_VERTFEED : return TPA_FEED ; + case MPA_BACKFEED : return TPA_FEED ; case MPA_OFFSR : return TPA_RADOFFSET ; case MPA_OFFSL : return TPA_LONOFFSET ; } diff --git a/MachiningsMgr.cpp b/MachiningsMgr.cpp index 9064f71..17dba4e 100644 --- a/MachiningsMgr.cpp +++ b/MachiningsMgr.cpp @@ -798,8 +798,8 @@ MachiningsMgr::SetCurrMachiningParam( int nType, double dVal) return m_pCurrMach->SetParam( nType, dVal) ; } // se feed - else if ( nType == MPA_FEED || - nType == MPA_STARTFEED || nType == MPA_ENDFEED || nType == MPA_TIPFEED || nType == MPA_VERTFEED) { + else if ( nType == MPA_FEED || nType == MPA_STARTFEED || nType == MPA_ENDFEED || + nType == MPA_TIPFEED || nType == MPA_VERTFEED || nType == MPA_BACKFEED) { // recupero valore da utensile const ToolData* pTdata ; if ( ! m_pCurrMach->GetTool( m_pTsMgr, pTdata)) @@ -945,8 +945,8 @@ MachiningsMgr::GetCurrMachiningParam( int nType, double& dVal) const return pTdata->GetParam( MPA2TPA( nType), dVal) ; } // se feed - else if ( nType == MPA_FEED || - nType == MPA_STARTFEED || nType == MPA_ENDFEED || nType == MPA_TIPFEED || nType == MPA_VERTFEED) { + else if ( nType == MPA_FEED || nType == MPA_STARTFEED || nType == MPA_ENDFEED || + nType == MPA_TIPFEED || nType == MPA_VERTFEED || nType == MPA_BACKFEED) { // recupero il valore if ( ! m_pCurrMach->GetParam( nType, dVal)) return false ; diff --git a/Sawing.cpp b/Sawing.cpp index 8b5412e..7c28122 100644 --- a/Sawing.cpp +++ b/Sawing.cpp @@ -296,6 +296,9 @@ Sawing::SetParam( int nType, double dVal) case MPA_TIPFEED : m_Params.m_dTipFeed = ( AreSameLenValue( dVal, m_TParams.m_dTipFeed) ? 0 : dVal) ; return true ; + case MPA_BACKFEED : + m_Params.m_dBackFeed = ( AreSameLenValue( dVal, m_TParams.m_dFeed) ? 0 : dVal) ; + return true ; case MPA_OFFSR : m_Params.m_dOffsR = ( AreSameLenValue( dVal, m_TParams.m_dOffsR) ? UNKNOWN_PAR : dVal) ; return true ; @@ -676,6 +679,9 @@ Sawing::GetParam( int nType, double& dVal) const case MPA_TIPFEED : dVal = GetTipFeed() ; return true ; + case MPA_BACKFEED : + dVal = GetBackFeed() ; + return true ; case MPA_OFFSR : dVal =GetOffsR() ; return true ; @@ -1738,7 +1744,7 @@ Sawing::GenerateLineCl( const ICurveLine* pLine, const Vector3d& vtTool, const V if ( AddLinearMove( ptP2) == GDB_ID_NULL) return false ; // movimento di lato - SetFeed( GetFeed()) ; + SetFeed( ( IsEven( i) ? GetBackFeed() : GetFeed())) ; if ( AddLinearMove( ptP3) == GDB_ID_NULL) return false ; } diff --git a/Sawing.h b/Sawing.h index a5363d7..49cde58 100644 --- a/Sawing.h +++ b/Sawing.h @@ -137,6 +137,8 @@ class Sawing : public Machining { return ( IsNullLenValue( m_Params.m_dEndFeed) ? m_TParams.m_dEndFeed : m_Params.m_dEndFeed) ; } double GetTipFeed( void) const { return ( IsNullLenValue( m_Params.m_dTipFeed) ? m_TParams.m_dTipFeed : m_Params.m_dTipFeed) ; } + double GetBackFeed( void) const + { return ( IsNullLenValue( m_Params.m_dBackFeed) ? m_TParams.m_dFeed : m_Params.m_dBackFeed) ; } double GetOffsL( void) const { return ( IsUnknownValue( m_Params.m_dOffsL) ? m_TParams.m_dOffsL : m_Params.m_dOffsL) ; } double GetOffsR( void) const diff --git a/SawingData.cpp b/SawingData.cpp index ff344b2..d4435a1 100644 --- a/SawingData.cpp +++ b/SawingData.cpp @@ -33,6 +33,7 @@ enum nSawingKey { KEY_DH, KEY_EAL, KEY_F, + KEY_FB, KEY_FE, KEY_FS, KEY_FT, @@ -72,6 +73,7 @@ static const std::array sSawingKey = { "DH", "EAL", "F", + "FB", "FE", "FS", "FT", @@ -145,6 +147,7 @@ SawingData::CopyFrom( const MachiningData* pMdata) m_dEndFeed = pSdata->m_dEndFeed ; m_dStartFeed = pSdata->m_dStartFeed ; m_dTipFeed = pSdata->m_dTipFeed ; + m_dBackFeed = pSdata->m_dBackFeed ; m_dOffsL = pSdata->m_dOffsL ; m_dOffsR = pSdata->m_dOffsR ; m_bInvert = pSdata->m_bInvert ; @@ -196,6 +199,7 @@ SawingData::SameAs(const MachiningData* pMdata) const AreSameLenValue( m_dEndFeed, pSdata->m_dEndFeed) && AreSameLenValue( m_dStartFeed, pSdata->m_dStartFeed) && AreSameLenValue( m_dTipFeed, pSdata->m_dTipFeed) && + AreSameLenValue( m_dBackFeed, pSdata->m_dBackFeed) && AreSameLenValue( m_dOffsL, pSdata->m_dOffsL) && AreSameLenValue( m_dOffsR, pSdata->m_dOffsR) && m_bInvert == pSdata->m_bInvert && @@ -281,6 +285,9 @@ SawingData::FromString( const string& sString, int& nKey) case KEY_F : bOk = ::FromString( sVal, m_dFeed) ; break ; + case KEY_FB : + bOk = ::FromString( sVal, m_dBackFeed) ; + break ; case KEY_FE : bOk = ::FromString( sVal, m_dEndFeed) ; break ; @@ -388,6 +395,7 @@ SawingData::ToString( int nInd) const case KEY_DH : return ( sSawingKey[KEY_DH] + "=" + m_sDepth) ; case KEY_EAL : return ( sSawingKey[KEY_EAL] + "=" + ::ToString( m_dEndAddLen)) ; case KEY_F : return ( sSawingKey[KEY_F] + "=" + ::ToString( m_dFeed)) ; + case KEY_FB : return ( sSawingKey[KEY_FB] + "=" + ::ToString( m_dBackFeed)) ; case KEY_FE : return ( sSawingKey[KEY_FE] + "=" + ::ToString( m_dEndFeed)) ; case KEY_FS : return ( sSawingKey[KEY_FS] + "=" + ::ToString( m_dStartFeed)) ; case KEY_FT : return ( sSawingKey[KEY_FT] + "=" + ::ToString( m_dTipFeed)) ; @@ -426,7 +434,7 @@ bool SawingData::IsOptional( int nKey) const { return ( nKey == KEY_AB || nKey == KEY_AI || - nKey == KEY_F || nKey == KEY_FE || nKey == KEY_FS || nKey == KEY_FT || + nKey == KEY_F || nKey == KEY_FB || 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_SCC || nKey == KEY_STB || nKey == KEY_STEA || nKey == KEY_STIA || nKey == KEY_STSA || nKey == KEY_STSAB) ; @@ -605,6 +613,9 @@ SawingData::SetParam( int nType, double dVal) case MPA_TIPFEED : m_dTipFeed = dVal ; return true ; + case MPA_BACKFEED : + m_dBackFeed = dVal ; + return true ; case MPA_OFFSL : m_dOffsL = dVal ; return true ; @@ -766,6 +777,9 @@ SawingData::GetParam( int nType, double& dVal) const case MPA_TIPFEED : dVal = m_dTipFeed ; return true ; + case MPA_BACKFEED : + dVal = m_dBackFeed ; + return true ; case MPA_OFFSL : dVal = m_dOffsL ; return true ; diff --git a/SawingData.h b/SawingData.h index e418dc9..c4a49aa 100644 --- a/SawingData.h +++ b/SawingData.h @@ -24,10 +24,11 @@ struct SawingData : public MachiningData std::string m_sBlockedAxis ; // eventuale asse rotante bloccato (Nome=val) int m_nSolCh ; // criterio scelta soluzione (quando possibili molteplici) double m_dSpeed ; // velocità di rotazione (+ se CCW, - se CW) ( se 0 da utensile) - double m_dFeed ; // velocità di lavorazione normale ( se 0 da utensile) - double m_dStartFeed ; // velocità di lavorazione iniziale ( se 0 da utensile) - double m_dEndFeed ; // velocità di lavorazione finale ( se 0 da utensile) - double m_dTipFeed ; // velocità di lavorazione di testa ( se 0 da utensile) + double m_dFeed ; // velocità di lavorazione normale ( se 0 da utensile) + double m_dStartFeed ; // velocità di lavorazione iniziale ( se 0 da utensile) + double m_dEndFeed ; // velocità di lavorazione finale ( se 0 da utensile) + double m_dTipFeed ; // velocità di lavorazione di testa ( se 0 da utensile) + double m_dBackFeed ; // velocità di lavorazione al ritorno ( se 0 da utensile) double m_dOffsR ; // offset radiale ( se UNKNOWN_PAR da utensile) double m_dOffsL ; // offset longitudinale ( se UNKNOWN_PAR da utensile) bool m_bInvert ; // flag di inversione direzione lavorazione @@ -36,9 +37,9 @@ struct SawingData : public MachiningData std::string m_sDepth ; // affondamento (espressione numerica) double m_dStartPos ; // quota di inizio lavorazione (sempre >= 0) double m_dStep ; // passo di affondamento (0=nessun passo) - double m_dStepBack ; // passo di affondamento all'indietro (0=nessun passo) + double m_dStepBack ; // passo di affondamento al ritorno (0=nessun passo) double m_dStepSideAng ; // passo di affondameto su tagli inclinati (0=nessun passo) - double m_dStepSideAngBack ;// passo di affondameto su tagli inclinati all'indietro (0=nessun passo) + double m_dStepSideAngBack ;// passo di affondameto su tagli inclinati al ritorno (0=nessun passo) double m_dStepExtArc ; // passo di affondamento su esterno archi (0=nessun passo) double m_dStepIntArc ; // passo di affondamento su interno archi (0=nessun passo) int m_nStepType ; // tipo di lavorazione a step (a gradini, una via, va e vieni) @@ -54,7 +55,7 @@ struct SawingData : public MachiningData std::string m_sUserNotes ; // note dell'utente SawingData( void) - : m_ToolUuid(), m_nSolCh( 0), m_dSpeed( 0), m_dFeed( 0), m_dStartFeed( 0), m_dEndFeed( 0), m_dTipFeed( 0), + : m_ToolUuid(), m_nSolCh( 0), m_dSpeed( 0), m_dFeed( 0), m_dStartFeed( 0), m_dEndFeed( 0), m_dTipFeed( 0), m_dBackFeed( 0), m_dOffsR( UNKNOWN_PAR), m_dOffsL( UNKNOWN_PAR), m_bInvert( false), m_nWorkSide( 0), m_nHeadSide(0), m_dStartPos( 0), m_dStep( 0), m_dStepBack( UNKNOWN_PAR), m_dStepSideAng( UNKNOWN_PAR), m_dStepSideAngBack( UNKNOWN_PAR), m_dStepExtArc( 0), m_dStepIntArc( 0), m_nStepType( 0),