//---------------------------------------------------------------------------- // EgalTech 2013-2013 //---------------------------------------------------------------------------- // File : EGkCurveArc.h Data : 22.11.13 Versione : 1.3a1 // Contenuto : Dichiarazione della interfaccia ICurveArc. // // // // Modifiche : 22.11.13 DS Creazione modulo. // // //---------------------------------------------------------------------------- #pragma once #include "/EgtDev/Include/EGkCurve.h" //---------------------------------------------------------------------------- class __declspec( novtable) ICurveArc : public ICurve { public : // IGeoObj ICurveArc* Clone( void) const override = 0 ; public : virtual bool CopyFrom( const IGeoObj* pGObjSrc) = 0 ; virtual bool Set( const Point3d& ptCen, const Vector3d& vtN, double dRad, const Vector3d& vtS, double dAngCenDeg, double dDeltaN) = 0 ; virtual bool Set( const Point3d& ptCen, const Vector3d& vtN, double dRad) = 0 ; virtual bool SetXY( const Point3d& ptCen, double dRad, double dAngIniDeg, double dAngCenDeg, double dDeltaZ) = 0 ; virtual bool SetXY( const Point3d& ptCen, double dRad) = 0 ; virtual bool Set3P( const Point3d& ptStart, const Point3d& ptOther, const Point3d& ptEnd, bool bCirc = false) = 0 ; virtual bool Set2PNB( const Point3d& ptIni, const Point3d& ptFin, const Vector3d& vtN, double dBulge) = 0 ; virtual bool Set2PD( const Point3d& ptStart, const Point3d& ptEnd, double dDirStartDeg) = 0 ; virtual bool Set2PVN( const Point3d& ptStart, const Point3d& ptEnd, const Vector3d& vtDirS, const Vector3d& vtN) = 0 ; virtual bool Set2PRS( const Point3d& ptStart, const Point3d& ptEnd, double dRad, bool bCCW = true) = 0 ; virtual bool Set2PNRS( const Point3d& ptStart, const Point3d& ptEnd, const Vector3d& vtN, double dRad, bool bCCW = true) = 0 ; virtual bool SetCPA( const Point3d& ptCen, const Point3d& ptStart, double dAngCenDeg, double dDeltaZ) = 0 ; virtual bool SetCPAN( const Point3d& ptCen, const Point3d& ptStart, double dAngCenDeg, double dDeltaZ, const Vector3d& vtN) = 0 ; virtual bool SetC2P( const Point3d& ptCen, const Point3d& ptStart, const Point3d& ptNearEnd) = 0 ; virtual bool SetC2PN( const Point3d& ptCen, const Point3d& ptStart, const Point3d& ptNearEnd, const Vector3d& vtN) = 0 ; virtual bool IsPlane( double dToler = EPS_SMALL) const = 0 ; virtual bool IsACircle( void) const = 0 ; virtual bool IsInPlaneXY( void) const = 0 ; virtual bool IsInPlanePerpExtr( void) const = 0 ; virtual const Point3d& GetCenter( void) const = 0 ; virtual const Vector3d& GetNormVersor( void) const = 0 ; virtual const Vector3d& GetStartVersor( void) const = 0 ; virtual double GetRadius( void) const = 0 ; virtual double GetAngCenter( void) const = 0 ; virtual double GetDeltaN( void) const = 0 ; virtual bool IsPointInSector( const Point3d& ptP) const = 0 ; virtual bool CalcPointAngle( const Point3d& ptP, double& dAngDeg) const = 0 ; virtual bool CalcPointParamPosiz( const Point3d& ptP, double& dU, int& nPos) const = 0 ; virtual bool InvertN( void) = 0 ; virtual bool ChangeRadius( double dNewRadius) = 0 ; virtual bool ChangeDeltaN( double dNewDeltaN) = 0 ; virtual bool ChangeAngCenter( double dNewAngCenDeg) = 0 ; virtual bool ChangeStartPoint( double dU) = 0 ; virtual bool ExtendedOffset( double dDist, int nType = OFF_FILLET) = 0 ; virtual bool ToExplementary( void) = 0 ; virtual bool Flip( void) = 0 ; } ; //----------------------------------------------------------------------------- inline ICurveArc* CreateCurveArc( void) { return (static_cast( CreateGeoObj( CRV_ARC))) ; } inline ICurveArc* CloneCurveArc( const IGeoObj* pGObj) { if ( pGObj == nullptr || pGObj->GetType() != CRV_ARC) return nullptr ; return (static_cast(pGObj->Clone())) ; } inline const ICurveArc* GetCurveArc( const IGeoObj* pGObj) { if ( pGObj == nullptr || pGObj->GetType() != CRV_ARC) return nullptr ; return (static_cast(pGObj)) ; } inline ICurveArc* GetCurveArc( IGeoObj* pGObj) { if ( pGObj == nullptr || pGObj->GetType() != CRV_ARC) return nullptr ; return (static_cast(pGObj)) ; }