From 7f5e98143cdbd1337b6fe7e3ec4c1c08baac045e Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Mon, 16 Mar 2015 14:14:59 +0000 Subject: [PATCH] EgtGeomKernel 1.6c3 : - migliorato cambio inizio di curva composita chiusa - aggiunto cambio inizio di circonferenza. --- CurveArc.cpp | 21 +++++++++++++++++++++ CurveArc.h | 1 + CurveComposite.cpp | 23 ++--------------------- EgtGeomKernel.rc | Bin 11710 -> 11710 bytes 4 files changed, 24 insertions(+), 21 deletions(-) diff --git a/CurveArc.cpp b/CurveArc.cpp index b7a9ce0..0d03474 100644 --- a/CurveArc.cpp +++ b/CurveArc.cpp @@ -1720,6 +1720,27 @@ CurveArc::ChangeDeltaN( double dNewDeltaN) return Validate() ; } +//---------------------------------------------------------------------------- +bool +CurveArc::ChangeStartPoint( double dU) +{ + // la curva deve essere chiusa (ne verifica anche lo stato) + if ( ! IsClosed()) + return false ; + // recupero il punto che corrisponde al valore del parametro + Point3d ptP ; + if ( ! GetPointD1D2( dU, ICurve::FROM_MINUS, ptP)) + return false ; + // cambio il versore start + Vector3d vtDir = ptP - m_PtCen ; + if ( ! vtDir.Normalize()) + return false ; + m_VtS = vtDir ; + // imposto ricalcolo della grafica + m_OGrMgr.Reset() ; + return true ; +} + //---------------------------------------------------------------------------- bool CurveArc::ToAdditional( void) diff --git a/CurveArc.h b/CurveArc.h index 850e465..31f8da7 100644 --- a/CurveArc.h +++ b/CurveArc.h @@ -155,6 +155,7 @@ class CurveArc : public ICurveArc, public IGeoObjRW virtual bool InvertN( void) ; virtual bool ChangeRadius( double dNewRadius) ; virtual bool ChangeDeltaN( double dNewDeltaN) ; + virtual bool ChangeStartPoint( double dU) ; virtual bool ExtendedOffset( double dDist, int nType = OFF_FILLET) ; virtual bool ToAdditional( void) ; virtual bool Flip( void) ; diff --git a/CurveComposite.cpp b/CurveComposite.cpp index a133ee9..7268b77 100644 --- a/CurveComposite.cpp +++ b/CurveComposite.cpp @@ -2100,27 +2100,8 @@ CurveComposite::ChangeStartPoint( double dU) if ( ! IsClosed()) return false ; - // il nuovo inizio è l'estremo di una curva semplice più vicino al parametro ricevuto - int nCurve = static_cast ( dU + 0.5) ; - - // verifico ci siano abbastanza curve - if ( nCurve > m_nCounter) - return false ; - - // tolgo le curve dalla testa e le inserisco in coda - for ( int i = 0 ; i < nCurve ; ++ i) { - // estraggo la curva dall'inizio - ICurve* pCrv = RemoveFirstOrLastCurve( false) ; - if ( pCrv == nullptr) - return false ; - // la inserisco alla fine - if ( ! AddCurve( pCrv, true)) { - delete pCrv ; - return false ; - } - } - - return true ; + // questa funzione gestisce già anche il cambio di inizio su curve chiuse + return TrimStartEndAtParam( dU, dU) ; } //---------------------------------------------------------------------------- diff --git a/EgtGeomKernel.rc b/EgtGeomKernel.rc index 3c4bd9998aa05ac1b2ed5dd5b8da8d8c4d829e59..04a364a3b58f2d5416ee0f40bc4383de4135ed50 100644 GIT binary patch delta 94 zcmdlNy)SyhFE&Qw&A-_cnHh~ID{|{@_Trkr0u;H;XNwSVW8B;$>;>dw2zN+>g;Df- LFmBFL4&ed-W11TR delta 94 zcmdlNy)SyhFE&P_&A-_cnHh~HD{|{@_Trkr0u;H;XNwSVW8B;$>;>dw2zN+>g;Df- LFmBFL4&ed-Vf-5U