Files
envi-code/SourceCode/Code2026/tg_shs/inc/subgeo/TGObjectList.h
T

129 lines
2.8 KiB
C++
Raw Normal View History

2026-10-04 00:04:20 +08:00
//-----------------------------------------------------------------------------+
2026-09-28 15:28:50 +08:00
// Copyright (C), 1998-2007, Beijing Tangent Software Co. Ltd.
// = FileName : TGObject.h
// = Version : ver2.0
// = Author : xlc
// = CreateDate : 2002-09-09
2026-10-04 00:04:20 +08:00
// = Description: 类的声明 实体集合
2026-09-28 15:28:50 +08:00
// = 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();
2026-10-04 00:04:20 +08:00
//集合内实体坐标变换
2026-09-28 15:28:50 +08:00
void TransformBy(const TGMatrix&mat);
2026-10-04 00:04:20 +08:00
//完全分解
2026-09-28 15:28:50 +08:00
void ExplodeEx();
2026-10-04 00:04:20 +08:00
//实体集合与实体求交
2026-09-28 15:28:50 +08:00
void Intersect(const TGObject&obj,TGObjectList&res) const;
2026-10-04 00:04:20 +08:00
//切割集合内实体
2026-09-28 15:28:50 +08:00
void CutBy(const TPGeCurve2D&curve,TGObjectList &left,TGObjectList&right,TGObjectList&mid) const;
2026-10-04 00:04:20 +08:00
//裁剪集合内实体集合内全部为二维实体!
2026-09-28 15:28:50 +08:00
void ClipBy(const TGRegion2D& face,TGObjectList &in,TGObjectList&out,TGObjectList&mid) const;
2026-10-04 00:04:20 +08:00
//集合内全部为二维实体!
2026-09-28 15:28:50 +08:00
void SubtractBy(const TGRegion2D&face,TGObjectList&res) const;
void SubtractBy(const TGObjectList&faces,TGObjectList&res) const;
2026-10-04 00:04:20 +08:00
//实体集合包围盒
2026-09-28 15:28:50 +08:00
bool GetExtend2D(TPGeExtend2D& ext) const;
2026-10-04 00:04:20 +08:00
//实体集合包围盒
2026-09-28 15:28:50 +08:00
bool GetExtend3D(TPGeExtend3D& ext) const;
2026-10-04 00:04:20 +08:00
//AddTail的同时防止产生集合内实体包含
2026-09-28 15:28:50 +08:00
bool CheckIn(TGObject *pObj);
2026-10-04 00:04:20 +08:00
//使用CheckIn(GObject)合并oList
2026-09-28 15:28:50 +08:00
void CheckIn(TGObjectList& oList);
2026-10-04 00:04:20 +08:00
//并入的同时面域合并直到不无法合并为止,集合内全部为TGRegion2D!
2026-09-28 15:28:50 +08:00
void Union(const TGRegion2D&face);
void Union();
2026-10-04 00:04:20 +08:00
//去除重复部分
2026-09-28 15:28:50 +08:00
void RemoveDup();
2026-10-04 00:04:20 +08:00
//内部相交处全部打断,曲线不能自交
2026-09-28 15:28:50 +08:00
void InterBreakCurve2D(TGObjectList &res);
2026-10-04 00:04:20 +08:00
//使集合内实体互不包含,但可能有重叠!
2026-09-28 15:28:50 +08:00
void RemoveSubObj();
2026-10-04 00:04:20 +08:00
//使所有曲线反向,集合内全部为TPGeCurve2D!
2026-09-28 15:28:50 +08:00
void ReverseCurve2D();
2026-10-04 00:04:20 +08:00
//将所有3D实体转化为2D实体
2026-09-28 15:28:50 +08:00
void Convert2D();
2026-10-04 00:04:20 +08:00
//将所有2D实体转化为3D实体
2026-09-28 15:28:50 +08:00
void Convert3D();
};
#endif