EgtGeomKernel :
- piccole sistemazioni post Vroni (per usarlo in Offset _VRONI, altrimenti NVRONI).
This commit is contained in:
+8
-8
@@ -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 ;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
@@ -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) ;
|
||||
|
||||
+2
-2
@@ -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 ;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
+4
-4
@@ -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 ;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_WINDOWS;I_AM_EGK;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN32;_WINDOWS;I_AM_EGK;NVRONI;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<OpenMPSupport>false</OpenMPSupport>
|
||||
<CompileAs>CompileAsCpp</CompileAs>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
@@ -145,7 +145,7 @@ copy $(TargetPath) \EgtProg\DllD32</Command>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_WINDOWS;I_AM_EGK;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN32;_WINDOWS;I_AM_EGK;NVRONI;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<OpenMPSupport>false</OpenMPSupport>
|
||||
<CompileAs>CompileAsCpp</CompileAs>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
@@ -183,7 +183,7 @@ copy $(TargetPath) \EgtProg\DllD64</Command>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;_WINDOWS;I_AM_EGK;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN32;_WINDOWS;I_AM_EGK;NVRONI;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<OpenMPSupport>false</OpenMPSupport>
|
||||
<CompileAs>CompileAsCpp</CompileAs>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
@@ -232,7 +232,7 @@ copy $(TargetPath) \EgtProg\Dll32</Command>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;_WINDOWS;I_AM_EGK;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN32;_WINDOWS;I_AM_EGK;NVRONI;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<OpenMPSupport>false</OpenMPSupport>
|
||||
<CompileAs>CompileAsCpp</CompileAs>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
|
||||
+11
-5
@@ -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 ;
|
||||
{
|
||||
|
||||
+9
-3
@@ -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<ICurve> 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
|
||||
|
||||
+1
-1
@@ -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<bool> 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) {
|
||||
|
||||
+2
-2
@@ -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() ; }
|
||||
|
||||
@@ -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<SurfFlatRegion> pSfr( GetBasicSurfFlatRegion( pSfrOrig)) ;
|
||||
PtrOwner<SurfFlatRegion> pSfr( CreateOffsetSurf( dDist, nType)) ;
|
||||
if ( IsNull( pSfr))
|
||||
return false ;
|
||||
|
||||
|
||||
+1
-1
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user