//-----------------------------------------------------------------------------+ // Copyright (C), 1998-2007, Beijing Tangent Software Co. Ltd. // = FileName : TGPCurve3D.h // = Version : ver2.0 // = Author : xlc // = CreateDate : 2002-09-09 // = Description: 类的声明 平面曲线 // = Maintainers: // //-----------------------------------------------------------------------------+ #ifndef _TGPCURVE3D_H_ #define _TGPCURVE3D_H_ #ifndef _TWFLAG_H_ #include "TWFlag.h" #endif #ifndef _TPGEEXTEND2D_H_ #include "TPGeExtend2D.h" #endif #ifndef _TPGEEXTEND3D_H_ #include "TPGeExtend3D.h" #endif #ifndef _TGMATRIX_H_ #include "TGMatrix.h" #endif #ifndef _TPGECOORDSYS_H_ #include "TPGeCoordSys.h" #endif #ifndef _TGPOINT_H_ #include "TGPoint.h" #endif #ifndef _TGOBJECTLIST_H_ #include "TGObjectList.h" #endif #ifndef _TGOBJECT_H_ #include "TGObject.h" #endif #ifndef _TPGECURVE3D_H_ #include "TPGeCurve3D.h" #endif #ifndef _TTABLE_H_ #include "TTable.h" #endif class TPGeCurve2D; class GEOAPI TGPCurve3D:public TPGeCurve3D { DECLARE_RUN_TIME_CLASS(TGPCurve3D) public: TGPCurve3D(TPGeCurve2D* pCurve=NULL); TGPCurve3D(const TGPCurve3D& curve); TGPCurve3D& operator=(const TGPCurve3D& curve); virtual ~TGPCurve3D(); //override TPGeCurve3D virtual bool IsClosed() const; virtual bool IsSelfCross() const; virtual bool IsFinite(bool bStart) const; virtual double Area() const; virtual double Length() const; virtual void Reverse(); virtual TPGeCurve3D* GetSubCurve(double pa0,double pa1) const; virtual void Split(const TTable& paTable,TGObjectList& res) const; virtual void Pa2Pt(double pa,TGPoint& pt) const; virtual void Pt2Pa(const TGPoint& pt,double& pa) const; //override TGObject3D //因此曲线必须在ECS的XY平面上! virtual bool GetPlane(TPGePlane& plane) const; virtual TGObject2D* Convert2D() const; //override TGObject virtual bool IsValid() const; virtual bool GetEcs(TPGeCoordSys& ECS) const; virtual TGObject* Clone() const; virtual bool Explode(TGObjectList& res) const; //分解方法与pCurve2d一致,if IS_CLASS(pCurve2d,TPGeGLine2D)则分解为TPGeGLine3D/TPGeGLineRay3D/TPGeGLineSeg3D virtual bool Intersect(const TGObject& obj,TGObjectList& res) const; virtual bool IsInclude(const TGObject& obj) const; virtual GRelation HitTest(const TGPoint& pt) const; virtual void TransformBy(const TGMatrix& mat); virtual bool GetExtend3D(TPGeExtend3D& ext) const; virtual bool GetExtend2D(TPGeExtend2D& ext) const; void Clear(); public: TPGeCoordSys ecs;//所在实体坐标系 TPGeCurve2D* pCurve2d;//二维曲线,必须完全在ECS的XY平面上!内部释放! }; #endif