EgtGeomKernel 1.6t2 :

- irrobustita creazione regione da curva ingrossata (Fat Curve).
This commit is contained in:
Dario Sassi
2016-08-11 17:57:00 +00:00
parent 5fb31ec078
commit 8e7b54e3d5
2 changed files with 17 additions and 8 deletions
+17 -8
View File
@@ -1,13 +1,13 @@
//----------------------------------------------------------------------------
// EgalTech 2015-2015
// EgalTech 2015-2016
//----------------------------------------------------------------------------
// File : StmFromCurves.cpp Data : 01.02.15 Versione : 1.6b1
// File : StmFromCurves.cpp Data : 11.08.16 Versione : 1.6t2
// Contenuto : Implementazione di funzioni per creazione di superfici Stm
// a partire da curve, con diversi metodi.
//
//
// Modifiche : 01.02.15 DS Creazione modulo.
//
// 11.08.16 DS In GetSurfFlatRegionFromFatCurve sostituito Offset a SimpleOffset.
//
//----------------------------------------------------------------------------
@@ -18,6 +18,7 @@
#include "CurveComposite.h"
#include "SurfFlatRegion.h"
#include "GeoConst.h"
#include "/EgtDev/Include/EgkOffsetCurve.h"
#include "/EgtDev/Include/EGkSfrCreate.h"
#include "/EgtDev/Include/EgtPointerOwner.h"
#include <algorithm>
@@ -141,11 +142,19 @@ GetSurfFlatRegionFromFatCurve( ICurve* pCrv, double dRadius, bool bSquareEnds, b
// per creare la regione
SurfFlatRegionByContours SfrCntr( false, false) ;
// offset della prima curva a destra del raggio
if ( pCompo1->SimpleOffset( dRadius, nOffsType))
SfrCntr.AddCurve( Release( pCompo1)) ;
// offset della seconda curva a destra del raggio
if ( pCompo2->SimpleOffset( dRadius, nOffsType))
SfrCntr.AddCurve( Release( pCompo2)) ;
OffsetCurve OffsCrv1 ;
if ( ! OffsCrv1.Make( pCompo1, dRadius, nOffsType))
return nullptr ;
ICurve* pOffs1 = OffsCrv1.GetLongerCurve() ;
if ( pOffs1 != nullptr)
SfrCntr.AddCurve( pOffs1) ;
// offset della seconda curva a destra del raggio (è invertita rispetto alla precedente)
OffsetCurve OffsCrv2 ;
if ( ! OffsCrv2.Make( pCompo2, dRadius, nOffsType))
return nullptr ;
ICurve* pOffs2 = OffsCrv2.GetLongerCurve() ;
if ( pOffs2 != nullptr)
SfrCntr.AddCurve( pOffs2) ;
// creo la regione
return SfrCntr.GetSurf() ;
}