Compare commits
3 Commits
MoreBezier
...
2.6j2
| Author | SHA1 | Date | |
|---|---|---|---|
| da8f40db17 | |||
| 5468e3f4fa | |||
| 88684e305f |
+35
-20
@@ -1042,8 +1042,14 @@ CreateSurfFrIncidence( const ICurveComposite* pCrv, const PocketParams& PockPara
|
||||
return false ;
|
||||
if ( OffsCrv.Make( pCrv, - dRad, PockParams.nOffsType)) {
|
||||
PtrOwner<ICurve> pMyCrv( OffsCrv.GetLongerCurve()) ;
|
||||
if ( ! IsNull( pMyCrv) && pMyCrv->IsValid())
|
||||
pOffsInt.Set( pMyCrv) ;
|
||||
while ( ! IsNull( pMyCrv) && pMyCrv->IsValid()) {
|
||||
if ( ! pMyCrv->IsClosed()) {
|
||||
pOffsInt.Set( pMyCrv) ;
|
||||
break ;
|
||||
}
|
||||
else
|
||||
pMyCrv.Set( OffsCrv.GetLongerCurve()) ;
|
||||
}
|
||||
}
|
||||
|
||||
// recupero gli estremi della curva aperta corrente
|
||||
@@ -1061,30 +1067,27 @@ CreateSurfFrIncidence( const ICurveComposite* pCrv, const PocketParams& PockPara
|
||||
Point3d pt2 ; pOffsInt->GetEndPoint( pt2) ;
|
||||
Point3d pt3 ; pOffsInt->GetStartPoint( pt3) ;
|
||||
Point3d pt5 ; pOffsExt->GetStartPoint( pt5) ;
|
||||
if ( ! pCrvExtLoopSurfInc->AddCurve( Release( pOffsExt)) ||
|
||||
! pCrvExtLoopSurfInc->AddLine( pt1) ||
|
||||
! pCrvExtLoopSurfInc->AddLine( pt2) ||
|
||||
! pOffsInt->Invert() ||
|
||||
! pCrvExtLoopSurfInc->AddCurve( Release( pOffsInt)) ||
|
||||
! pCrvExtLoopSurfInc->AddLine( pt4) ||
|
||||
! pCrvExtLoopSurfInc->AddLine( pt5))
|
||||
return false ;
|
||||
pCrvExtLoopSurfInc->AddCurve( Release( pOffsExt)) ;
|
||||
pCrvExtLoopSurfInc->AddLine( pt1) ;
|
||||
pCrvExtLoopSurfInc->AddLine( pt2) ;
|
||||
pOffsInt->Invert() ;
|
||||
pCrvExtLoopSurfInc->AddCurve( Release( pOffsInt)) ;
|
||||
pCrvExtLoopSurfInc->AddLine( pt4) ;
|
||||
pCrvExtLoopSurfInc->AddLine( pt5) ;
|
||||
}
|
||||
else if ( bExistExt) {
|
||||
Point3d pt5 ; pOffsExt->GetStartPoint( pt5) ;
|
||||
if ( ! pCrvExtLoopSurfInc->AddCurve( Release( pOffsExt)) ||
|
||||
! pCrvExtLoopSurfInc->AddLine( pt1) ||
|
||||
! pCrvExtLoopSurfInc->AddLine( pt4) ||
|
||||
! pCrvExtLoopSurfInc->AddLine( pt5))
|
||||
return false ;
|
||||
pCrvExtLoopSurfInc->AddCurve( Release( pOffsExt)) ;
|
||||
pCrvExtLoopSurfInc->AddLine( pt1) ;
|
||||
pCrvExtLoopSurfInc->AddLine( pt4) ;
|
||||
pCrvExtLoopSurfInc->AddLine( pt5) ;
|
||||
}
|
||||
else if ( bExistInt) {
|
||||
Point3d pt5 ; pOffsInt->GetStartPoint( pt5) ;
|
||||
if ( ! pCrvExtLoopSurfInc->AddCurve( Release( pOffsInt)) ||
|
||||
! pCrvExtLoopSurfInc->AddLine( pt1) ||
|
||||
! pCrvExtLoopSurfInc->AddLine( pt4) ||
|
||||
! pCrvExtLoopSurfInc->AddLine( pt5))
|
||||
return false ;
|
||||
pCrvExtLoopSurfInc->AddCurve( Release( pOffsInt)) ;
|
||||
pCrvExtLoopSurfInc->AddLine( pt1) ;
|
||||
pCrvExtLoopSurfInc->AddLine( pt4) ;
|
||||
pCrvExtLoopSurfInc->AddLine( pt5) ;
|
||||
}
|
||||
else
|
||||
return false ;
|
||||
@@ -1718,6 +1721,18 @@ GetPocketCurvesByClosedEdges( const ISurfFlatRegion* pSfrChunk, const PocketPara
|
||||
for ( int i = 0 ; i < int( vCrvVroniOffs.size()) ; ++ i)
|
||||
vCrvCompoRes_tmp.emplace_back( ConvertCurveToComposite( Release( vCrvVroniOffs[i]))) ;
|
||||
|
||||
// controllo che effetticamente l'utensile svuoti la regione
|
||||
PtrOwner<ISurfFlatRegion> pSfrNoRemoved( CloneSurfFlatRegion( pSfrChunk)) ;
|
||||
if ( IsNull( pSfrNoRemoved) || ! pSfrNoRemoved->IsValid())
|
||||
return false ;
|
||||
for ( int i = 0 ; i < int( vCrvCompoRes_tmp.size()) ; ++ i) {
|
||||
PtrOwner<ISurfFlatRegion> pSfrRemoved( GetSurfFlatRegionFromFatCurve( CloneCurveComposite( vCrvCompoRes_tmp[i]), PockParams.dRad + PockParams.dRadialOffset + 50 * EPS_SMALL, false, false)) ;
|
||||
if ( ! IsNull( pSfrRemoved) && pSfrRemoved->IsValid())
|
||||
pSfrNoRemoved->Subtract( *pSfrNoRemoved) ;
|
||||
}
|
||||
if ( pSfrNoRemoved->IsValid() && pSfrNoRemoved->GetChunkCount() > 0)
|
||||
return true ;
|
||||
|
||||
/*
|
||||
Casi gestiti :
|
||||
1) La curva esterna e mista e non ho isole ( ho già il percorso)
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user