//---------------------------------------------------------------------------- // 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 : // IGeoObj ICurveLine* Clone( void) const override = 0 ; public : virtual bool CopyFrom( const IGeoObj* pGObjSrc) = 0 ; virtual bool Set( const Point3d& ptStart, const Point3d& ptEnd) = 0 ; virtual bool SetPVL( const Point3d& ptStart, const Vector3d& vtDir, double dLen) = 0 ; virtual bool SetPDL( const Point3d& ptStart, double dDirAngDeg, double dLen) = 0 ; virtual const Point3d& GetStart( void) const = 0 ; virtual const Point3d& GetEnd( void) const = 0 ; virtual bool CalcPointParamPosiz( const Point3d& ptP, bool bOnXY, double& dU, int& nPos) const = 0 ; } ; //----------------------------------------------------------------------------- inline ICurveLine* CreateCurveLine( void) { return (static_cast( CreateGeoObj( CRV_LINE))) ; } inline ICurveLine* CloneCurveLine( const IGeoObj* pGObj) { if ( pGObj == nullptr || pGObj->GetType() != CRV_LINE) return nullptr ; return (static_cast(pGObj->Clone())) ; } 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)) ; } //---------------------------------------------------------------------------- // Raccolte di puntatori a ICurveLine typedef std::vector CICRVLINEVECTOR ; // vettore di puntatori a const ICurveLine typedef std::vector ICRVLINEPVECTOR ; // vettore di puntatori a ICurveLine typedef std::list ICRVLINEPLIST ; // lista di puntatori a ICurveLine typedef std::vector> ICRVLINEPOVECTOR ; // vettore di puntatori esclusivi a ICurveLine