diff --git a/CurveArc.cpp b/CurveArc.cpp
index 3629384..1b0b5b9 100644
--- a/CurveArc.cpp
+++ b/CurveArc.cpp
@@ -2274,25 +2274,25 @@ CurveArc::CalcVoronoiObject() const
}
//----------------------------------------------------------------------------
-Voronoi*
+Voronoi*
CurveArc::GetVoronoiObject() const
{
if ( m_nStatus != OK)
return nullptr ;
-
+
// se non è stato calcolato, lo calcolo
if ( m_pVoronoiObj == nullptr)
CalcVoronoiObject() ;
-
- // restituisco Voronoi
+
+ // restituisco Voronoi
return m_pVoronoiObj ;
}
//----------------------------------------------------------------------------
void
CurveArc::ResetVoronoiObject() const
-{
- if ( m_pVoronoiObj != nullptr)
- delete m_pVoronoiObj ;
+{
+ if ( m_pVoronoiObj != nullptr)
+ delete m_pVoronoiObj ;
m_pVoronoiObj = nullptr ;
-}
\ No newline at end of file
+}
diff --git a/CurveArc.h b/CurveArc.h
index 6e4fbcc..d11bb8c 100644
--- a/CurveArc.h
+++ b/CurveArc.h
@@ -130,12 +130,6 @@ class CurveArc : public ICurveArc, public IGeoObjRW
bool ExtendStartByLen( double dLenExt) override ;
bool ExtendEndByLen( double dLenExt) override ;
Voronoi* GetVoronoiObject( void) const override ;
- bool CalcVoronoiDiagram( ICURVEPOVECTOR& vCrvs, int nBound = VORONOI_STD_BOUND) const override
- { return CalcCurveVoronoiDiagram( *this, vCrvs, nBound) ; }
- bool CalcMedialAxis( ICURVEPOVECTOR& vCrvs, int nSide) const override
- { return CalcCurveMedialAxis( *this, vCrvs, nSide) ; }
- bool CalcFatCurve( ICURVEPOVECTOR& vCrvs, double dRadius, bool bSquareEnds, bool bSquareMids) const override
- { return CalcCurveFatCurve( *this, vCrvs, dRadius, bSquareEnds, bSquareMids) ; }
public : // ICurveArc
bool CopyFrom( const IGeoObj* pGObjSrc) override ;
diff --git a/CurveAux.h b/CurveAux.h
index 109535a..18bab55 100644
--- a/CurveAux.h
+++ b/CurveAux.h
@@ -31,6 +31,3 @@ bool CurveGetArea( const ICurve& crvC, Plane3d& plPlane, double& dArea) ;
bool CurveDump( const ICurve& crvC, std::string& sOut, bool bMM, const char* szNewLine) ;
bool CopyExtrusion( const ICurve* pSouCrv, ICurve* pDestCrv) ;
bool CopyThickness( const ICurve* pSouCrv, ICurve* pDestCrv) ;
-bool CalcCurveVoronoiDiagram( const ICurve& crvC, ICURVEPOVECTOR& vCrvs, int nBound) ;
-bool CalcCurveMedialAxis( const ICurve& crvC, ICURVEPOVECTOR& vCrvs, int nSide) ;
-bool CalcCurveFatCurve( const ICurve& crvC, ICURVEPOVECTOR& vCrvs, double dRadius, bool bSquareEnds, bool bSquareMids) ;
diff --git a/CurveBezier.cpp b/CurveBezier.cpp
index b683665..5eabe92 100644
--- a/CurveBezier.cpp
+++ b/CurveBezier.cpp
@@ -2129,7 +2129,7 @@ CurveBezier::GetVoronoiObject() const
if ( m_pVoronoiObj == nullptr)
CalcVoronoiObject() ;
- // restituisco Voronoi
+ // restituisco Voronoi
return m_pVoronoiObj ;
}
@@ -2140,4 +2140,4 @@ CurveBezier::ResetVoronoiObject() const
if ( m_pVoronoiObj != nullptr)
delete m_pVoronoiObj ;
m_pVoronoiObj = nullptr ;
-}
\ No newline at end of file
+}
diff --git a/CurveBezier.h b/CurveBezier.h
index 15923d7..b303d9b 100644
--- a/CurveBezier.h
+++ b/CurveBezier.h
@@ -132,12 +132,6 @@ class CurveBezier : public ICurveBezier, public IGeoObjRW
bool ExtendStartByLen( double dLenExt) override ;
bool ExtendEndByLen( double dLenExt) override ;
Voronoi* GetVoronoiObject( void) const override ;
- bool CalcVoronoiDiagram( ICURVEPOVECTOR& vCrvs, int nBound = VORONOI_STD_BOUND) const override
- { return CalcCurveVoronoiDiagram( *this, vCrvs, nBound) ; }
- bool CalcMedialAxis( ICURVEPOVECTOR& vCrvs, int nSide) const override
- { return CalcCurveMedialAxis( *this, vCrvs, nSide) ; }
- bool CalcFatCurve( ICURVEPOVECTOR& vCrvs, double dRadius, bool bSquareEnds, bool bSquareMids) const override
- { return CalcCurveFatCurve( *this, vCrvs, dRadius, bSquareEnds, bSquareMids) ; }
public : // ICurveBezier
bool CopyFrom( const IGeoObj* pGObjSrc) override ;
diff --git a/CurveComposite.h b/CurveComposite.h
index 263bab6..33848ac 100644
--- a/CurveComposite.h
+++ b/CurveComposite.h
@@ -127,12 +127,6 @@ class CurveComposite : public ICurveComposite, public IGeoObjRW
bool ExtendStartByLen( double dLenExt) override ;
bool ExtendEndByLen( double dLenExt) override ;
Voronoi* GetVoronoiObject( void) const override ;
- bool CalcVoronoiDiagram( ICURVEPOVECTOR& vCrvs, int nBound = VORONOI_STD_BOUND) const override
- { return CalcCurveVoronoiDiagram( *this, vCrvs, nBound) ; }
- bool CalcMedialAxis( ICURVEPOVECTOR& vCrvs, int nSide) const override
- { return CalcCurveMedialAxis( *this, vCrvs, nSide) ; }
- bool CalcFatCurve( ICURVEPOVECTOR& vCrvs, double dRadius, bool bSquareEnds, bool bSquareMids) const override
- { return CalcCurveFatCurve( *this, vCrvs, dRadius, bSquareEnds, bSquareMids) ; }
public : // ICurveComposite
bool CopyFrom( const IGeoObj* pGObjSrc) override ;
diff --git a/CurveLine.cpp b/CurveLine.cpp
index 72fafd6..8050e48 100644
--- a/CurveLine.cpp
+++ b/CurveLine.cpp
@@ -1068,15 +1068,15 @@ CurveLine::GetVoronoiObject() const
if ( m_pVoronoiObj == nullptr)
CalcVoronoiObject() ;
- // restituisco Voronoi
+ // restituisco Voronoi
return m_pVoronoiObj ;
}
//----------------------------------------------------------------------------
void
CurveLine::ResetVoronoiObject() const
-{
+{
if ( m_pVoronoiObj != nullptr)
- delete m_pVoronoiObj ;
+ delete m_pVoronoiObj ;
m_pVoronoiObj = nullptr ;
-}
\ No newline at end of file
+}
diff --git a/CurveLine.h b/CurveLine.h
index a11fd18..73e5860 100644
--- a/CurveLine.h
+++ b/CurveLine.h
@@ -131,12 +131,6 @@ class CurveLine : public ICurveLine, public IGeoObjRW
bool ExtendStartByLen( double dLenExt) override ;
bool ExtendEndByLen( double dLenExt) override ;
Voronoi* GetVoronoiObject( void) const override ;
- bool CalcVoronoiDiagram( ICURVEPOVECTOR& vCrvs, int nBound = VORONOI_STD_BOUND) const override
- { return CalcCurveVoronoiDiagram( *this, vCrvs, nBound) ; }
- bool CalcMedialAxis( ICURVEPOVECTOR& vCrvs, int nSide) const override
- { return CalcCurveMedialAxis( *this, vCrvs, nSide) ; }
- bool CalcFatCurve( ICURVEPOVECTOR& vCrvs, double dRadius, bool bSquareEnds, bool bSquareMids) const override
- { return CalcCurveFatCurve( *this, vCrvs, dRadius, bSquareEnds, bSquareMids) ; }
public : // ICurveLine
bool CopyFrom( const IGeoObj* pGObjSrc) override ;
diff --git a/EgtGeomKernel.vcxproj b/EgtGeomKernel.vcxproj
index 2778ff7..1d7bc11 100644
--- a/EgtGeomKernel.vcxproj
+++ b/EgtGeomKernel.vcxproj
@@ -109,7 +109,7 @@
Use
Level3
Disabled
- WIN32;_WINDOWS;I_AM_EGK;_DEBUG;%(PreprocessorDefinitions)
+ WIN32;_WINDOWS;I_AM_EGK;NVRONI;_DEBUG;%(PreprocessorDefinitions)
false
CompileAsCpp
false
@@ -145,7 +145,7 @@ copy $(TargetPath) \EgtProg\DllD32
Use
Level3
Disabled
- WIN32;_WINDOWS;I_AM_EGK;_DEBUG;%(PreprocessorDefinitions)
+ WIN32;_WINDOWS;I_AM_EGK;NVRONI;_DEBUG;%(PreprocessorDefinitions)
false
CompileAsCpp
false
@@ -183,7 +183,7 @@ copy $(TargetPath) \EgtProg\DllD64
MaxSpeed
true
true
- WIN32;_WINDOWS;I_AM_EGK;NDEBUG;%(PreprocessorDefinitions)
+ WIN32;_WINDOWS;I_AM_EGK;NVRONI;NDEBUG;%(PreprocessorDefinitions)
false
CompileAsCpp
Speed
@@ -232,7 +232,7 @@ copy $(TargetPath) \EgtProg\Dll32
MaxSpeed
true
true
- WIN32;_WINDOWS;I_AM_EGK;NDEBUG;%(PreprocessorDefinitions)
+ WIN32;_WINDOWS;I_AM_EGK;NVRONI;NDEBUG;%(PreprocessorDefinitions)
false
CompileAsCpp
Speed
diff --git a/OffsetCurve.cpp b/OffsetCurve.cpp
index 7c19400..f12841a 100644
--- a/OffsetCurve.cpp
+++ b/OffsetCurve.cpp
@@ -64,8 +64,14 @@ OffsetCurve::Reset( void)
//----------------------------------------------------------------------------
bool
-OffsetCurve::Make( const ICurve* pCrv, double dDist, int nType, bool bUseVoronoi)
+OffsetCurve::Make( const ICurve* pCrv, double dDist, int nType)
{
+ // imposto metodo di calcolo
+ bool bUseVoronoi = false ;
+ #ifdef _VRONI
+ bUseVoronoi = true ;
+ #endif // _VRONI
+
// pulisco tutto
Reset() ;
// verifico che la curva esista
@@ -164,10 +170,6 @@ OffsetCurve::Make( const ICurve* pCrv, double dDist, int nType, bool bUseVoronoi
// -------------------- OFFSET STANDARD ---------------------------------
if ( ! bUseVoronoi) {
- // verifico se il punto iniziale è stato modificato
- Point3d ptNewStart ; ccCopy.GetStartPoint( ptNewStart) ;
- bChangeStart = ( ! AreSamePointApprox( ptNewStart, ptStart)) ;
-
// verifico che la curva sia fatta solo da rette e archi che giacciono nel piano XY (VtExtr è ora Z+)
if ( ! ccCopy.ArcsBezierCurvesToArcsPerpExtr( 10 * EPS_SMALL, ANG_TOL_STD_DEG))
return false ;
@@ -188,6 +190,10 @@ OffsetCurve::Make( const ICurve* pCrv, double dDist, int nType, bool bUseVoronoi
if ( ! ccCopy.MergeCurves( 10 * EPS_SMALL, ANG_TOL_STD_DEG, bClosed))
return false ;
+ // verifico se il punto iniziale è stato modificato
+ Point3d ptNewStart ; ccCopy.GetStartPoint( ptNewStart) ;
+ bChangeStart = ( ! AreSamePointApprox( ptNewStart, ptStart)) ;
+
// calcolo le lunghezze delle diverse entità
DBLVECTOR vLens ;
{
diff --git a/SfrCreate.cpp b/SfrCreate.cpp
index 58bac09..6cf7a71 100644
--- a/SfrCreate.cpp
+++ b/SfrCreate.cpp
@@ -114,9 +114,15 @@ GetSurfFlatRegionDisk( double dRadius)
//-------------------------------------------------------------------------------
ISurfFlatRegion*
-GetSurfFlatRegionFromFatCurve( ICurve* pCrv, double dRadius, bool bSquareEnds, bool bSquareMids, bool bUseVoronoi)
+GetSurfFlatRegionFromFatCurve( ICurve* pCrv, double dRadius, bool bSquareEnds, bool bSquareMids)
{
- // mi impossesso della curva
+ // imposto metodo di calcolo
+ bool bUseVoronoi = false ;
+ #ifdef _VRONI
+ bUseVoronoi = true ;
+ #endif // _VRONI
+
+ // mi impossesso della curva
PtrOwner pCurve( pCrv) ;
if ( IsNull( pCurve))
return nullptr ;
@@ -327,7 +333,7 @@ GetSurfFlatRegionFromFatCurve( ICurve* pCrv, double dRadius, bool bSquareEnds, b
else {
// calcolo la fat curve con Voronoi
ICURVEPOVECTOR vFatCurves ;
- if ( ! pCurve->CalcFatCurve( vFatCurves, dRadius, bSquareEnds, bSquareMids))
+ if ( CalcCurveFatCurve( *pCurve, vFatCurves, dRadius, bSquareEnds, bSquareMids))
return nullptr ;
// costruisco la superficie a partire dalle curve
diff --git a/StmFromCurves.cpp b/StmFromCurves.cpp
index bedd2b6..1f47f22 100644
--- a/StmFromCurves.cpp
+++ b/StmFromCurves.cpp
@@ -458,7 +458,7 @@ GetSurfTriMeshBeveledRectSwept( double dDimH, double dDimV, double dBevelH, doub
double vDist[NUM_OFFS] = { dDimH / 2 - dBevelH, -dDimH / 2 + dBevelH, dDimH / 2, -dDimH / 2} ;
future vRes[NUM_OFFS] ;
for ( int i = 0 ; i < NUM_OFFS ; ++ i)
- vRes[i] = async( launch::async, &OffsetCurve::Make, &vOffsCrv[i], pGuide, vDist[i], ICurve::OFF_FILLET, false) ;
+ vRes[i] = async( launch::async, &OffsetCurve::Make, &vOffsCrv[i], pGuide, vDist[i], ICurve::OFF_FILLET) ;
bool bOk = true ;
int nFin = 0 ;
while ( nFin < NUM_OFFS) {
diff --git a/SurfFlatRegion.h b/SurfFlatRegion.h
index b88f7cb..d69cbcb 100644
--- a/SurfFlatRegion.h
+++ b/SurfFlatRegion.h
@@ -85,8 +85,8 @@ class SurfFlatRegion : public ISurfFlatRegion, public IGeoObjRW
bool Add( const ISurfFlatRegion& Other) override ;
bool Subtract( const ISurfFlatRegion& Other) override ;
bool Intersect( const ISurfFlatRegion& Other) override ;
- bool Offset( double dDist, int nType, bool bUseVoronoi = false) override ;
- ISurfFlatRegion* CreateOffsetSurf( double dDist, int nType, bool bUseVoronoi = false) const override ;
+ bool Offset( double dDist, int nType) override ;
+ SurfFlatRegion* CreateOffsetSurf( double dDist, int nType) const override ;
bool GetGrossArea( double& dArea) const override ;
const Point3d& GetPlanePoint( void) const override
{ return m_frF.Orig() ; }
diff --git a/SurfFlatRegionOffset.cpp b/SurfFlatRegionOffset.cpp
index 9cf40b2..9fcd53e 100644
--- a/SurfFlatRegionOffset.cpp
+++ b/SurfFlatRegionOffset.cpp
@@ -23,11 +23,17 @@
using namespace std ;
//----------------------------------------------------------------------------
-ISurfFlatRegion*
-SurfFlatRegion::CreateOffsetSurf( double dDist, int nType, bool bUseVoronoi) const
+SurfFlatRegion*
+SurfFlatRegion::CreateOffsetSurf( double dDist, int nType) const
{
// restituisce la superficie offsettata senza modificare la superficie corrente. In caso di errore restituisce nullptr
+ // imposto metodo di calcolo
+ bool bUseVoronoi = false ;
+ #ifdef _VRONI
+ bUseVoronoi = true ;
+ #endif // _VRONI
+
// recupero il numero dei chunk
int nChunk = GetChunkCount() ;
if ( nChunk == 0)
@@ -195,7 +201,7 @@ SurfFlatRegion::CreateOffsetSurf( double dDist, int nType, bool bUseVoronoi) con
//----------------------------------------------------------------------------
bool
-SurfFlatRegion::Offset( double dDist, int nType, bool bUseVoronoi)
+SurfFlatRegion::Offset( double dDist, int nType)
{
// recupero il numero dei chunk
int nChunk = GetChunkCount() ;
@@ -207,10 +213,7 @@ SurfFlatRegion::Offset( double dDist, int nType, bool bUseVoronoi)
return this->Clone() ;
// calcolo la superficie di offset
- ISurfFlatRegion* pSfrOrig = CreateOffsetSurf( dDist, nType, bUseVoronoi) ;
- if ( pSfrOrig == nullptr)
- return false ;
- PtrOwner pSfr( GetBasicSurfFlatRegion( pSfrOrig)) ;
+ PtrOwner pSfr( CreateOffsetSurf( dDist, nType)) ;
if ( IsNull( pSfr))
return false ;
diff --git a/Voronoi.cpp b/Voronoi.cpp
index 7f6e93e..1e3f95b 100644
--- a/Voronoi.cpp
+++ b/Voronoi.cpp
@@ -330,7 +330,7 @@ Voronoi::AddBezierToVroni( const ICurveBezier* pBezier, int& nVroniCrv, int nLoo
//----------------------------------------------------------------------------
ICurve*
-Voronoi::GetCurve( int nId)
+Voronoi::GetCurve( int nId) const
{
// verifico validità indice
if ( nId < 0 || nId > ( int)m_vpCrvs.size() - 1)