EgtMachKernel :
- prime modifiche per tagli inclinati su esterno archi.
This commit is contained in:
+19
-7
@@ -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 ;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user