EgtMachKernel :

- modifica a SplitFlatRawPartWithMachinings per ignorare eventuale errore ininfluente con Kerf
- in tagli con lama su curve allontanate di poco dal pezzo le regioni di ingombro degli attacchi e uscite.
This commit is contained in:
Dario Sassi
2019-11-25 08:03:38 +00:00
parent c1eeb9e4a9
commit 52fa86e77e
3 changed files with 14 additions and 11 deletions
+10 -6
View File
@@ -2231,7 +2231,7 @@ Sawing::GenerateExtCurvePv( const ICurveComposite* pCrv,
m_pGeomDB->SetMaterial( nId, LIME) ;
// contorno per parte iniziale di taglio
PtrOwner<ICurveComposite> pCompo2( GenerateExtArcPvPreCut( pArc, dIntRad, dExtRad, dDeltaT, 0)) ;
PtrOwner<ICurveComposite> pCompo2( GenerateExtArcPvPreCut( pArc, dIntRad, dExtRad, dDeltaT, 0, 0)) ;
if ( IsNull( pCompo2))
return false ;
pCompo2->Translate( dElev * vtCorr) ;
@@ -2240,7 +2240,7 @@ Sawing::GenerateExtCurvePv( const ICurveComposite* pCrv,
m_pGeomDB->SetMaterial( nId2, ( bFirst ? BLUE : LIME)) ;
// contorno per parte finale di taglio
PtrOwner<ICurveComposite> pCompo3( GenerateExtArcPvPostCut( pArc, dIntRad, dExtRad, dDeltaT, 0)) ;
PtrOwner<ICurveComposite> pCompo3( GenerateExtArcPvPostCut( pArc, dIntRad, dExtRad, dDeltaT, 0, 0)) ;
if ( IsNull( pCompo3))
return false ;
pCompo3->Translate( dElev * vtCorr) ;
@@ -2263,7 +2263,7 @@ Sawing::GenerateExtCurvePv( const ICurveComposite* pCrv,
m_pGeomDB->SetMaterial( nRrId, INVISIBLE) ;
// regione di pre-taglio
PtrOwner<ICurveComposite> pCmpRs( GenerateExtArcPvPreCut( pArc, dIntRad, dExtRad, dDeltaT, dExtraL)) ;
PtrOwner<ICurveComposite> pCmpRs( GenerateExtArcPvPreCut( pArc, dIntRad, dExtRad, dDeltaT, 10 * EPS_SMALL, dExtraL)) ;
if ( IsNull( pCmpRs))
return false ;
SurfFlatRegionByContours SfrCntrRs ;
@@ -2277,7 +2277,7 @@ Sawing::GenerateExtCurvePv( const ICurveComposite* pCrv,
m_pGeomDB->SetMaterial( nRsId, INVISIBLE) ;
// regione di post-taglio
PtrOwner<ICurveComposite> pCmpRe( GenerateExtArcPvPostCut( pArc, dIntRad, dExtRad, dDeltaT, dExtraL)) ;
PtrOwner<ICurveComposite> pCmpRe( GenerateExtArcPvPostCut( pArc, dIntRad, dExtRad, dDeltaT, 10 * EPS_SMALL, dExtraL)) ;
if ( IsNull( pCmpRe))
return false ;
SurfFlatRegionByContours SfrCntrRe ;
@@ -2356,7 +2356,7 @@ Sawing::GenerateExtArcPvTrueCut( const ICurveArc* pArc, double dIntRad, double d
//----------------------------------------------------------------------------
ICurveComposite*
Sawing::GenerateExtArcPvPreCut( const ICurveArc* pArc, double dIntRad, double dExtRad,
double dDeltaT, double dSafety)
double dDeltaT, double dIntOffs, double dSafety)
{
// direzione iniziale del taglio
Vector3d vtStaDir ;
@@ -2368,6 +2368,8 @@ Sawing::GenerateExtArcPvPreCut( const ICurveArc* pArc, double dIntRad, double dE
pArc->GetStartPoint( ptStart) ;
if ( ! AreHeadWorkOnSameSide())
ptStart -= vtStaVer * m_TParams.m_dThick ;
if ( dIntOffs > EPS_SMALL)
ptStart += vtStaVer * dIntOffs ;
// punto prima di inizio
Point3d ptPre = ptStart - vtStaDir * dDeltaT ;
// punto fuori prima di inizio
@@ -2416,7 +2418,7 @@ Sawing::GenerateExtArcPvPreCut( const ICurveArc* pArc, double dIntRad, double dE
//----------------------------------------------------------------------------
ICurveComposite*
Sawing::GenerateExtArcPvPostCut( const ICurveArc* pArc, double dIntRad, double dExtRad,
double dDeltaT, double dSafety)
double dDeltaT, double dIntOffs, double dSafety)
{
// direzione finale del taglio
Vector3d vtEndDir ;
@@ -2428,6 +2430,8 @@ Sawing::GenerateExtArcPvPostCut( const ICurveArc* pArc, double dIntRad, double d
vtEndVer.Normalize() ;
if ( ! AreHeadWorkOnSameSide())
ptEnd -= vtEndVer * m_TParams.m_dThick ;
if ( dIntOffs > EPS_SMALL)
ptEnd += vtEndVer * dIntOffs ;
// punto dopo fine
Point3d ptPost = ptEnd + vtEndDir * dDeltaT ;
// punto fuori dopo fine