diff --git a/EGkGeoPoint3d.h b/EGkGeoPoint3d.h index 1429fbb..f15cc1d 100644 --- a/EGkGeoPoint3d.h +++ b/EGkGeoPoint3d.h @@ -20,7 +20,7 @@ class _declspec( novtable) IGeoPoint3d : public IGeoObj { public : virtual bool Set( const Point3d& ptP) = 0 ; - virtual const Point3d* GetPoint( void) const = 0 ; + virtual const Point3d& GetPoint( void) const = 0 ; } ; //----------------------------------------------------------------------------- @@ -33,7 +33,7 @@ inline IGeoPoint3d* CloneGeoPoint3d( const IGeoObj* pGObj) inline bool CopyGeoPoint3d( const IGeoPoint3d* pGPSou, IGeoPoint3d* pGPDest) { if ( pGPSou == nullptr || pGPDest == nullptr) return false ; - return pGPDest->Set( *(pGPSou->GetPoint())) ; } + return pGPDest->Set( pGPSou->GetPoint()) ; } inline const IGeoPoint3d* GetGeoPoint3d( const IGeoObj* pGObj) { if ( pGObj == nullptr || pGObj->GetType() != GEO_PNT3D) return nullptr ; diff --git a/EGkGeoVector3d.h b/EGkGeoVector3d.h index 78258ee..db8b338 100644 --- a/EGkGeoVector3d.h +++ b/EGkGeoVector3d.h @@ -20,7 +20,7 @@ class _declspec( novtable) IGeoVector3d : public IGeoObj { public : virtual bool Set( const Vector3d& vtV) = 0 ; - virtual const Vector3d* GetVector( void) const = 0 ; + virtual const Vector3d& GetVector( void) const = 0 ; } ; //----------------------------------------------------------------------------- @@ -33,7 +33,7 @@ inline IGeoVector3d* CloneGeoVector3d( const IGeoObj* pGObj) inline bool CopyGeoVector3d( const IGeoVector3d* pGVSou, IGeoVector3d* pGVDest) { if ( pGVSou == nullptr || pGVDest == nullptr) return false ; - return pGVDest->Set( *(pGVSou->GetVector())) ; } + return pGVDest->Set( pGVSou->GetVector()) ; } inline const IGeoVector3d* GetGeoVector3d( const IGeoObj* pGObj) { if ( pGObj == nullptr || pGObj->GetType() != GEO_VECT3D) return nullptr ; diff --git a/EgkCurve.h b/EgkCurve.h new file mode 100644 index 0000000..27f7290 --- /dev/null +++ b/EgkCurve.h @@ -0,0 +1,33 @@ +//---------------------------------------------------------------------------- +// EgalTech 2013-2013 +//---------------------------------------------------------------------------- +// File : EgkCurve.h Data : 22.11.13 Versione : 1.3a1 +// Contenuto : Dichiarazione della interfaccia ICurve. +// +// +// +// Modifiche : 22.11.13 DS Creazione modulo. +// +// +//---------------------------------------------------------------------------- + +#pragma once + +#include "/EgtDev/Include/EGkGeoObj.h" + +//---------------------------------------------------------------------------- +class _declspec( novtable) ICurve : public IGeoObj +{ + public : + virtual bool IsSimple( void) const = 0 ; + virtual bool IsClosed( void) const = 0 ; + virtual bool GetStartPoint( Point3d& ptStart) const = 0 ; + virtual bool GetEndPoint( Point3d& ptEnd) const = 0 ; + virtual bool GetDomain( double& dStart, double& dEnd) const = 0 ; + virtual bool GetLength( double& dLen) const = 0 ; + virtual bool GetPointD1D2( double dU, Point3d& ptPos, Vector3d& vtDer1, Vector3d& vtDer2) const = 0 ; + virtual bool GetPoint( double dU, Point3d& ptPos) const = 0 ; + virtual bool GetPointTang( double dU, Point3d& ptPos, Vector3d& vtTang) const = 0 ; + virtual bool GetPointTangNormCurv( double dU, Point3d& ptPos, Vector3d& vtT, Vector3d& vtN, double& dCurv) const = 0 ; + virtual bool Reverse( void) = 0 ; +} ; diff --git a/EgkCurveArc.h b/EgkCurveArc.h new file mode 100644 index 0000000..1324c42 --- /dev/null +++ b/EgkCurveArc.h @@ -0,0 +1,54 @@ +//---------------------------------------------------------------------------- +// 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 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( CreateGeoObj( KEY_CRV_ARC))) ; } +inline ICurveArc* CloneCurveArc( const IGeoObj* pGObj) + { if ( pGObj == nullptr || pGObj->GetType() != CRV_ARC) + return nullptr ; + return (static_cast(pGObj->Clone())) ; } +inline bool CopyCurveArc( const ICurveArc* pCASou, ICurveArc* pCADest) + { if ( pCASou == nullptr || pCADest == nullptr || ! pCASou->IsValid()) + return false ; + 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(pGObj)) ; } +inline ICurveArc* GetCurveArc( IGeoObj* pGObj) + { if ( pGObj == nullptr || pGObj->GetType() != CRV_ARC) + return nullptr ; + return (static_cast(pGObj)) ; } diff --git a/EgkCurveLine.h b/EgkCurveLine.h new file mode 100644 index 0000000..3342771 --- /dev/null +++ b/EgkCurveLine.h @@ -0,0 +1,45 @@ +//---------------------------------------------------------------------------- +// EgalTech 2013-2013 +//---------------------------------------------------------------------------- +// File : EgkCurveLine.h Data : 22.11.13 Versione : 1.3a1 +// Contenuto : Dichiarazione della interfaccia ICurveLine. +// +// +// +// Modifiche : 22.11.13 DS Creazione modulo. +// +// +//---------------------------------------------------------------------------- + +#pragma once + +#include "/EgtDev/Include/EGkCurve.h" + +//---------------------------------------------------------------------------- +class _declspec( novtable) ICurveLine : public ICurve +{ + public : + virtual bool Set( const Point3d& ptStart, const Point3d& ptEnd) = 0 ; + virtual const Point3d& GetStart( void) const = 0 ; + virtual const Point3d& GetEnd( void) const = 0 ; +} ; + +//----------------------------------------------------------------------------- +inline ICurveLine* CreateCurveLine( void) + { return (static_cast( CreateGeoObj( KEY_CRV_LINE))) ; } +inline ICurveLine* CloneCurveLine( const IGeoObj* pGObj) + { if ( pGObj == nullptr || pGObj->GetType() != CRV_LINE) + return nullptr ; + return (static_cast(pGObj->Clone())) ; } +inline bool CopyCurveLine( const ICurveLine* pCLSou, ICurveLine* pCLDest) + { if ( pCLSou == nullptr || pCLDest == nullptr || ! pCLSou->IsValid()) + return false ; + return pCLDest->Set( pCLSou->GetStart(), pCLSou->GetEnd()) ; } +inline const ICurveLine* GetCurveLine( const IGeoObj* pGObj) + { if ( pGObj == nullptr || pGObj->GetType() != CRV_LINE) + return nullptr ; + return (static_cast(pGObj)) ; } +inline ICurveLine* GetCurveLine( IGeoObj* pGObj) + { if ( pGObj == nullptr || pGObj->GetType() != CRV_LINE) + return nullptr ; + return (static_cast(pGObj)) ; }