Files
envi-code/SourceCode/Code2026/inc/AdsXRx/XCoverVisibleRelationCal.h
T

37 lines
1.1 KiB
C++
Raw Normal View History

2026-10-04 00:04:20 +08:00
#ifndef _XCoverVisibleRelationCal_H_
2026-09-28 15:28:50 +08:00
#define _XCoverVisibleRelationCal_H_
#include "SectionStructDef.h"
#include "XPoly2D.h"
class GEOAPI XCoverVisibleRelationCal
{
public:
XCoverVisibleRelationCal(){};
~XCoverVisibleRelationCal(){};
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 ObjSectionRecord &top, ObjSectionRecord &low);
2026-10-04 00:04:20 +08:00
// 处理多个没有排序面的遮挡
2026-09-28 15:28:50 +08:00
static void CoverMultipleRecordCal(std::vector<ObjSectionRecord> & arObj);
2026-10-04 00:04:20 +08:00
// 处理 XSectionFill 的遮挡问题.
// 1.如果是 图块, 则判断其是否被遮挡
// 2.如果不是图块,则对其进行遮挡处理.并将处理后的结果存入原位置
2026-09-28 15:28:50 +08:00
static void PorcessCoverForFill(std::vector<ObjSectionRecord> & arObj, std::vector<AcDbVoidPtrArray> &arFills);
};
#endif