EgtGeomKernel 1.6h2 :

- aggiunte Regioni (SurfFlatRegion) e prime funzionalità relative
- corretti Intervals per Add
- corretta CalcPointParamPosiz per archi che in realtà sono circonferenze.
This commit is contained in:
Dario Sassi
2015-08-07 10:45:40 +00:00
parent 8cd29c49ad
commit f4b88af3e1
13 changed files with 1007 additions and 22 deletions
+10 -12
View File
@@ -36,7 +36,7 @@ GEOOBJ_REGISTER( CRV_COMPO, NGE_C_CMP, CurveComposite) ;
//----------------------------------------------------------------------------
CurveComposite::CurveComposite( void)
: m_nStatus( TO_VERIFY), m_VtExtr(), m_dThick(), m_nTempProp()
: m_nStatus( TO_VERIFY), m_VtExtr(), m_dThick(), m_nTempProp(), m_Iter( m_CrvSmplS.end())
{
}
@@ -51,16 +51,15 @@ bool
CurveComposite::Clear( void)
{
// ciclo di pulizia
PCSD_ITER Iter ;
for ( Iter = m_CrvSmplS.begin() ; Iter != m_CrvSmplS.end() ; ++Iter)
for ( auto Iter = m_CrvSmplS.begin() ; Iter != m_CrvSmplS.end() ; ++Iter)
delete (*Iter) ;
m_CrvSmplS.clear() ;
m_nStatus = TO_VERIFY ;
m_VtExtr = V_NULL ;
m_dThick = 0 ;
m_nTempProp = 0 ;
m_Iter = m_CrvSmplS.end() ;
// imposto ricalcolo della grafica
m_OGrMgr.Reset() ;
@@ -75,7 +74,7 @@ CurveComposite::AddCurve( const ICurve& cCrv, bool bEndOrStart, double dLinTol)
// se curva semplice
if ( cCrv.IsSimple()) {
// creo una copia della curva
ICurve* pSmplCrv = ::GetCurve( cCrv.Clone()) ;
ICurve* pSmplCrv = cCrv.Clone() ;
if ( pSmplCrv == nullptr)
return false ;
// inserisco la curva
@@ -94,7 +93,7 @@ CurveComposite::AddCurve( const ICurve& cCrv, bool bEndOrStart, double dLinTol)
pCrvOri = ( bEndOrStart ? pCrvCompo->GetFirstCurve() : pCrvCompo->GetLastCurve()) ;
while ( pCrvOri != nullptr) {
// creo una copia della curva
pSmplCrv = ::GetCurve( pCrvOri->Clone()) ;
pSmplCrv = pCrvOri->Clone() ;
if ( pSmplCrv == nullptr)
return false ;
// inserisco la curva
@@ -285,7 +284,7 @@ CurveComposite::FromSplit( const ICurve& cCrv, int nParts)
for ( int i = 1 ; i <= nParts ; ++ i) {
dStartLen = dEndLen ;
dEndLen = dTotLen * i / (double) nParts ;
PtrOwner<ICurve> pSmplCrv( ::GetCurve( cCrv.Clone())) ;
PtrOwner<ICurve> pSmplCrv( cCrv.Clone()) ;
if ( IsNull( pSmplCrv))
return false ;
if ( ! pSmplCrv->TrimEndAtLen( dEndLen) ||
@@ -535,9 +534,8 @@ CurveComposite::CopyFrom( const CurveComposite& ccSrc)
m_VtExtr = ccSrc.m_VtExtr ;
m_dThick = ccSrc.m_dThick ;
m_nTempProp = ccSrc.m_nTempProp ;
PCSD_CONST_ITER Iter ;
for ( Iter = ccSrc.m_CrvSmplS.begin() ; Iter != ccSrc.m_CrvSmplS.end() ; ++Iter) {
if ( ! AddCurve( **Iter))
for ( auto& pCrv : ccSrc.m_CrvSmplS) {
if ( ! AddCurve( *pCrv))
return false ;
}
return true ;
@@ -620,7 +618,7 @@ CurveComposite::Save( NgeWriter& ngeOut) const
int i = 0 ;
const ICurve* pCrvSmpl = GetFirstCurve() ;
while ( pCrvSmpl != nullptr) {
// recupero il gestore di lettura/scrittura delle curve
// recupero il gestore di lettura/scrittura della curva
const IGeoObjRW* pCSmplRW = dynamic_cast<const IGeoObjRW*>( pCrvSmpl) ;
if ( pCSmplRW == nullptr)
return false ;
@@ -2110,7 +2108,7 @@ CurveComposite::GetPrevCurve( void) const
return nullptr ;
// vado al precedente
if ( m_Iter == m_CrvSmplS.begin())
if ( m_Iter == m_CrvSmplS.begin() || m_Iter == m_CrvSmplS.end())
return nullptr ;
-- m_Iter ;