884306b56a
- migliorata gestione Clone di classi derivate da interfacce.
72 lines
4.0 KiB
C++
72 lines
4.0 KiB
C++
//----------------------------------------------------------------------------
|
|
// EgalTech 2013-2013
|
|
//----------------------------------------------------------------------------
|
|
// File : EgkCurveComposite.h Data : 22.11.13 Versione : 1.3a1
|
|
// Contenuto : Dichiarazione della interfaccia ICurveComposite.
|
|
//
|
|
//
|
|
//
|
|
// Modifiche : 22.11.13 DS Creazione modulo.
|
|
//
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#pragma once
|
|
|
|
#include "/EgtDev/Include/EGkCurve.h"
|
|
|
|
//----------------------------------------------------------------------------
|
|
class __declspec( novtable) ICurveComposite : public ICurve
|
|
{
|
|
public : // IGeoObj
|
|
ICurveComposite* Clone( void) const override = 0 ;
|
|
public :
|
|
virtual bool CopyFrom( const IGeoObj* pGObjSrc) = 0 ;
|
|
virtual bool Clear( void) = 0 ;
|
|
virtual bool AddCurve( const ICurve& cCrv, bool bEndOrStart = true, double dLinTol = EPS_SMALL) = 0 ;
|
|
virtual bool AddCurve( ICurve* pCrv, bool bEndOrStart = true, double dLinTol = EPS_SMALL) = 0 ;
|
|
virtual bool Close( void) = 0 ;
|
|
virtual bool FromSplit( const ICurve& cCrv, int nParts) = 0 ;
|
|
virtual bool FromPolyLine( const PolyLine& PL) = 0 ;
|
|
virtual bool FromPolyArc( const PolyArc& PA) = 0 ;
|
|
virtual bool PolygonCenterCorner( int nSides, const Point3d& ptCen, const Point3d& ptCorner, const Vector3d& vtN) = 0 ;
|
|
virtual bool PolygonCenterMidSide( int nSides, const Point3d& ptCen, const Point3d& ptMidSide, const Vector3d& vtN) = 0 ;
|
|
virtual bool PolygonSide( int nSides, const Point3d& ptStart, const Point3d& ptEnd, const Vector3d& vtN) = 0 ;
|
|
virtual int GetCurveCount( void) const = 0 ;
|
|
virtual const ICurve* GetCurve( int nCrv) const = 0 ;
|
|
virtual const ICurve* GetFirstCurve( void) const = 0 ;
|
|
virtual const ICurve* GetNextCurve( void) const = 0 ;
|
|
virtual const ICurve* GetLastCurve( void) const = 0 ;
|
|
virtual const ICurve* GetPrevCurve( void) const = 0 ;
|
|
virtual bool IsParamAtJoint( double dU) const = 0 ;
|
|
virtual ICurve* RemoveFirstOrLastCurve( bool bLast = true) = 0 ;
|
|
virtual bool ChangeStartPoint( double dU) = 0 ;
|
|
virtual bool AddLine( const Point3d& ptNew, bool bEndOrStart = true) = 0 ;
|
|
virtual bool AddArcTg( const Point3d& ptNew, bool bEndOrStart = true) = 0 ;
|
|
virtual bool AddArc2P( const Point3d& ptOther, const Point3d& ptNew, bool bEndOrStart = true) = 0 ;
|
|
virtual bool AddJoint( double dU) = 0 ;
|
|
virtual bool ModifyJoint( int nU, const Point3d& ptNewJoint) = 0 ;
|
|
virtual bool RemoveJoint( int nU) = 0 ;
|
|
virtual bool ArcsToBezierCurves( void) = 0 ;
|
|
virtual bool ArcsBezierCurvesToArcsPerpExtr( double dLinTol, double dAngTolDeg) = 0 ;
|
|
virtual bool MergeCurves( double dLinTol, double dAngTolDeg, bool bStartEnd = true) = 0 ;
|
|
virtual bool RemoveUndercutOnY( double dLinTol, double dAngTolDeg) = 0 ;
|
|
virtual bool IsACircle( double dLinTol, Point3d& ptCen, Vector3d& vtN, double& dRad, bool& bCCW) const = 0 ;
|
|
} ;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
inline ICurveComposite* CreateCurveComposite( void)
|
|
{ return (static_cast<ICurveComposite*>( CreateGeoObj( CRV_COMPO))) ; }
|
|
inline ICurveComposite* CloneCurveComposite( const IGeoObj* pGObj)
|
|
{ if ( pGObj == nullptr || pGObj->GetType() != CRV_COMPO)
|
|
return nullptr ;
|
|
return (static_cast<ICurveComposite*>(pGObj->Clone())) ; }
|
|
inline const ICurveComposite* GetCurveComposite( const IGeoObj* pGObj)
|
|
{ if ( pGObj == nullptr || pGObj->GetType() != CRV_COMPO)
|
|
return nullptr ;
|
|
return (static_cast<const ICurveComposite*>(pGObj)) ; }
|
|
inline ICurveComposite* GetCurveComposite( IGeoObj* pGObj)
|
|
{ if ( pGObj == nullptr || pGObj->GetType() != CRV_COMPO)
|
|
return nullptr ;
|
|
return (static_cast<ICurveComposite*>(pGObj)) ; }
|