Files
envi-code/SourceCode/Code2026/tg_shs/inc/geo/TCoverVisibleRelationCal.h
T

37 lines
1.1 KiB
C++
Raw Normal View History

2026-10-04 00:04:20 +08:00
#ifndef _TCOVERVISIBLERELATIONCAL_H_
2026-09-28 15:28:50 +08:00
#define _TCOVERVISIBLERELATIONCAL_H_
#include "SectionStructDef.h"
#include "TGGePoly2D.h"
class GEOAPI TCoverVisibleRelationCal
{
public:
TCoverVisibleRelationCal(){};
~TCoverVisibleRelationCal(){};
2026-10-04 00:04:20 +08:00
enum SectionRelative // 表明上下两面之间的遮掩关系
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
// Top面完全包含Low面
2026-09-28 15:28:50 +08:00
kTopContainLow,
2026-10-04 00:04:20 +08:00
// Low面完全包含Top面 或者 两面互不包含,且不相交
2026-09-28 15:28:50 +08:00
kLowContainTop,
2026-10-04 00:04:20 +08:00
// 两面存在交集
2026-09-28 15:28:50 +08:00
kIntersection,
2026-10-04 00:04:20 +08:00
// 两面不存在交集,且组成面的线段也不相交
2026-09-28 15:28:50 +08:00
kNoneIntersection,
};
2026-10-04 00:04:20 +08:00
// 处理两个面的遮挡
2026-09-28 15:28:50 +08:00
static bool CoverVisibleCal(const TObjSectionRecord &top, TObjSectionRecord &low);
2026-10-04 00:04:20 +08:00
// 处理多个没有排序面的遮挡
2026-09-28 15:28:50 +08:00
static void CoverMultipleRecordCal(std::vector<TObjSectionRecord> & arObj);
2026-10-04 00:04:20 +08:00
// 处理 TSectionFill 的遮挡问题.
// 1.如果是 图块, 则判断其是否被遮挡
// 2.如果不是图块,则对其进行遮挡处理.并将处理后的结果存入原位置
2026-09-28 15:28:50 +08:00
static void PorcessCoverForFill(std::vector<TObjSectionRecord> & arObj, std::vector<AcDbVoidPtrArray> &arFills);
};
#endif