EgtGeomKernel :
- in CalcPocketing corretta gestione superficie limite per Conformal.
This commit is contained in:
+17
-3
@@ -7361,10 +7361,10 @@ CalcConformalLink( ICurveComposite* pCrvOffs0, ICurveComposite* pCrvOffs1, Pocke
|
||||
vCrvChunk.emplace_back( vCrvClassBorder[vIndOffs0[i]]->Clone()) ;
|
||||
// se la curva successiva è chiusa, aggiorno il suo punto iniziale a quello a minima distanza
|
||||
if ( ! bOpen1) {
|
||||
Point3d ptS ; pCrvOffs0->GetStartPoint( ptS) ;
|
||||
Point3d ptE ; pCrvOffs0->GetEndPoint( ptE) ;
|
||||
double dPar ;
|
||||
int nFlag ;
|
||||
if ( DistPointCurve( ptS, *pCrvOffs1).GetParamAtMinDistPoint( 0., dPar, nFlag))
|
||||
if ( DistPointCurve( ptE, *pCrvOffs1).GetParamAtMinDistPoint( 0., dPar, nFlag))
|
||||
pCrvOffs1->ChangeStartPoint( dPar) ;
|
||||
}
|
||||
if ( ! CutCurveToConnect( pCrvOffs0, pCrvOffs1, vCrvChunk, PockParams,
|
||||
@@ -7810,13 +7810,27 @@ CalcConformalOffsAndLinks( VICRVCOMPOPOVECTOR& vvCrvOffs, const ISurfFlatRegion*
|
||||
I link che collegano due curve di Offset aperte devono partire dalla prima e, seguendo il
|
||||
bordo della regione di classificazione ( pSfrClass) arrivare alla seconda.
|
||||
*/
|
||||
/* NB.
|
||||
La regione di classificazione ( pSfrClass) deve tenere conto della regione limite; nel caso di
|
||||
bordi chiusi, bisogna stare a distanza opportuna da essi, non raccordandoci i Links
|
||||
*/
|
||||
/* 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 vCrvSfrClass ;
|
||||
if ( ! GetSfrCrvCompoLoops( pSfrClass, vCrvSfrClass))
|
||||
PtrOwner<ISurfFlatRegion> pSfrClassReal( CloneSurfFlatRegion( pSfrClass)) ;
|
||||
if ( IsNull( pSfrClassReal) || ! pSfrClassReal->IsValid())
|
||||
return false ;
|
||||
if ( PockParams.SfrLimit.IsValid()) {
|
||||
PtrOwner<ISurfFlatRegion> pSfrLimit( CloneSurfFlatRegion( &PockParams.SfrLimit)) ;
|
||||
if ( IsNull( pSfrLimit) || ! pSfrLimit->IsValid() ||
|
||||
! pSfrLimit->Offset( PockParams.dRad + PockParams.dRadialOffset, ICurve::OFF_FILLET) ||
|
||||
! pSfrClassReal->Subtract( *pSfrLimit))
|
||||
return false ;
|
||||
}
|
||||
if ( ! GetSfrCrvCompoLoops( pSfrClassReal, vCrvSfrClass))
|
||||
return false ;
|
||||
|
||||
/* NB.
|
||||
|
||||
Reference in New Issue
Block a user