//---------------------------------------------------------------------------- // 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 : 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 GetCurveNumber( 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 ArcsToBezierCurves( void) = 0 ; virtual bool ArcsBezierCurvesToArcsPerpExtr( double dLinTol, double dAngTolDeg) = 0 ; } ; //----------------------------------------------------------------------------- inline ICurveComposite* CreateCurveComposite( void) { return (static_cast( CreateGeoObj( CRV_COMPO))) ; } inline ICurveComposite* CloneCurveComposite( const IGeoObj* pGObj) { if ( pGObj == nullptr || pGObj->GetType() != CRV_COMPO) return nullptr ; return (static_cast(pGObj->Clone())) ; } inline const ICurveComposite* GetCurveComposite( const IGeoObj* pGObj) { if ( pGObj == nullptr || pGObj->GetType() != CRV_COMPO) return nullptr ; return (static_cast(pGObj)) ; } inline ICurveComposite* GetCurveComposite( IGeoObj* pGObj) { if ( pGObj == nullptr || pGObj->GetType() != CRV_COMPO) return nullptr ; return (static_cast(pGObj)) ; }