EgtMachKernel 2.1j9 :

- in lavorazione WJ rallentamento su angoli interni allungato opportunamente se angolo di fianco è positivo.
This commit is contained in:
Dario Sassi
2019-10-31 07:48:44 +00:00
parent 21ecb8614f
commit a3a97ecbe3
2 changed files with 29 additions and 7 deletions
BIN
View File
Binary file not shown.
+29 -7
View File
@@ -38,6 +38,7 @@ using namespace std ;
// 3201 = "Error in WaterJetting : UpdateToolData failed"
// 3202 = "Error in WaterJetting : Offset not computable"
// 3203 = "Error in WaterJetting : Empty RawBox"
// 3204 = "Error in WaterJetting : entity too small near inside corner"
// 3205 = "Error in WaterJetting : machining depth (xx) bigger than MaxMaterial (yy)"
// 3207 = "Error in WaterJetting : Approach not computable"
// 3208 = "Error in WaterJetting : LeadIn not computable"
@@ -60,6 +61,9 @@ using namespace std ;
// 3254 = "Warning in WaterJetting : Tool data changed (xx)"
// 3255 = "Warning in WaterJetting : skipped Path too short"
//----------------------------------------------------------------------------
const double EXTRA_ACC_LEN = 0.1 ;
//----------------------------------------------------------------------------
USEROBJ_REGISTER( GetOperationClass( OPER_WATERJETTING), WaterJetting) ;
@@ -1894,7 +1898,7 @@ WaterJetting::AddStandardWj( const ICurveComposite* pCompo, const Vector3d& vtTo
// lunghezza entità
double dLen ; pCrvC->GetLength( dLen) ;
// lunghezza di accelerazione
double dAccLen = min( m_Params.m_dCornerSlowLen, dLen / 2 - 0.1) ;
double dAccLen = min( m_Params.m_dCornerSlowLen, dLen / 2 - EXTRA_ACC_LEN) ;
// Feed ridotta
double dMinFeed = GetActualReducedFeed() ;
// ciclo sui punti di accelerazione
@@ -1913,7 +1917,16 @@ WaterJetting::AddStandardWj( const ICurveComposite* pCompo, const Vector3d& vtTo
// lunghezza entità
double dLen ; pCrvC->GetLength( dLen) ;
// lunghezza di accelerazione
double dAccLen = min( m_Params.m_dCornerSlowLen, dLen / 2 - 0.1) ;
double dAccLen = min( m_Params.m_dCornerSlowLen, dLen / 2 - EXTRA_ACC_LEN) ;
if ( m_Params.m_dSideAngle > 0) {
double dW = m_dElev * sin( m_Params.m_dSideAngle * DEGTORAD) ;
double dSlowLen = dW / tan( ( 180 - abs( dAng)) / 2 * DEGTORAD) ;
if ( dSlowLen > dLen / 2 - EXTRA_ACC_LEN) {
m_pMchMgr->SetLastError( 3204, "Error in WaterJetting : entity too small near inside corner") ;
return false ;
}
dAccLen = min( dSlowLen + m_Params.m_dCornerSlowLen, dLen / 2 - EXTRA_ACC_LEN) ;
}
// Feed ridotta
double dMinFeed = GetActualReducedFeed() ;
// Direzioni utensile nell'angolo e finale
@@ -1954,8 +1967,8 @@ WaterJetting::AddStandardWj( const ICurveComposite* pCompo, const Vector3d& vtTo
if ( m_Params.m_nExtCornerType == WJET_EC_SLOW && IsExternalAngle( dAng)) {
// lunghezza entità
double dLen ; pCrvC->GetLength( dLen) ;
// lunghezza di accelerazione
double dAccLen = min( m_Params.m_dCornerSlowLen, dLen / 2 - 0.1) ;
// lunghezza di decelerazione
double dAccLen = min( m_Params.m_dCornerSlowLen, dLen / 2 - EXTRA_ACC_LEN) ;
// Feed ridotta
double dMinFeed = GetActualReducedFeed() ;
// ciclo sui punti di decelerazione
@@ -1974,8 +1987,17 @@ WaterJetting::AddStandardWj( const ICurveComposite* pCompo, const Vector3d& vtTo
if ( m_Params.m_nIntCornerType == WJET_IC_SLOW && IsInternalAngle( dAng)) {
// lunghezza entità
double dLen ; pCrvC->GetLength( dLen) ;
// lunghezza di accelerazione
double dAccLen = min( m_Params.m_dCornerSlowLen, dLen / 2 - 0.1) ;
// lunghezza di deccelerazione
double dAccLen = min( m_Params.m_dCornerSlowLen, dLen / 2 - EXTRA_ACC_LEN) ;
if ( m_Params.m_dSideAngle > 0) {
double dW = m_dElev * sin( m_Params.m_dSideAngle * DEGTORAD) ;
double dSlowLen = dW / tan( ( 180 - abs( dAng)) / 2 * DEGTORAD) ;
if ( dSlowLen > dLen / 2 - EXTRA_ACC_LEN) {
m_pMchMgr->SetLastError( 3204, "Error in WaterJetting : entity too small near inside corner") ;
return false ;
}
dAccLen = min( dSlowLen + m_Params.m_dCornerSlowLen, dLen / 2 - EXTRA_ACC_LEN) ;
}
// Feed ridotta
double dMinFeed = GetActualReducedFeed() ;
// Direzioni utensile iniziale e nell'angolo
@@ -2502,7 +2524,7 @@ WaterJetting::CalcOffset( ICurveComposite* pCompo, double dSignOffs)
//----------------------------------------------------------------------------
// Valore limite angolo per corner
const double ANG_CORNER = 30 ;
const double ANG_CORNER = 10 ;
//----------------------------------------------------------------------------
bool