From c7cd7dfea8b217fee60c6d77db157b7adec90164 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Wed, 5 Jun 2024 17:17:07 +0200 Subject: [PATCH] EgtMachKernel : - aggiustamento parametri per sgrossatura superfici. --- Sawing.cpp | 2 +- SurfRoughingData.cpp | 30 +++++++++++++++++++++++++++++- SurfRoughingData.h | 6 ++++-- 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/Sawing.cpp b/Sawing.cpp index d8ebf6b..994bcb8 100644 --- a/Sawing.cpp +++ b/Sawing.cpp @@ -2303,7 +2303,7 @@ Sawing::GenerateLineCl( const ICurveLine* pLine, const Vector3d& vtTool, const V Point3d ptP4 = pLine->GetEnd() + vtCorr * ( dElev + dAppr / vtCorr.z) ; if ( AddLinearMove( ptP4) == GDB_ID_NULL) return false ; - // movimento di ritorno spora il punto iniziale + // movimento di ritorno sopra il punto iniziale SetFeed( GetEndFeed()) ; Point3d ptP5 = pLine->GetStart() + vtCorr * ( dElev + dAppr / vtCorr.z) ; if ( AddLinearMove( ptP5) == GDB_ID_NULL) diff --git a/SurfRoughingData.cpp b/SurfRoughingData.cpp index 0fd3ed0..028fcf2 100644 --- a/SurfRoughingData.cpp +++ b/SurfRoughingData.cpp @@ -35,6 +35,7 @@ enum nSurfRoughingKey { KEY_FS, KEY_FT, KEY_INV, + KEY_LIEL, KEY_LIPR, KEY_LITG, KEY_LITY, @@ -51,6 +52,7 @@ enum nSurfRoughingKey { KEY_SA, KEY_SCC, KEY_SS, + KEY_SST, KEY_ST, KEY_SUBTYPE, KEY_TNAME, @@ -68,6 +70,7 @@ static const array sSurfRoughingKey = { "FS", "FT", "INV", + "LIEL", "LIPR", "LITG", "LITY", @@ -84,6 +87,7 @@ static const array sSurfRoughingKey = { "SA", "SCC", "SS", + "SST", "ST", "SUB", "TN", @@ -139,10 +143,12 @@ SurfRoughingData::CopyFrom( const MachiningData* pMdata) m_sDepth = pSdata->m_sDepth ; m_dStartPos = pSdata->m_dStartPos ; m_dStep = pSdata->m_dStep ; + m_dSubStep = pSdata->m_dSubStep ; m_dSideStep = pSdata->m_dSideStep ; m_nSubType = pSdata->m_nSubType ; m_dSideAngle = pSdata->m_dSideAngle ; m_nLeadInType = pSdata->m_nLeadInType ; + m_dLiElev = pSdata->m_dLiElev ; m_dLiTang = pSdata->m_dLiTang ; m_dLiPerp = pSdata->m_dLiPerp ; m_nLeadOutType = pSdata->m_nLeadOutType ; @@ -184,10 +190,12 @@ SurfRoughingData::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_dSubStep - pSdata->m_dSubStep) < EPS_MACH_LEN_PAR && abs( m_dSideStep - pSdata->m_dSideStep) < EPS_MACH_LEN_PAR && m_nSubType == pSdata->m_nSubType && abs( m_dSideAngle - pSdata->m_dSideAngle) < EPS_MACH_ANG_PAR && m_nLeadInType == pSdata->m_nLeadInType && + abs( m_dLiElev - pSdata->m_dLiElev) < EPS_MACH_LEN_PAR && abs( m_dLiTang - pSdata->m_dLiTang) < EPS_MACH_LEN_PAR && abs( m_dLiPerp - pSdata->m_dLiPerp) < EPS_MACH_LEN_PAR && m_nLeadOutType == pSdata->m_nLeadOutType && @@ -266,6 +274,9 @@ SurfRoughingData::FromString( const string& sString, int& nKey) case KEY_LIPR : bOk = ::FromString( sVal, m_dLiPerp) ; break ; + case KEY_LIEL : + bOk = ::FromString( sVal, m_dLiElev) ; + break ; case KEY_LITG : bOk = ::FromString( sVal, m_dLiTang) ; break ; @@ -309,6 +320,9 @@ SurfRoughingData::FromString( const string& sString, int& nKey) case KEY_SCC : bOk = ::FromString( sVal, m_nSolCh) ; break ; + case KEY_SST : + bOk = ::FromString( sVal, m_dSubStep) ; + break ; case KEY_SS : bOk = ::FromString( sVal, m_dSideStep) ; break ; @@ -348,6 +362,7 @@ SurfRoughingData::ToString( int nInd) const case KEY_FS : return ( sSurfRoughingKey[KEY_FS] + "=" + ::ToString( m_dStartFeed)) ; case KEY_FT : return ( sSurfRoughingKey[KEY_FT] + "=" + ::ToString( m_dTipFeed)) ; case KEY_INV : return ( sSurfRoughingKey[KEY_INV] + "=" + ::ToString( m_bInvert)) ; + case KEY_LIEL : return ( sSurfRoughingKey[KEY_LIEL] + "=" + ::ToString( m_dLiElev)) ; case KEY_LIPR : return ( sSurfRoughingKey[KEY_LIPR] + "=" + ::ToString( m_dLiPerp)) ; case KEY_LITG : return ( sSurfRoughingKey[KEY_LITG] + "=" + ::ToString( m_dLiTang)) ; case KEY_LITY : return ( sSurfRoughingKey[KEY_LITY] + "=" + ::ToString( m_nLeadInType)) ; @@ -363,6 +378,7 @@ SurfRoughingData::ToString( int nInd) const case KEY_S : return ( sSurfRoughingKey[KEY_S] + "=" + ::ToString( m_dSpeed)) ; case KEY_SA : return ( sSurfRoughingKey[KEY_SA] + "=" + ::ToString( m_dSideAngle)) ; case KEY_SCC : return ( sSurfRoughingKey[KEY_SCC] + "=" + ::ToString( m_nSolCh)) ; + case KEY_SST : return ( sSurfRoughingKey[KEY_SST] + "=" + ::ToString( m_dSubStep)) ; case KEY_SS : return ( sSurfRoughingKey[KEY_SS] + "=" + ::ToString( m_dSideStep)) ; case KEY_ST : return ( sSurfRoughingKey[KEY_ST] + "=" + ::ToString( m_dStep)) ; case KEY_SUBTYPE : return ( sSurfRoughingKey[KEY_SUBTYPE] + "=" + ::ToString( m_nSubType)) ; @@ -377,7 +393,7 @@ SurfRoughingData::ToString( int nInd) const bool SurfRoughingData::IsOptional( int nKey) const { - return false ; + return ( nKey == KEY_LIEL || nKey == KEY_SST) ; } //---------------------------------------------------------------------------- @@ -510,12 +526,18 @@ SurfRoughingData::SetParam( int nType, double dVal) case MPA_STEP : m_dStep = dVal ; return true ; + case MPA_SUBSTEP : + m_dSubStep = dVal ; + return true ; case MPA_SIDESTEP : m_dSideStep = dVal ; return true ; case MPA_SIDEANGLE : m_dSideAngle = dVal ; return true ; + case MPA_LIELEV : + m_dLiElev = dVal ; + return true ; case MPA_LITANG : m_dLiTang = dVal ; return true ; @@ -648,12 +670,18 @@ SurfRoughingData::GetParam( int nType, double& dVal) const case MPA_STEP : dVal = m_dStep ; return true ; + case MPA_SUBSTEP : + dVal = m_dSubStep ; + return true ; case MPA_SIDESTEP : dVal = m_dSideStep ; return true ; case MPA_SIDEANGLE : dVal = m_dSideAngle ; return true ; + case MPA_LIELEV : + dVal = m_dLiElev ; + return true ; case MPA_LITANG : dVal = m_dLiTang ; return true ; diff --git a/SurfRoughingData.h b/SurfRoughingData.h index 87687c5..fc1349e 100644 --- a/SurfRoughingData.h +++ b/SurfRoughingData.h @@ -35,10 +35,12 @@ struct SurfRoughingData : public MachiningData double m_dStartPos ; // quota di inizio lavorazione (sempre >= 0) double m_dStep ; // passo di affondamento (0=nessun passo) double m_dSideStep ; // distanza tra le passate + double m_dSubStep ; // distanza tra le passate intermedie int m_nSubType ; // tipo di lavorazione ( ZigZag, OneWay, SpiralIn, SpiralOut) double m_dSideAngle ; // angolo dello ZigZag da X+ locale int m_nLeadInType ; // tipo di attacco (nessuno, lineare, tangente, inseguimento) double m_dLiTang ; // distanza tangente da inizio attacco + double m_dLiElev ; // elevazione di uno step di attacco double m_dLiPerp ; // distanza perpendicolare da inizio attacco int m_nLeadOutType ; // tipo di uscita (come attacco, nessuno, lineare, tangente, inseguimento) double m_dLoTang ; // distanza tangente verso fine uscita @@ -50,8 +52,8 @@ struct SurfRoughingData : public MachiningData SurfRoughingData( 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_dStartPos( 0), m_dStep( 0), m_dSideStep( 0), m_nSubType( 0), m_dSideAngle( 0), - m_nLeadInType( 0), m_dLiTang( 0), m_dLiPerp( 0), + m_dStartPos( 0), m_dStep( 0), m_dSideStep( 0), m_dSubStep( 0), m_nSubType( 0), m_dSideAngle( 0), + m_nLeadInType( 0), m_dLiTang( 0), m_dLiElev( 0), m_dLiPerp( 0), m_nLeadOutType( 0), m_dLoTang( 0), m_dLoPerp( 0), m_dApprox( 0) {} SurfRoughingData* Clone( void) const override ; bool CopyFrom( const MachiningData* pMdata) override ;