59 lines
2.9 KiB
C++
59 lines
2.9 KiB
C++
//----------------------------------------------------------------------------
|
|
// 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 :
|
|
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, double dRad, double dAngIniDeg, double dAngCenDeg, double dDeltaZ) = 0 ;
|
|
virtual bool Set( const Point3d& ptCen, double dRad) = 0 ;
|
|
virtual bool IsFlat( void) const = 0 ;
|
|
virtual bool IsACircle( void) const = 0 ;
|
|
virtual bool IsInPlaneXY( 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 ;
|
|
} ;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
inline ICurveArc* CreateCurveArc( void)
|
|
{ return (static_cast<ICurveArc*>( CreateGeoObj( CRV_ARC))) ; }
|
|
inline ICurveArc* CloneCurveArc( const IGeoObj* pGObj)
|
|
{ if ( pGObj == nullptr || pGObj->GetType() != CRV_ARC)
|
|
return nullptr ;
|
|
return (static_cast<ICurveArc*>(pGObj->Clone())) ; }
|
|
inline bool CopyCurveArc( const ICurveArc* pCASou, ICurveArc* pCADest)
|
|
{ if ( pCASou == nullptr || pCADest == nullptr || ! pCASou->IsValid())
|
|
return false ;
|
|
if ( pCASou == pCADest)
|
|
return true ;
|
|
return pCADest->Set( pCASou->GetCenter(), pCASou->GetNormVersor(), pCASou->GetRadius(),
|
|
pCASou->GetStartVersor(), pCASou->GetAngCenter(), pCASou->GetDeltaN()) ; }
|
|
inline const ICurveArc* GetCurveArc( const IGeoObj* pGObj)
|
|
{ if ( pGObj == nullptr || pGObj->GetType() != CRV_ARC)
|
|
return nullptr ;
|
|
return (static_cast<const ICurveArc*>(pGObj)) ; }
|
|
inline ICurveArc* GetCurveArc( IGeoObj* pGObj)
|
|
{ if ( pGObj == nullptr || pGObj->GetType() != CRV_ARC)
|
|
return nullptr ;
|
|
return (static_cast<ICurveArc*>(pGObj)) ; }
|