EgtGeomKernel 1.6c3 :
- migliorato cambio inizio di curva composita chiusa - aggiunto cambio inizio di circonferenza.
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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) ;
|
||||
|
||||
+2
-21
@@ -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<int> ( 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) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user