From 6c8d1931f33efa66c74259f258156cd73013f970 Mon Sep 17 00:00:00 2001 From: Riccardo Elitropi Date: Fri, 2 Feb 2024 13:00:37 +0100 Subject: [PATCH] EgtMachKernel : - aggiunta gestione parametri ( Lati Aperti e Offset ottimizzati). --- Pocketing.cpp | 28 +++++++++++++++++++++++++++- Pocketing.h | 19 ++++++++++--------- 2 files changed, 37 insertions(+), 10 deletions(-) diff --git a/Pocketing.cpp b/Pocketing.cpp index cd65dff..c9d15db 100644 --- a/Pocketing.cpp +++ b/Pocketing.cpp @@ -153,6 +153,15 @@ Pocketing::Clone( void) const pPock->m_bAggrBottom = m_bAggrBottom ; pPock->m_bOpenOutRaw = m_bOpenOutRaw ; pPock->m_dOpenMinSafe = m_dOpenMinSafe ; + pPock->m_bOptOffset = m_bOptOffset ; + pPock->m_bOptOffsetCM = m_bOptOffsetCM ; + pPock->m_bAssignFeed = m_bAssignFeed ; + pPock->m_dDiam_Prec = m_dDiam_Prec ; + pPock->m_dOffsetR_Prec = m_dOffsetR_Prec ; + pPock->m_dSideStep_Prec = m_dSideStep_Prec ; + pPock->m_dLen_Prec = m_dLen_Prec ; + pPock->m_bOrderStepZ = m_bOrderStepZ ; + pPock->m_bPocketPlane = m_bPocketPlane ; } catch( ...) { delete pPock ; @@ -279,6 +288,16 @@ Pocketing::Pocketing( void) m_bAggrBottom = false ; m_bOpenOutRaw = false ; m_dOpenMinSafe = 0 ; + m_bOptOffset = true ; + m_bOptOffsetCM = false ; + m_bAssignFeed = false ; + m_dDiam_Prec = 0. ; + m_dOffsetR_Prec = 0. ; + m_dOffsetR_Prec = 0. ; + m_dSideStep_Prec = 0. ; + m_dLen_Prec = 0. ; + m_bOrderStepZ = true ; + m_bPocketPlane = false ; } //---------------------------------------------------------------------------- @@ -2271,10 +2290,15 @@ Pocketing::ProcessPath( int nPathId, int nPvId, int nClId) // recupero eventuale flag di lato aperto forzato fuori dal grezzo int nOpenOutRaw ; m_bOpenOutRaw = ( FromString( ExtractInfo( m_Params.m_sUserNotes, "OpenOutRaw="), nOpenOutRaw) && nOpenOutRaw != 0) ; - + // recupero flag per minimo raggio di uscita per lato aperto + FromString( ExtractInfo( m_Params.m_sUserNotes, "OpenEdgeRad="), m_dOpenEdgeRad) ; // recupero eventuale minima lunghezza di attacco su lato aperto FromString( ExtractInfo( m_Params.m_sUserNotes, "OpenMinSafe="), m_dOpenMinSafe) ; + // recupero flag per ottimizzazioni Offset + int nOptOffs ; + m_bOptOffset = ( FromString( ExtractInfo( m_Params.m_sUserNotes, "OptOffs="), nOptOffs) && nOptOffs != 0) ; + // se richiesta anteprima if ( nPvId != GDB_ID_NULL) { // creo gruppo per geometria di lavorazione del percorso @@ -10959,6 +10983,8 @@ Pocketing::AdjustContourWithOpenEdges( ICurveComposite* pCrvCompo, ICRVCOMPOPOVE if ( m_Params.m_nSubType == POCKET_SUB_SPIRALIN || m_Params.m_nSubType == POCKET_SUB_ZIGZAG) dOutEdge = max( dOutEdge, dDiam - dStep) ; double dRad = dOutEdge + dOffR ; + if ( m_dOpenEdgeRad > EPS_SMALL) + dRad = dRad - m_dOpenEdgeRad ; // ricavo i tratti omogenei ICRVCOMPOPOVECTOR vpCrvs ; diff --git a/Pocketing.h b/Pocketing.h index f6c0433..8f68443 100644 --- a/Pocketing.h +++ b/Pocketing.h @@ -339,13 +339,14 @@ class Pocketing : public Machining AggrBottom m_AggrBottom ; // dati eventuale aggregato da sotto bool m_bOpenOutRaw ; // flag forzatura lati aperti sempre fuori dal grezzo double m_dOpenMinSafe ; // minima distanza di sicurezza di attacco su lato aperto - bool m_bOptOffset = true ; // flag per ottimizzazione numero di Offset necessari - bool m_bOptOffsetCM = false ; // flag per ottimizzazione numero di Offset necessari con centroidi e medial Axis - bool m_bAssignFeed = false ; // flag per controllo della Feed - double m_dDiam_Prec = 0.0 ; // diametro utensile per precedente svuotatura - double m_dOffsetR_Prec = 0.0 ; // offset radiale della svuotatura precedente - double m_dSideStep_Prec = 0.0 ; // side Step della svuotatura precedente - double m_dLen_Prec = 0.0 ; // Lunghezza del tool precedente - bool m_bOrderStepZ = true ; // parametro per ordinare gli step Extra per Z decrescente o meno - bool m_bPocketPlane = false ; // flag per svuotare solo la rimanenza sullo Step Extra + bool m_bOptOffset ; // flag per ottimizzazione numero di Offset necessari + bool m_bOptOffsetCM ; // flag per ottimizzazione numero di Offset necessari con centroidi e medial Axis + bool m_bAssignFeed ; // flag per controllo della Feed + double m_dDiam_Prec ; // diametro utensile per precedente svuotatura + double m_dOffsetR_Prec ; // offset radiale della svuotatura precedente + double m_dSideStep_Prec ; // side Step della svuotatura precedente + double m_dLen_Prec ; // Lunghezza del tool precedente + bool m_bOrderStepZ ; // parametro per ordinare gli step Extra per Z decrescente o meno + bool m_bPocketPlane ; // flag per svuotare solo la rimanenza sullo Step Extra + double m_dOpenEdgeRad = 0 ; // raggio di rientro per i lati aperti } ; \ No newline at end of file