//-----------------------------------------------------------------------------+ // Copyright (C), 1998-2007, Beijing Tangent Software Co. Ltd. // = FileName : TGObject.h // = Version : ver2.0 // = Author : xlc // = CreateDate : 2002-09-09 // = Description: 类的声明 实体集合 // = Maintainers: // //-----------------------------------------------------------------------------+ #ifndef _TGOBJECTLIST_H_ #define _TGOBJECTLIST_H_ #ifndef _TPDLIST_H_ #include "TPDList.h" #endif #ifndef _TGOBJECT_H_ #include "TGObject.h" #endif #ifndef _TGOBJECT2D_H_ #include "TGObject2D.h" #endif #ifndef _TGOBJECT3D_H_ #include "TGObject3D.h" #endif #ifndef _TPGEEXTEND2D_H_ #include "TPGeExtend2D.h" #endif #ifndef _TPGEEXTEND3D_H_ #include "TPGeExtend3D.h" #endif #ifndef _TGMATRIX_H_ #include "TGMatrix.h" #endif class TPGeCurve3D; class TGSolid; class TPGeFace3D; class TGRegion2D; class TPGeCurve2D; class GEOAPI TGObjectList : public TPDList< TGObject > { public: TGObjectList(); TGObjectList(const TGObject&obj); TGObjectList(const TGObjectList&oList); ~TGObjectList(); TGObject2D& GetCurObject2D(); TPGeCurve2D& GetCurCurve2D(); TPGeCurve2D& GetCurCurveSeg2D(); TGRegion2D& GetCurRegion2D(); TGObject3D& GetCurObject3D(); TPGeCurve3D& GetCurCurve3D(); TPGeFace3D& GetCurFace3D(); TGSolid& GetCurSolid(); //集合内实体坐标变换 void TransformBy(const TGMatrix&mat); //完全分解 void ExplodeEx(); //实体集合与实体求交 void Intersect(const TGObject&obj,TGObjectList&res) const; //切割集合内实体 void CutBy(const TPGeCurve2D&curve,TGObjectList &left,TGObjectList&right,TGObjectList&mid) const; //裁剪集合内实体集合内全部为二维实体! void ClipBy(const TGRegion2D& face,TGObjectList &in,TGObjectList&out,TGObjectList&mid) const; //集合内全部为二维实体! void SubtractBy(const TGRegion2D&face,TGObjectList&res) const; void SubtractBy(const TGObjectList&faces,TGObjectList&res) const; //实体集合包围盒 bool GetExtend2D(TPGeExtend2D& ext) const; //实体集合包围盒 bool GetExtend3D(TPGeExtend3D& ext) const; //AddTail的同时防止产生集合内实体包含 bool CheckIn(TGObject *pObj); //使用CheckIn(GObject)合并oList void CheckIn(TGObjectList& oList); //并入的同时面域合并直到不无法合并为止,集合内全部为TGRegion2D! void Union(const TGRegion2D&face); void Union(); //去除重复部分 void RemoveDup(); //内部相交处全部打断,曲线不能自交 void InterBreakCurve2D(TGObjectList &res); //使集合内实体互不包含,但可能有重叠! void RemoveSubObj(); //使所有曲线反向,集合内全部为TPGeCurve2D! void ReverseCurve2D(); //将所有3D实体转化为2D实体 void Convert2D(); //将所有2D实体转化为3D实体 void Convert3D(); }; #endif