Include :
- aggiunto file per gestione automatica superfici in locale.
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2017-2017
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EGkSurfLocal.h Data : 29.03.17 Versione : 1.8c3
|
||||
// Contenuto : Classe gestione superfici nel locale desiderato.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Modifiche : 29.03.17 DS Creazione modulo.
|
||||
//
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "/EgtDev/Include/EGkSurf.h"
|
||||
#include "/EgtDEv/Include/EgkGeomDB.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
class SurfLocal
|
||||
{
|
||||
public :
|
||||
SurfLocal( IGeomDB* pGeomDB, int nCrvId, const Frame3d& frLoc)
|
||||
: m_pSrf( nullptr), m_pCopy( nullptr)
|
||||
{ // verifica dei parametri
|
||||
if ( pGeomDB == nullptr || &frLoc == nullptr)
|
||||
return ;
|
||||
// recupero riferimento della curva
|
||||
Frame3d frCrv ;
|
||||
if ( ! pGeomDB->GetGlobFrame( nCrvId, frCrv))
|
||||
return ;
|
||||
// recupero la superficie
|
||||
m_pSrf = GetSurf( pGeomDB->GetGeoObj( nCrvId)) ;
|
||||
if ( m_pSrf == nullptr)
|
||||
return ;
|
||||
// se i riferimenti coincidono non devo fare altro
|
||||
if ( AreSameFrame( frCrv, frLoc))
|
||||
return ;
|
||||
// copio la curva e la porto in locale
|
||||
m_pCopy = m_pSrf->Clone() ;
|
||||
if ( m_pCopy == nullptr) {
|
||||
m_pSrf = nullptr ;
|
||||
return ;
|
||||
}
|
||||
m_pCopy->LocToLoc( frCrv, frLoc) ;
|
||||
m_pSrf = m_pCopy ;
|
||||
}
|
||||
SurfLocal( const SurfLocal& Other)
|
||||
: m_pSrf( nullptr), m_pCopy( nullptr)
|
||||
{ // se non devo clonare
|
||||
if ( Other.m_pCopy == nullptr) {
|
||||
m_pSrf = Other.m_pSrf ;
|
||||
return ;
|
||||
}
|
||||
m_pCopy = Other.m_pCopy->Clone() ;
|
||||
if ( m_pCopy == nullptr)
|
||||
return ;
|
||||
m_pSrf = m_pCopy ;
|
||||
}
|
||||
SurfLocal( SurfLocal&& Other) _NOEXCEPT
|
||||
: m_pSrf( Other.m_pSrf), m_pCopy( Other.m_pCopy)
|
||||
{ // annullo gli originali
|
||||
Other.m_pSrf = nullptr ;
|
||||
Other.m_pCopy = nullptr ;
|
||||
}
|
||||
~SurfLocal( void)
|
||||
{ // se necessario libero la memoria
|
||||
if ( m_pCopy != nullptr)
|
||||
delete m_pCopy ;
|
||||
m_pCopy = nullptr ;
|
||||
m_pSrf = nullptr ;
|
||||
}
|
||||
const ISurf* Get( void) const
|
||||
{ return m_pSrf ; }
|
||||
const ISurf* operator->() const
|
||||
{ return m_pSrf ; }
|
||||
operator const ISurf*() const
|
||||
{ return m_pSrf ; }
|
||||
|
||||
private :
|
||||
SurfLocal& operator =( const SurfLocal& other) ; // intenzionalmente senza implementazione
|
||||
SurfLocal& operator =( SurfLocal&& other) ; // intenzionalmente senza implementazione
|
||||
|
||||
private :
|
||||
const ISurf* m_pSrf ;
|
||||
ISurf* m_pCopy ;
|
||||
} ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Raccolte di SurfLocal
|
||||
typedef std::vector<SurfLocal> SURFLOCALVECTOR ; // vettore di SurfLocal
|
||||
typedef std::list<SurfLocal> SURFLOCALLIST ; // lista di SurfLocal
|
||||
Reference in New Issue
Block a user