EgtGeomKernel :
- a funzione FlattenCurve aggiunto parametro opzionale per uso estrusione.
This commit is contained in:
+20
-4
@@ -701,14 +701,16 @@ NurbsToBezierCurve( const CNurbsData& cnData)
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
ICurve*
|
||||
FlattenCurve( const ICurve& crCrv, double dToler, double dAngToler)
|
||||
FlattenCurve( const ICurve& crCrv, double dToler, double dAngToler, int nFlag)
|
||||
{
|
||||
// Determino il piano medio della curva e verifico se scostamento accettabile
|
||||
Plane3d plMid ;
|
||||
if ( ! crCrv.IsFlat( plMid, false, dToler))
|
||||
if ( ! crCrv.IsFlat( plMid, ( nFlag == FLTCRV_USE_EXTR), dToler))
|
||||
return nullptr ;
|
||||
// Recupero estrusione rispetto alla normale al piano medio
|
||||
Vector3d vtExtr ; crCrv.GetExtrusion( vtExtr) ;
|
||||
if ( nFlag == FLTCRV_USE_EXTR)
|
||||
plMid.Set( plMid.GetPoint(), vtExtr) ;
|
||||
// Determino il suo centro geometrico
|
||||
Point3d ptCen ;
|
||||
if ( ! crCrv.GetCentroid( ptCen))
|
||||
@@ -732,7 +734,14 @@ FlattenCurve( const ICurve& crCrv, double dToler, double dAngToler)
|
||||
if ( IsNull( pCrv))
|
||||
return nullptr ;
|
||||
// assegno estrusione
|
||||
pCrv->SetExtrusion( vtExtr) ;
|
||||
if ( nFlag != FLTCRV_SET_EXTR)
|
||||
pCrv->SetExtrusion( vtExtr) ;
|
||||
else {
|
||||
if ( vtExtr * plMid.GetVersN() >= 0)
|
||||
pCrv->SetExtrusion( plMid.GetVersN()) ;
|
||||
else
|
||||
pCrv->SetExtrusion( - plMid.GetVersN()) ;
|
||||
}
|
||||
// restituisco la copia della curva
|
||||
return Release( pCrv) ;
|
||||
}
|
||||
@@ -750,7 +759,14 @@ FlattenCurve( const ICurve& crCrv, double dToler, double dAngToler)
|
||||
if ( ! pCrv->Scale( frRef, 1, 1, 0))
|
||||
return nullptr ;
|
||||
// assegno estrusione
|
||||
pCrv->SetExtrusion( vtExtr) ;
|
||||
if ( nFlag != FLTCRV_SET_EXTR)
|
||||
pCrv->SetExtrusion( vtExtr) ;
|
||||
else {
|
||||
if ( vtExtr * plMid.GetVersN() >= 0)
|
||||
pCrv->SetExtrusion( plMid.GetVersN()) ;
|
||||
else
|
||||
pCrv->SetExtrusion( - plMid.GetVersN()) ;
|
||||
}
|
||||
// restituisco la nuova curva
|
||||
return Release( pCrv) ;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user