From fec989005458abc75c5895f62ac5268c99c65fc5 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Tue, 26 Jul 2016 18:14:44 +0000 Subject: [PATCH] =?UTF-8?q?EgtMachKernel=201.6s8=20:=20-=20in=20foratura,?= =?UTF-8?q?=20risalita=20sopra=20foro=20ora=20ha=20flag=20104=20-=20in=20t?= =?UTF-8?q?aglio=20con=20lama=20possibilit=C3=A0=20di=20differenziare=20st?= =?UTF-8?q?ep=20su=20taglio=20inclinato=20-=20in=20fresatura=20si=20usa=20?= =?UTF-8?q?diametro=20di=20lavoro=20per=20fare=20offset=20-=20in=20OnSetHe?= =?UTF-8?q?ad=20ora=20si=20impostano=20anche=20diametro=20e=20lunghezza=20?= =?UTF-8?q?di=20ingombro=20dell'utensile.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Drilling.cpp | 4 ++-- EgtMachKernel.rc | Bin 11782 -> 11782 bytes MachineCalc.cpp | 4 ++++ MachiningsMgr.cpp | 22 ++++++++++++++++++++++ Milling.cpp | 2 +- Sawing.cpp | 19 ++++++++++++++++--- Sawing.h | 16 +++++++++------- SawingData.cpp | 17 ++++++++++++++++- SawingData.h | 3 ++- 9 files changed, 72 insertions(+), 15 deletions(-) diff --git a/Drilling.cpp b/Drilling.cpp index 1026e36..0246d92 100644 --- a/Drilling.cpp +++ b/Drilling.cpp @@ -1218,7 +1218,7 @@ Drilling::DoStandardDrilling( const Hole& hole, SelData Id, int nPathId) } // 6 -> ritorno all'approccio del foro SetFeed( GetEndFeed()) ; - SetFlag( 0) ; + SetFlag( 104) ; // risalita sopra il foro if ( AddLinearMove( ptP1) == GDB_ID_NULL) return false ; @@ -1371,7 +1371,7 @@ Drilling::DoPeckDrilling( const Hole& hole, SelData Id, int nPathId) // 6 -> ritorno all'approccio del foro SetFeed( GetEndFeed()) ; - SetFlag( 0) ; + SetFlag( 104) ; // risalita sopra il foro if ( AddLinearMove( ptP1) == GDB_ID_NULL) return false ; diff --git a/EgtMachKernel.rc b/EgtMachKernel.rc index 2d4900a6897926fe4af0cdbd80cf24030ed30b82..8ebc4c2e57c81e446b0a59acffc6536ad8f51c26 100644 GIT binary patch delta 97 zcmZpRX^YwLhmFx<^ItYwW=4z2j>5W|vxM9jH?QON0rG*u7nvrX5iEd9O=7{OSQ@Kh Hr8(RHS3w|Z delta 97 zcmZpRX^YwLhmFyE^ItYwW=8YLj>5W|vxM9jH?QON0rG*u7nvrX5iEd9O=7{OSQ@Kh Hr8(RHRjnXm diff --git a/MachineCalc.cpp b/MachineCalc.cpp index 312ce69..7adde68 100644 --- a/MachineCalc.cpp +++ b/MachineCalc.cpp @@ -33,6 +33,8 @@ static const string EVAR_TABNAME = ".TABNAME" ; // (string) nome della tavol static const string EVAR_HEAD = ".HEAD" ; // (string) nome della testa static const string EVAR_EXIT = ".EXIT" ; // (int) numero dell'uscita static const string EVAR_TOOL = ".TOOL" ; // (string) nome dell'utensile +static const string EVAR_TOTDIAM = ".TOTDIAM" ; // (num) diametro di ingombro dell'utensile +static const string EVAR_TOTLEN = ".TOTLEN" ; // (num) lunghezza di ingombro dell'utensile static const string ON_SET_TABLE = "OnSetTable" ; static const string ON_SET_HEAD = "OnSetHead" ; @@ -193,6 +195,8 @@ Machine::SetCurrTool( const string& sTool, const string& sHead, int nExit) bOk = bOk && LuaSetGlobVar( EMC_VAR + EVAR_HEAD, sHead) ; bOk = bOk && LuaSetGlobVar( EMC_VAR + EVAR_EXIT, nExit) ; bOk = bOk && LuaSetGlobVar( EMC_VAR + EVAR_TOOL, sTool) ; + bOk = bOk && LuaSetGlobVar( EMC_VAR + EVAR_TOTDIAM, dTOvDiam) ; + bOk = bOk && LuaSetGlobVar( EMC_VAR + EVAR_TOTLEN, dTOvLen) ; bOk = bOk && LuaCallFunction( ON_SET_HEAD) ; bOk = bOk && LuaResetGlobVar( EMC_VAR) ; if ( ! bOk) diff --git a/MachiningsMgr.cpp b/MachiningsMgr.cpp index 81ca5df..64696aa 100644 --- a/MachiningsMgr.cpp +++ b/MachiningsMgr.cpp @@ -762,6 +762,17 @@ MachiningsMgr::SetCurrMachiningParam( int nType, double dVal) dVal = UNKNOWN_PAR ; return m_pCurrMach->SetParam( nType, dVal) ; } + // se step su taglio con lama inclinato + else if ( nType == MPA_STEPSIDEANG) { + // recupero step generico + double dStep ; + if ( ! m_pCurrMach->GetParam( MPA_STEP, dStep)) + return false ; + // verifico se valore coincide con questo + if ( abs( dVal - dStep) < EPS_MACH_LEN_PAR) + dVal = UNKNOWN_PAR ; + return m_pCurrMach->SetParam( nType, dVal) ; + } // in generale return m_pCurrMach->SetParam( nType, dVal) ; } @@ -851,6 +862,17 @@ MachiningsMgr::GetCurrMachiningParam( int nType, double& dVal) const // recupero il corretto valore return pTdata->GetParam( MPA2TPA( nType), dVal) ; } + // se step su taglio con lama inclinato + else if ( nType == MPA_STEPSIDEANG) { + // recupero il valore + if ( ! m_pCurrMach->GetParam( nType, dVal)) + return false ; + // se valore autonomo + if ( abs( dVal - UNKNOWN_PAR) > EPS_ANG_SMALL) + return true ; + // altrimenti step generico + return m_pCurrMach->GetParam( MPA_STEP, dVal) ; + } // in generale return m_pCurrMach->GetParam( nType, dVal) ; } diff --git a/Milling.cpp b/Milling.cpp index 125a4a0..cf42c5f 100644 --- a/Milling.cpp +++ b/Milling.cpp @@ -959,7 +959,7 @@ Milling::ProcessPath( int nPathId, int nPvId, int nClId) } // se utensile non centrato, eseguo correzione raggio utensile ed eventuale offset - double dOffs = 0.5 * m_TParams.m_dTDiam + GetOffsR() ; + double dOffs = 0.5 * m_TParams.m_dDiam + GetOffsR() ; if ( m_Params.m_nWorkSide != MILL_WS_CENTER && abs( dOffs) > EPS_SMALL) { double dSignOffs = ( m_Params.m_nWorkSide == MILL_WS_RIGHT) ? dOffs : - dOffs ; if ( ! pCompo->SimpleOffset( dSignOffs, ICurve::OFF_EXTEND)) { diff --git a/Sawing.cpp b/Sawing.cpp index 5bf28ff..c3a5cf1 100644 --- a/Sawing.cpp +++ b/Sawing.cpp @@ -314,6 +314,12 @@ Sawing::SetParam( int nType, double dVal) case MPA_STEPINTARC : m_Params.m_dStepIntArc = dVal ; return true ; + case MPA_STEPSIDEANG : + if ( abs( m_Params.m_dStep - dVal) < EPS_MACH_LEN_PAR) + m_Params.m_dStepSideAng = UNKNOWN_PAR ; + else + m_Params.m_dStepSideAng = dVal ; + return true ; case MPA_SIDEANGLE : if ( ! m_Params.VerifySideAngle( dVal)) return false ; @@ -619,6 +625,9 @@ Sawing::GetParam( int nType, double& dVal) const case MPA_STEPINTARC : dVal = m_Params.m_dStepIntArc ; return true ; + case MPA_STEPSIDEANG : + dVal = GetStepSideAng() ; + return true ; case MPA_SIDEANGLE : dVal = m_Params.m_dSideAngle ; return true ; @@ -1391,9 +1400,13 @@ Sawing::GenerateLineCl( const ICurveLine* pLine, const Vector3d& vtTool, const V double dAppr = m_Params.m_dStartPos ; if ( abs( m_Params.m_dSideAngle) > EPS_ANG_SMALL) dAppr /= cos( m_Params.m_dSideAngle * DEGTORAD) ; + // valore di step + double dActStep = m_Params.m_dStep ; + if ( abs( m_Params.m_dSideAngle) > 10 * EPS_ANG_SMALL) + dActStep = GetStepSideAng() ; // Se una sola passata - if ( m_Params.m_dStep < EPS_SMALL || ( dElev - dExtraCut) <= m_Params.m_dStep) { + if ( dActStep < EPS_SMALL || ( dElev - dExtraCut) <= m_Params.m_dStep) { // 1 -> approccio if ( ! AddApproach( pLine->GetStart(), vtCorr, dSafeZ, dElev, dAppr)) return false ; @@ -1423,7 +1436,7 @@ Sawing::GenerateLineCl( const ICurveLine* pLine, const Vector3d& vtTool, const V double dCutH = dElev - dExtraCut ; int nStep = 2 ; if ( m_Params.m_nStepType == SAW_ST_ZIGZAG) { - nStep = static_cast( ceil( dCutH / m_Params.m_dStep)) ; + nStep = static_cast( ceil( dCutH / dActStep)) ; if ( ( nStep % 2) == 1) nStep += 1 ; } @@ -1460,7 +1473,7 @@ Sawing::GenerateLineCl( const ICurveLine* pLine, const Vector3d& vtTool, const V // 2-3 -> lavorazione // calcolo numero e valore degli step double dCutH = dElev - dExtraCut ; - int nStep = static_cast( ceil( dCutH / m_Params.m_dStep)) ; + int nStep = static_cast( ceil( dCutH / dActStep)) ; double dStep = dCutH / nStep ; // esecuzione degli step for ( int i = nStep - 1 ; i >= 0 ; -- i) { diff --git a/Sawing.h b/Sawing.h index 9577300..7b4ad0d 100644 --- a/Sawing.h +++ b/Sawing.h @@ -125,20 +125,22 @@ class Sawing : public Machining bool AreHeadWorkOnSameSide( void) const ; private : - double GetSpeed() const + double GetSpeed( void) const { return ( abs( m_Params.m_dSpeed) < EPS_MACH_ANG_PAR ? m_TParams.m_dSpeed : m_Params.m_dSpeed) ; } - double GetFeed() const + double GetFeed( void) const { return ( abs( m_Params.m_dFeed) < EPS_MACH_LEN_PAR ? m_TParams.m_dFeed : m_Params.m_dFeed) ; } - double GetStartFeed() const + double GetStartFeed( void) const { return ( abs( m_Params.m_dStartFeed) < EPS_MACH_LEN_PAR ? m_TParams.m_dStartFeed : m_Params.m_dStartFeed) ; } - double GetEndFeed() const + double GetEndFeed( void) const { return ( abs( m_Params.m_dEndFeed) < EPS_MACH_LEN_PAR ? m_TParams.m_dEndFeed : m_Params.m_dEndFeed) ; } - double GetTipFeed() const + double GetTipFeed( void) const { return ( abs( m_Params.m_dTipFeed) < EPS_MACH_LEN_PAR ? m_TParams.m_dTipFeed : m_Params.m_dTipFeed) ; } - double GetOffsL() const + double GetOffsL( void) const { return ( abs( m_Params.m_dOffsL - UNKNOWN_PAR) < EPS_MACH_LEN_PAR ? m_TParams.m_dOffsL : m_Params.m_dOffsL) ; } - double GetOffsR() const + double GetOffsR( void) const { return ( abs( m_Params.m_dOffsR - UNKNOWN_PAR) < EPS_MACH_LEN_PAR ? m_TParams.m_dOffsR : m_Params.m_dOffsR) ; } + double GetStepSideAng( void) const + { return ( abs( m_Params.m_dStepSideAng - UNKNOWN_PAR) < EPS_MACH_LEN_PAR ? m_Params.m_dStep : m_Params.m_dStepSideAng) ; } private : SELVECTOR m_vId ; // identificativi entità geometriche da lavorare diff --git a/SawingData.cpp b/SawingData.cpp index 492066c..844c348 100644 --- a/SawingData.cpp +++ b/SawingData.cpp @@ -52,6 +52,7 @@ enum nSawingKey { KEY_ST, KEY_STEA, KEY_STIA, + KEY_STSA, KEY_STY, KEY_TNAME, KEY_TUUID, @@ -86,6 +87,7 @@ static const std::array sSawingKey = { "ST", "STEA", "STIA", + "STSA", "STY", "TN", "TU", @@ -141,6 +143,7 @@ SawingData::CopyFrom( const MachiningData* pMdata) m_sDepth = pSdata->m_sDepth ; m_dStartPos = pSdata->m_dStartPos ; m_dStep = pSdata->m_dStep ; + m_dStepSideAng = pSdata->m_dStepSideAng ; m_dStepExtArc = pSdata->m_dStepExtArc ; m_dStepIntArc = pSdata->m_dStepIntArc ; m_nStepType = pSdata->m_nStepType ; @@ -187,6 +190,7 @@ SawingData::SameAs(const MachiningData* pMdata) const m_sDepth == pSdata->m_sDepth && abs( m_dStartPos - pSdata->m_dStartPos) < EPS_MACH_LEN_PAR && abs( m_dStep - pSdata->m_dStep) < EPS_MACH_LEN_PAR && + abs( m_dStepSideAng - pSdata->m_dStepSideAng) < EPS_MACH_LEN_PAR && abs( m_dStepExtArc - pSdata->m_dStepExtArc) < EPS_MACH_LEN_PAR && abs( m_dStepIntArc - pSdata->m_dStepIntArc) < EPS_MACH_LEN_PAR && m_nStepType == pSdata->m_nStepType && @@ -319,6 +323,9 @@ SawingData::FromString( const string& sString, int& nKey) case KEY_STIA : bOk = ::FromString( sVal, m_dStepIntArc) ; break ; + case KEY_STSA : + bOk = ::FromString( sVal, m_dStepSideAng) ; + break ; case KEY_STY : bOk = ::FromString( sVal, m_nStepType) ; break ; @@ -372,6 +379,7 @@ SawingData::ToString( int nInd) const case KEY_ST : return ( sSawingKey[KEY_ST] + "=" + ::ToString( m_dStep)) ; case KEY_STEA : return ( sSawingKey[KEY_STEA] + "=" + ::ToString( m_dStepExtArc)) ; case KEY_STIA : return ( sSawingKey[KEY_STIA] + "=" + ::ToString( m_dStepIntArc)) ; + case KEY_STSA : return ( sSawingKey[KEY_STSA] + "=" + ::ToString( m_dStepSideAng)) ; case KEY_STY : return ( sSawingKey[KEY_STY] + "=" + ::ToString( m_nStepType)) ; case KEY_TNAME : return ( sSawingKey[KEY_TNAME] + "=" + m_sToolName) ; case KEY_TUUID : return ( sSawingKey[KEY_TUUID] + "=" + ::ToString( m_ToolUuid)) ; @@ -387,7 +395,8 @@ SawingData::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 || nKey == KEY_SCC || nKey == KEY_STEA || nKey == KEY_STIA) ; + nKey == KEY_S || nKey == KEY_SCC || nKey == KEY_STEA || nKey == KEY_STIA || + nKey == KEY_STSA) ; } //---------------------------------------------------------------------------- @@ -583,6 +592,9 @@ SawingData::SetParam( int nType, double dVal) case MPA_STEPINTARC : m_dStepIntArc = dVal ; return true ; + case MPA_STEPSIDEANG : + m_dStepSideAng = dVal ; + return true ; case MPA_SIDEANGLE : if ( ! VerifySideAngle( dVal)) return false ; @@ -724,6 +736,9 @@ SawingData::GetParam( int nType, double& dVal) const case MPA_STEPINTARC : dVal = m_dStepIntArc ; return true ; + case MPA_STEPSIDEANG : + dVal = m_dStepSideAng ; + return true ; case MPA_SIDEANGLE : dVal = m_dSideAngle ; return true ; diff --git a/SawingData.h b/SawingData.h index ccb0985..95ca1dd 100644 --- a/SawingData.h +++ b/SawingData.h @@ -34,6 +34,7 @@ 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_dStepSideAng ; // passo di affondameto su tagli inclinati (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) @@ -51,7 +52,7 @@ struct SawingData : public MachiningData SawingData( void) : m_ToolUuid(), m_nSolCh( 0), m_dSpeed( 0), m_dFeed( 0), m_dStartFeed( 0), m_dEndFeed( 0), m_dTipFeed( 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_bInvert( false), m_nWorkSide( 0), m_nHeadSide(0), m_dStartPos( 0), m_dStep( 0), m_dStepSideAng( UNKNOWN_PAR), m_dStepExtArc( 0), m_dStepIntArc( 0), m_nStepType( 0), m_dSideAngle( 0), m_dStartAddLen(0), m_dEndAddLen(0), m_nLeadInType( 0), m_nExtLinkType( 0), m_nLeadOutType( 0), m_nCurveUse( 0), m_dApprox( 0) {} SawingData* Clone( void) const override ;