EgtGeomKernel :

- a funzione FlattenCurve aggiunto parametro opzionale per uso estrusione.
This commit is contained in:
Dario Sassi
2020-08-30 11:27:31 +00:00
parent 4f4160b1a7
commit 3ef15352f5
+20 -4
View File
@@ -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) ;
}