EgtGeomKernel :
- In CalcPocketing, piccola correzione nel calcolo dei Link per ConformalZigZag.
This commit is contained in:
+8
-11
@@ -7027,8 +7027,7 @@ GetConformalLinkForOpenCrv( const ICurveComposite* pCrvOffs0, const ICurveCompos
|
||||
//----------------------------------------------------------------------------
|
||||
static bool
|
||||
GetConformalLink( ICurveComposite* pCrvOffs0, ICurveComposite* pCrvOffs1, PocketParams& PockParams,
|
||||
const ICRVCOMPOPOVECTOR& vCrvClassBorder, const ICRVCOMPOPOVECTOR& vCrvExtendedBorders,
|
||||
ICurveComposite* pCrvLink)
|
||||
const ICRVCOMPOPOVECTOR& vCrvClassBorder, ICurveComposite* pCrvLink)
|
||||
{
|
||||
// controllo validità delle due curve di Offset
|
||||
if ( pCrvOffs0 == nullptr || ! pCrvOffs0->IsValid() ||
|
||||
@@ -7065,7 +7064,7 @@ GetConformalLink( ICurveComposite* pCrvOffs0, ICurveComposite* pCrvOffs1, Pocket
|
||||
|
||||
// cerco il chunk ipotetico che contiene le due curve di Offset
|
||||
INTVECTOR vIndOffs0, vIndOffs1 ;
|
||||
if ( ! GetIndOfHypoteticalChunk( vCrvExtendedBorders, pCrvOffs0, pCrvOffs1, vIndOffs0, vIndOffs1))
|
||||
if ( ! GetIndOfHypoteticalChunk( vCrvClassBorder, pCrvOffs0, pCrvOffs1, vIndOffs0, vIndOffs1))
|
||||
return false ;
|
||||
// se appartengono a due chunk diversi, allora il link non esiste
|
||||
if ( int( vIndOffs0.size()) != int( vIndOffs1.size()))
|
||||
@@ -7080,7 +7079,7 @@ GetConformalLink( ICurveComposite* pCrvOffs0, ICurveComposite* pCrvOffs1, Pocket
|
||||
// se appartenenti allo stesso chunk, allora creo link lineare
|
||||
ICRVCOMPOPOVECTOR vCrvChunk ;
|
||||
for ( int i = 0 ; i < int( vIndOffs0.size()) ; ++ i)
|
||||
vCrvChunk.emplace_back( vCrvExtendedBorders[vIndOffs0[i]]->Clone()) ;
|
||||
vCrvChunk.emplace_back( vCrvClassBorder[vIndOffs0[i]]->Clone()) ;
|
||||
if ( ! CutCurveToConnect( pCrvOffs0, pCrvOffs1, vCrvChunk, PockParams,
|
||||
( ( bOpen0 || bFirstIterOffs0) ? 0. : 10 * EPS_SMALL),
|
||||
( ( bOpen1 || bFirstIterOffs1) ? 0. : 10 * EPS_SMALL),
|
||||
@@ -7521,19 +7520,17 @@ CalcConformalOffsAndLinks( VICRVCOMPOPOVECTOR& vvCrvOffs, const ISurfFlatRegion*
|
||||
|
||||
/* NB.
|
||||
I link che collegano due curve di Offset aperte devono partire dalla prima e, seguendo il
|
||||
bordo della regione di classificazione ( pSfrClass) arrivano alla seconda.
|
||||
bordo della regione di classificazione ( pSfrClass) arrivare alla seconda.
|
||||
*/
|
||||
ICRVCOMPOPOVECTOR vCrvSfrClass ;
|
||||
if ( ! GetSfrCrvCompoLoops( pSfrClass, vCrvSfrClass))
|
||||
return false ;
|
||||
/* NB.
|
||||
I link che collegano due curve di Offset chiuse tra di loro vengono calcolati esattamente
|
||||
come per i percorsi SPIRAL, pertanto devo definire un insieme di curve di primo Offset sui
|
||||
quali smussare i Link per evitare di uscire dalla regione di svuotatura
|
||||
*/
|
||||
ICRVCOMPOPOVECTOR vCrvSfrExtended ;
|
||||
if ( ! GetConformalBordersCrvs( pSfrChunk, PockParams, vCrvSfrExtended))
|
||||
ICRVCOMPOPOVECTOR vCrvSfrClass ;
|
||||
if ( ! GetSfrCrvCompoLoops( pSfrClass, vCrvSfrClass))
|
||||
return false ;
|
||||
|
||||
/* NB.
|
||||
Se POCKET_CONFORMAL_ZIGZAG :
|
||||
- vCrvCompoOffs contiene gli Offset ordinati
|
||||
@@ -7588,7 +7585,7 @@ CalcConformalOffsAndLinks( VICRVCOMPOPOVECTOR& vvCrvOffs, const ISurfFlatRegion*
|
||||
if ( IsNull( pCrvLink))
|
||||
return false ;
|
||||
// se non calcolabile, allora retroazione, altrimenti lo memorizzo
|
||||
if ( ! GetConformalLink( vCrvOffs[i], vCrvOffs[i+1], PockParams, vCrvSfrClass, vCrvSfrExtended, pCrvLink) ||
|
||||
if ( ! GetConformalLink( vCrvOffs[i], vCrvOffs[i+1], PockParams, vCrvSfrClass, pCrvLink) ||
|
||||
IsNull( pCrvLink) || ! pCrvLink->IsValid() || pCrvLink->GetCurveCount() == 0)
|
||||
vCrvLink.resize( int( vCrvLink.size()) + 1) ;
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user