From 9e16e604ec71318ea80f5f796d6bf4a8d67e901c Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Thu, 6 Nov 2025 18:48:30 +0100 Subject: [PATCH] EgtMachKernel 2.7k2 : - correzioni a lav. waterjet per angoli esterni. --- EgtMachKernel.rc | Bin 11782 -> 11782 bytes WaterJetting.cpp | 15 ++++++++------- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/EgtMachKernel.rc b/EgtMachKernel.rc index e71752621e4bf9c82b80a57fcfc275505b12d790..71223f96ca748aeeefead940cad152959f685d43 100644 GIT binary patch delta 97 zcmZpRX^YwLhmFx_^ItYwW=5mQj>5W|vxM9jH?QON0rG*u7nvrX5iEd9O=7{OSQ@Kh Hr8(RHP01iS delta 97 zcmZpRX^YwLhmFy2^ItYwW=6xwj>5W|vxM9jH?QON0rG*u7nvrX5iEd9O=7{OSQ@Kh Hr8(RHOf?`f diff --git a/WaterJetting.cpp b/WaterJetting.cpp index 75eb93d..4d5188b 100644 --- a/WaterJetting.cpp +++ b/WaterJetting.cpp @@ -2160,10 +2160,10 @@ WaterJetting::AddLoopsPreview( const ICurveComposite* pCompo, ISurfFlatRegion* p if ( IsNull( pLoop)) return false ; // lunghezza tratti lineari e loro punti estremi - double dTgLen = 0.5 * m_TParams.m_dDiam * tan( 0.5 * dAng * DEGTORAD) ; + double dTgLen = 0.5 * m_TParams.m_dDiam * tan( 0.5 * abs( dAng) * DEGTORAD) ; if ( m_Params.m_dSideAngle > EPS_ANG_SMALL) { double dW = m_dElev * sin( m_Params.m_dSideAngle * DEGTORAD) ; - double dExtraLen = dW / tan( ( 180 - abs( dAng)) / 2 * DEGTORAD) ; + double dExtraLen = dW / tan( 0.5 * ( 180 - abs( dAng)) * DEGTORAD) ; dTgLen += dExtraLen ; } Point3d ptP ; pCrvC->GetStartPoint( ptP) ; @@ -2372,11 +2372,11 @@ WaterJetting::AddStandardWj( const ICurveComposite* pCompo, const Vector3d& vtTo // Se angolo esterno e richiesto anello esterno if ( IsExternalAngle( dAng) && m_Params.m_nExtCornerType == WJET_EC_LOOP) { // lunghezza tratti lineari - double dTgLen = 0.5 * m_TParams.m_dDiam * tan( 0.5 * dAng * DEGTORAD) ; + double dTgLen = 0.5 * m_TParams.m_dDiam * tan( 0.5 * abs( dAng) * DEGTORAD) ; if ( m_Params.m_dSideAngle > EPS_ANG_SMALL) { // se inclinazione positiva calcolo di quanto deve uscire per non rovinare lo spigolo double dW = m_dElev * sin( m_Params.m_dSideAngle * DEGTORAD) ; - double dExtraLen = dW / tan( ( 180 - abs( dAng)) / 2 * DEGTORAD) ; + double dExtraLen = dW / tan( 0.5 * ( 180 - abs( dAng)) * DEGTORAD) ; dTgLen += dExtraLen ; } // calcolo punti estremi @@ -2404,11 +2404,11 @@ WaterJetting::AddStandardWj( const ICurveComposite* pCompo, const Vector3d& vtTo // aggiungo il primo tratto Vector3d vtCorr = CalcCorrDir( pCompoArc, 1) ; SetToolCorrAuxDir( Z_AX, vtCorr) ; - if ( AddCurveMove( pCompoArc->GetCurve(0), bSplitArcs) == GDB_ID_NULL) + if ( AddCurveMove( pCompoArc->GetCurve( 0), bSplitArcs) == GDB_ID_NULL) return false ; // aggiungo secondo tratto CalcAndSetToolCorrAuxDir( pCompo, i + 0.5) ; - if ( AddCurveMove( pCompoArc->GetCurve(1), bSplitArcs) == GDB_ID_NULL) + if ( AddCurveMove( pCompoArc->GetCurve( 1), bSplitArcs) == GDB_ID_NULL) return false ; } else { @@ -3103,7 +3103,8 @@ WaterJetting::CalcOffset( ICurveComposite* pCompo, double dSignOffs) } } // eseguo offset semplice - if ( pCompo->SimpleOffset( dSignOffs, nFlag)) + constexpr double MAX_ANG_EXT = 135 ; + if ( pCompo->SimpleOffset( dSignOffs, nFlag, MAX_ANG_EXT)) return true ; // se curva piatta, provo con offset avanzato bool bOk = false ;