EgtMachKernel :

- prime modifiche per tagli inclinati su esterno archi.
This commit is contained in:
Dario Sassi
2020-01-20 06:52:47 +00:00
parent 20d04076b6
commit bff983e12c
31 changed files with 118 additions and 106 deletions
+19 -7
View File
@@ -1590,10 +1590,10 @@ Sawing::ProcessEntity( const ICurve* pCrvP, const ICurve* pCrvC, const ICurve* p
else {
if ( m_Params.m_nCurveUse == SAW_CRV_KEEP) {
// verifico che non ci sia angolo di fianco
if ( abs( m_Params.m_dSideAngle) > EPS_ANG_SMALL) {
m_pMchMgr->SetLastError( 2207, "Error in Sawing : SideAngle not allowed on Arc") ;
return false ;
}
//if ( abs( m_Params.m_dSideAngle) > EPS_ANG_SMALL) {
// m_pMchMgr->SetLastError( 2207, "Error in Sawing : SideAngle not allowed on Arc") ;
// return false ;
//}
// determino la convessità
int nConv = 0 ;
for ( int i = 0 ; i < pCompo->GetCurveCount() ; ++ i) {
@@ -2126,7 +2126,17 @@ Sawing::ProcessExtCurve( const ICurve* pCrvP, const ICurveComposite* pCrvC, cons
return false ;
}
// aggiungo affondamento (sempre in Z globale)
pCrv->Translate( - Z_AX * dDepth) ;
double dDepthZ = dDepth ;
if ( abs( m_Params.m_dSideAngle) > EPS_ANG_SMALL)
dDepthZ *= cos( m_Params.m_dSideAngle * DEGTORAD) ;
pCrv->Translate( - Z_AX * dDepthZ) ;
// offset per taglio inclinato
if ( abs( m_Params.m_dSideAngle) > EPS_ANG_SMALL) {
double dOffs = dDepth * sin( abs( m_Params.m_dSideAngle) * DEGTORAD) ;
if ( m_Params.m_nHeadSide == SAW_HS_LEFT)
dOffs = - dOffs ;
pCrv->SimpleOffset( dOffs) ;
}
// calcolo elevazione (sui due bordi della striscia)
double dElev = 0 ;
for ( const ICurve* pSmpCrv = pCrv->GetFirstCurve() ;
@@ -2144,8 +2154,8 @@ Sawing::ProcessExtCurve( const ICurve* pCrvP, const ICurveComposite* pCrvC, cons
if ( ! CalculateToolAndCorrVersors( vtStaDir, m_Params.m_nHeadSide, m_Params.m_nWorkSide, m_Params.m_dSideAngle, vtStaTool, vtStaCorr) ||
! CalculateToolAndCorrVersors( vtMidDir, m_Params.m_nHeadSide, m_Params.m_nWorkSide, m_Params.m_dSideAngle, vtMidTool, vtMidCorr) ||
! CalculateToolAndCorrVersors( vtEndDir, m_Params.m_nHeadSide, m_Params.m_nWorkSide, m_Params.m_dSideAngle, vtEndTool, vtEndCorr) ||
! AreSameVectorApprox( vtStaCorr, vtMidCorr) ||
! AreSameVectorApprox( vtStaCorr, vtEndCorr)) {
abs( vtStaCorr.z - vtMidCorr.z) > EPS_SMALL ||
abs( vtStaCorr.z - vtEndCorr.z) > EPS_SMALL) {
m_pMchMgr->SetLastError( 2208, "Error in Sawing : Entity CalculateToolAndCorrVersors") ;
return false ;
}
@@ -2580,6 +2590,7 @@ Sawing::GenerateExtCurveCl( const ICurveComposite* pCrv,
if ( m_Params.m_dStepExtArc < EPS_SMALL || ( dElev - dExtraCut) <= m_Params.m_dStepExtArc) {
// 1 -> approccio
SetToolDir( vtStaTool) ;
SetCorrAuxDir( vtStaCorr) ;
Point3d ptP1 ;
pCrv->GetStartPoint( ptP1) ;
if ( ! AddApproach( ptP1, vtStaCorr, dSafeZ, dElev, dAppr))
@@ -2601,6 +2612,7 @@ Sawing::GenerateExtCurveCl( const ICurveComposite* pCrv,
Vector3d vtCurrTool, vtCurrCorr ;
CalculateToolAndCorrVersors( vtCurrDir, m_Params.m_nHeadSide, m_Params.m_nWorkSide, m_Params.m_dSideAngle, vtCurrTool, vtCurrCorr) ;
SetToolDir( vtCurrTool) ;
SetCorrAuxDir( vtCurrCorr) ;
if ( AddCurveMove( pSmpCrv, true) == GDB_ID_NULL)
return false ;
}