diff --git a/EgtGeomKernel.rc b/EgtGeomKernel.rc index 73f47d1..3340ff6 100644 Binary files a/EgtGeomKernel.rc and b/EgtGeomKernel.rc differ diff --git a/GeoVector3d.cpp b/GeoVector3d.cpp index 040d4af..6cf4c4e 100644 --- a/GeoVector3d.cpp +++ b/GeoVector3d.cpp @@ -186,6 +186,19 @@ GeoVector3d::GetBBox( const Frame3d& frRef, BBox3d& b3Ref) const return true ; } +//---------------------------------------------------------------------------- +bool +GeoVector3d::ChangeVector( const Vector3d& vtV) +{ + // assegno i dati + m_vtV = vtV ; + + // imposto ricalcolo della grafica + m_OGrMgr.Reset() ; + + return true ; +} + //---------------------------------------------------------------------------- bool GeoVector3d::ChangeBase( const Point3d& ptBase) diff --git a/GeoVector3d.h b/GeoVector3d.h index b173735..c4f6644 100644 --- a/GeoVector3d.h +++ b/GeoVector3d.h @@ -74,6 +74,7 @@ class GeoVector3d : public IGeoVector3d, public IGeoObjRW { return m_vtV ; } virtual const Point3d& GetBase( void) const { return m_ptBase ; } + virtual bool ChangeVector( const Vector3d& vtV) ; virtual bool ChangeBase( const Point3d& ptBase) ; virtual bool GetDrawWithArrowHead( double dFrazLenAH, double dMaxDimA, PolyLine& PL) const ; diff --git a/PolyLine.cpp b/PolyLine.cpp index 14af17f..d9d9af0 100644 --- a/PolyLine.cpp +++ b/PolyLine.cpp @@ -49,13 +49,13 @@ bool PolyLine::AddUPoint( double dPar, const Point3d& ptP) { // se il punto è uguale al precedente (ignoro parametro), non lo inserisco ma ok - if ( m_nCount > 0 && AreSamePointApprox( ptP, m_lUPoints.back().second)) { + if ( m_nCount > 0 && AreSamePointApprox( ptP, m_lUPoints.back().first)) { ++ m_nRejected ; return true ; } // eseguo inserimento try { - m_lUPoints.push_back( UPOINT( dPar, ptP)) ; + m_lUPoints.push_back( POINTU( ptP, dPar)) ; } catch (...) { return false ; @@ -74,10 +74,10 @@ PolyLine::Close( void) if ( m_lUPoints.size() < 2) return false ; // verifico non sia già chiuso - if ( AreSamePointApprox( m_lUPoints.front().second, m_lUPoints.back().second)) + if ( AreSamePointApprox( m_lUPoints.front().first, m_lUPoints.back().first)) return false ; // aggiungo un punto uguale al primo in coda - return AddUPoint( m_lUPoints.front().first, m_lUPoints.front().second) ; + return AddUPoint( m_lUPoints.front().second, m_lUPoints.front().first) ; } //---------------------------------------------------------------------------- @@ -110,9 +110,9 @@ PolyLine::EraseLastUPoint( void) bool PolyLine::AddOffsetToU( double dOffset) { - UPNTLIST::iterator iter ; + PNTULIST::iterator iter ; for ( iter = m_lUPoints.begin() ; iter != m_lUPoints.end() ; ++ iter) - iter->first += dOffset ; + iter->second += dOffset ; return true ; } @@ -121,9 +121,9 @@ PolyLine::AddOffsetToU( double dOffset) bool PolyLine::Translate( const Vector3d& vtMove) { - UPNTLIST::iterator iter ; + PNTULIST::iterator iter ; for ( iter = m_lUPoints.begin() ; iter != m_lUPoints.end() ; ++ iter) - iter->second.Translate( vtMove) ; + iter->first.Translate( vtMove) ; return true ; } @@ -132,9 +132,9 @@ PolyLine::Translate( const Vector3d& vtMove) bool PolyLine::Rotate( const Point3d& ptAx, const Vector3d& vtAx, double dCosAng, double dSinAng) { - UPNTLIST::iterator iter ; + PNTULIST::iterator iter ; for ( iter = m_lUPoints.begin() ; iter != m_lUPoints.end() ; ++ iter) - iter->second.Rotate( ptAx, vtAx, dCosAng, dSinAng) ; + iter->first.Rotate( ptAx, vtAx, dCosAng, dSinAng) ; return true ; } @@ -143,9 +143,9 @@ PolyLine::Rotate( const Point3d& ptAx, const Vector3d& vtAx, double dCosAng, dou bool PolyLine::Scale( const Frame3d& frRef, double dCoeffX, double dCoeffY, double dCoeffZ) { - UPNTLIST::iterator iter ; + PNTULIST::iterator iter ; for ( iter = m_lUPoints.begin() ; iter != m_lUPoints.end() ; ++ iter) - iter->second.Scale( frRef, dCoeffX, dCoeffY, dCoeffZ) ; + iter->first.Scale( frRef, dCoeffX, dCoeffY, dCoeffZ) ; return true ; } @@ -154,9 +154,9 @@ PolyLine::Scale( const Frame3d& frRef, double dCoeffX, double dCoeffY, double dC bool PolyLine::Mirror( const Point3d& ptOn, const Vector3d& vtNorm) { - UPNTLIST::iterator iter ; + PNTULIST::iterator iter ; for ( iter = m_lUPoints.begin() ; iter != m_lUPoints.end() ; ++ iter) - iter->second.Mirror( ptOn, vtNorm) ; + iter->first.Mirror( ptOn, vtNorm) ; return true ; } @@ -165,9 +165,9 @@ PolyLine::Mirror( const Point3d& ptOn, const Vector3d& vtNorm) bool PolyLine::Shear( const Point3d& ptOn, const Vector3d& vtNorm, const Vector3d& vtDir, double dCoeff) { - UPNTLIST::iterator iter ; + PNTULIST::iterator iter ; for ( iter = m_lUPoints.begin() ; iter != m_lUPoints.end() ; ++ iter) - iter->second.Shear( ptOn, vtNorm, vtDir, dCoeff) ; + iter->first.Shear( ptOn, vtNorm, vtDir, dCoeff) ; return true ; } @@ -176,9 +176,9 @@ PolyLine::Shear( const Point3d& ptOn, const Vector3d& vtNorm, const Vector3d& vt bool PolyLine::ToGlob( const Frame3d& frRef) { - UPNTLIST::iterator iter ; + PNTULIST::iterator iter ; for ( iter = m_lUPoints.begin() ; iter != m_lUPoints.end() ; ++ iter) - iter->second.ToGlob( frRef) ; + iter->first.ToGlob( frRef) ; return true ; } @@ -187,9 +187,9 @@ PolyLine::ToGlob( const Frame3d& frRef) bool PolyLine::ToLoc( const Frame3d& frRef) { - UPNTLIST::iterator iter ; + PNTULIST::iterator iter ; for ( iter = m_lUPoints.begin() ; iter != m_lUPoints.end() ; ++ iter) - iter->second.ToLoc( frRef) ; + iter->first.ToLoc( frRef) ; return true ; } @@ -198,9 +198,9 @@ PolyLine::ToLoc( const Frame3d& frRef) bool PolyLine::LocToLoc( const Frame3d& frOri, const Frame3d& frDest) { - UPNTLIST::iterator iter ; + PNTULIST::iterator iter ; for ( iter = m_lUPoints.begin() ; iter != m_lUPoints.end() ; ++ iter) - iter->second.LocToLoc( frOri, frDest) ; + iter->first.LocToLoc( frOri, frDest) ; return true ; } @@ -213,7 +213,7 @@ PolyLine::Join( PolyLine& PL, double dOffsetPar) if ( PL.m_nCount == 0) return true ; // verifico che l'ultimo punto di questa polilinea coincida con il primo dell'altra - if ( m_nCount > 0 && ! AreSamePointApprox( m_lUPoints.back().second, PL.m_lUPoints.front().second)) + if ( m_nCount > 0 && ! AreSamePointApprox( m_lUPoints.back().first, PL.m_lUPoints.front().first)) return false ; // cancello l'ultimo di questa EraseLastUPoint() ; @@ -235,9 +235,9 @@ PolyLine::Split( double dU, PolyLine& PL) // pulisco la polilinea destinazione PL.Clear() ; // ricerca del punto in cui dividere - UPNTLIST::const_iterator iter ; + PNTULIST::const_iterator iter ; iter = m_lUPoints.begin() ; - while ( iter != m_lUPoints.end() && iter->first < ( dU + EPS_PARAM)) + while ( iter != m_lUPoints.end() && iter->second < ( dU + EPS_PARAM)) ++ iter ; if ( iter == m_lUPoints.end()) return false ; @@ -261,7 +261,7 @@ PolyLine::IsClosed( void) const if ( m_lUPoints.size() < 3) return false ; - return ( AreSamePointApprox( m_lUPoints.front().second, m_lUPoints.back().second)) ; + return ( AreSamePointApprox( m_lUPoints.front().first, m_lUPoints.back().first)) ; } //---------------------------------------------------------------------------- @@ -277,9 +277,9 @@ PolyLine::GetFirstUPoint( double* pdPar, Point3d* pptP, bool bNotLast) const } if ( pdPar != nullptr) - *pdPar = m_iter->first ; + *pdPar = m_iter->second ; if ( pptP != nullptr) - *pptP = m_iter->second ; + *pptP = m_iter->first ; return true ; } @@ -299,9 +299,9 @@ PolyLine::GetNextUPoint( double* pdPar, Point3d* pptP, bool bNotLast) const } if ( pdPar != nullptr) - *pdPar = m_iter->first ; + *pdPar = m_iter->second ; if ( pptP != nullptr) - *pptP = m_iter->second ; + *pptP = m_iter->first ; return true ; } @@ -322,9 +322,9 @@ PolyLine::GetLastUPoint( double* pdPar, Point3d* pptP, bool bNotFirst) const } if ( pdPar != nullptr) - *pdPar = m_iter->first ; + *pdPar = m_iter->second ; if ( pptP != nullptr) - *pptP = m_iter->second ; + *pptP = m_iter->first ; return true ; } @@ -344,9 +344,9 @@ PolyLine::GetPrevUPoint( double* pdPar, Point3d* pptP, bool bNotFirst) const } if ( pdPar != nullptr) - *pdPar = m_iter->first ; + *pdPar = m_iter->second ; if ( pptP != nullptr) - *pptP = m_iter->second ; + *pptP = m_iter->first ; return true ; } @@ -360,9 +360,9 @@ PolyLine::GetCurrUPoint( double* pdPar, Point3d* pptP) const return false ; if ( pdPar != nullptr) - *pdPar = m_iter->first ; + *pdPar = m_iter->second ; if ( pptP != nullptr) - *pptP = m_iter->second ; + *pptP = m_iter->first ; return true ; } @@ -376,18 +376,18 @@ PolyLine::GetFirstULine( double* pdIni, Point3d* pptIni, double* pdFin, Point3d* if ( m_iter == m_lUPoints.end()) return false ; if ( pdIni != nullptr) - *pdIni = m_iter->first ; + *pdIni = m_iter->second ; if ( pptIni != nullptr) - *pptIni = m_iter->second ; + *pptIni = m_iter->first ; // parametro e punto finali ++ m_iter ; if ( m_iter == m_lUPoints.end()) return false ; if ( pdFin != nullptr) - *pdFin = m_iter->first ; + *pdFin = m_iter->second ; if ( pptFin != nullptr) - *pptFin = m_iter->second ; + *pptFin = m_iter->first ; return true ; } @@ -400,18 +400,18 @@ PolyLine::GetNextULine( double* pdIni, Point3d* pptIni, double* pdFin, Point3d* if ( m_iter == m_lUPoints.end()) return false ; if ( pdIni != nullptr) - *pdIni = m_iter->first ; + *pdIni = m_iter->second ; if ( pptIni != nullptr) - *pptIni = m_iter->second ; + *pptIni = m_iter->first ; // parametro e punto finali ++ m_iter ; if ( m_iter == m_lUPoints.end()) return false ; if ( pdFin != nullptr) - *pdFin = m_iter->first ; + *pdFin = m_iter->second ; if ( pptFin != nullptr) - *pptFin = m_iter->second ; + *pptFin = m_iter->first ; return true ; } @@ -428,18 +428,18 @@ PolyLine::GetLastULine( double* pdIni, Point3d* pptIni, double* pdFin, Point3d* if ( m_iter == m_lUPoints.end()) return false ; if ( pdFin != nullptr) - *pdFin = m_iter->first ; + *pdFin = m_iter->second ; if ( pptFin != nullptr) - *pptFin = m_iter->second ; + *pptFin = m_iter->first ; // parametro e punto iniziali if ( m_iter == m_lUPoints.begin()) return false ; -- m_iter ; if ( pdIni != nullptr) - *pdIni = m_iter->first ; + *pdIni = m_iter->second ; if ( pptIni != nullptr) - *pptIni = m_iter->second ; + *pptIni = m_iter->first ; return true ; } @@ -452,18 +452,18 @@ PolyLine::GetPrevULine( double* pdIni, Point3d* pptIni, double* pdFin, Point3d* if ( m_iter == m_lUPoints.end()) return false ; if ( pdFin != nullptr) - *pdFin = m_iter->first ; + *pdFin = m_iter->second ; if ( pptFin != nullptr) - *pptFin = m_iter->second ; + *pptFin = m_iter->first ; // parametro e punto iniziali if ( m_iter == m_lUPoints.begin()) return false ; -- m_iter ; if ( pdIni != nullptr) - *pdIni = m_iter->first ; + *pdIni = m_iter->second ; if ( pptIni != nullptr) - *pptIni = m_iter->second ; + *pptIni = m_iter->first ; return true ; }