EgtMachKernel 2.7k2 :

- correzioni a lav. waterjet per angoli esterni.
This commit is contained in:
Dario Sassi
2025-11-06 18:48:30 +01:00
parent 06261b64be
commit 9e16e604ec
2 changed files with 8 additions and 7 deletions
BIN
View File
Binary file not shown.
+8 -7
View File
@@ -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 ;