Compare commits

...

3 Commits

Author SHA1 Message Date
Dario Sassi da8f40db17 EgtGeomKernel 2.6j1 :
- ricompilazione con cambio versione.
2024-10-10 15:43:05 +02:00
Riccardo Elitropi 5468e3f4fa EgtGeomKernel :
- in CalcPocketing rilassati i vincoli sulla regione di incidenza dei lati aperti e migliorata la gestione delle curve singole.
2024-10-10 13:02:42 +02:00
Daniele Bariletti 88684e305f Merge branch 'MoreBezier' 2024-10-04 15:40:24 +02:00
2 changed files with 35 additions and 20 deletions
+35 -20
View File
@@ -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)
BIN
View File
Binary file not shown.