EgtGeomKernel 1.5h7 :

- modificta gestione versione dei file Nge
- alle curve aggiunti vettore estrusione e spessore
- IsFlat ora tiene conto del vettore estrusione
- a TSC aggiunte CurveModify.EXTRusion e CurveModify.THickness.
This commit is contained in:
Dario Sassi
2014-08-25 17:12:55 +00:00
parent 396d53fc5d
commit c7d10b83e1
19 changed files with 458 additions and 84 deletions
+34 -5
View File
@@ -266,11 +266,15 @@ PolyLine::IsClosed( void) const
//----------------------------------------------------------------------------
bool
PolyLine::GetFirstUPoint( double* pdPar, Point3d* pptP) const
PolyLine::GetFirstUPoint( double* pdPar, Point3d* pptP, bool bNotLast) const
{
m_iter = m_lUPoints.begin() ;
if ( m_iter == m_lUPoints.end())
return false ;
if ( bNotLast && m_iter == -- ( m_lUPoints.end())) {
m_iter = m_lUPoints.end() ;
return false ;
}
if ( pdPar != nullptr)
*pdPar = m_iter->first ;
@@ -289,8 +293,10 @@ PolyLine::GetNextUPoint( double* pdPar, Point3d* pptP, bool bNotLast) const
++ m_iter ;
if ( m_iter == m_lUPoints.end())
return false ;
if ( bNotLast && m_iter == -- ( m_lUPoints.end()))
if ( bNotLast && m_iter == -- ( m_lUPoints.end())) {
m_iter = m_lUPoints.end() ;
return false ;
}
if ( pdPar != nullptr)
*pdPar = m_iter->first ;
@@ -302,15 +308,18 @@ PolyLine::GetNextUPoint( double* pdPar, Point3d* pptP, bool bNotLast) const
//----------------------------------------------------------------------------
bool
PolyLine::GetLastUPoint( double* pdPar, Point3d* pptP) const
PolyLine::GetLastUPoint( double* pdPar, Point3d* pptP, bool bNotFirst) const
{
m_iter = m_lUPoints.end() ;
if ( m_iter == m_lUPoints.begin())
return false ;
-- m_iter ;
if ( m_iter == m_lUPoints.end())
return false ;
if ( bNotFirst && m_iter == m_lUPoints.begin()) {
m_iter = m_lUPoints.end() ;
return false ;
}
if ( pdPar != nullptr)
*pdPar = m_iter->first ;
@@ -327,7 +336,27 @@ PolyLine::GetPrevUPoint( double* pdPar, Point3d* pptP, bool bNotFirst) const
if ( m_iter == m_lUPoints.begin())
return false ;
-- m_iter ;
if ( bNotFirst && m_iter == m_lUPoints.begin())
if ( m_iter == m_lUPoints.end())
return false ;
if ( bNotFirst && m_iter == m_lUPoints.begin()) {
m_iter = m_lUPoints.end() ;
return false ;
}
if ( pdPar != nullptr)
*pdPar = m_iter->first ;
if ( pptP != nullptr)
*pptP = m_iter->second ;
return true ;
}
//----------------------------------------------------------------------------
bool
PolyLine::GetCurrUPoint( double* pdPar, Point3d* pptP) const
{
// verifico validità punto corrente
if ( m_iter == m_lUPoints.end())
return false ;
if ( pdPar != nullptr)