Files
envi-code/SourceCode/Code2026/tg_shs/shs_siteplan/CADEntEdgeAdapter.h
T

74 lines
2.3 KiB
C++
Raw Normal View History

2026-10-04 00:04:20 +08:00
#pragma once
2026-09-28 15:28:50 +08:00
#include "commonRoad.h"
#include "CADEnt.h"
class CInterStruct;
class CCADEntEdgeAdapter
{
public:
CCADEntEdgeAdapter() : m_bReCreate(FALSE) {}
~CCADEntEdgeAdapter(void){};
2026-10-04 00:04:20 +08:00
// 清除旧的数据,并且添加到回退数组中。
2026-09-28 15:28:50 +08:00
virtual void RoolBackErase() = 0;
void SetReCreateFlag(){m_bReCreate = TRUE;}
BOOL NeedReCreate() const {return m_bReCreate;}
void ReCreate();
2026-10-04 00:04:20 +08:00
// 添加CCADEnt所对应的拆分之后的数据。有序。
2026-09-28 15:28:50 +08:00
void AddInterStruct(CInterStruct *pInter);
AcAryInterStructPointer& GetInterStructPointer() {return m_arInterStruct;}
protected:
BOOL m_bReCreate;
2026-10-04 00:04:20 +08:00
// 该Ent所拆分处的子interStruct部分
2026-09-28 15:28:50 +08:00
AcAryInterStructPointer m_arInterStruct;
};
class CLineCADEntEdgeAdapter : public CCADEntEdgeAdapter
{
public:
CLineCADEntEdgeAdapter() : m_lineEnt(), CCADEntEdgeAdapter() {}
CLineCADEntEdgeAdapter(AcDbObjectId &id) : m_lineEnt(id), CCADEntEdgeAdapter(){}
~CLineCADEntEdgeAdapter() {}
2026-10-04 00:04:20 +08:00
//设置边线所在的组
2026-09-28 15:28:50 +08:00
void SetGroupId(AcDbObjectId &GroupId){m_GroupId = GroupId;}
2026-10-04 00:04:20 +08:00
//设置边线是否显示
2026-09-28 15:28:50 +08:00
void SetIsVisible(AcDb::Visibility IsVisible){m_bIsVisible = IsVisible;}
2026-10-04 00:04:20 +08:00
//生成拆分的线段
2026-09-28 15:28:50 +08:00
void ReCreateForLandScape();
virtual void RoolBackErase();
AcGeLineSeg2d Line() const{return m_lineEnt.Line();}
private:
CLineCADEnt m_lineEnt;
2026-10-04 00:04:20 +08:00
AcDbObjectId m_GroupId; //线所在组
AcDb::Visibility m_bIsVisible;//是否显示边线
2026-09-28 15:28:50 +08:00
};
class CArcCADEntEdgeAdapter : public CCADEntEdgeAdapter
{
public:
CArcCADEntEdgeAdapter() : m_arcEnt(), CCADEntEdgeAdapter() {}
CArcCADEntEdgeAdapter(AcDbObjectId &id) : m_arcEnt(id), CCADEntEdgeAdapter(){}
~CArcCADEntEdgeAdapter() {}
2026-10-04 00:04:20 +08:00
//设置边线所在的组
2026-09-28 15:28:50 +08:00
void SetGroupId(AcDbObjectId &GroupId){m_GroupId = GroupId;}
2026-10-04 00:04:20 +08:00
//设置边线是否显示
2026-09-28 15:28:50 +08:00
void SetIsVisible(AcDb::Visibility IsVisible){m_bIsVisible = IsVisible;}
2026-10-04 00:04:20 +08:00
//生成拆分的线段
2026-09-28 15:28:50 +08:00
void ReCreateForLandScape();
virtual void RoolBackErase() ;
AcGeCircArc2d Arc() const{return m_arcEnt.Arc();}
private:
CArcCADEnt m_arcEnt;
2026-10-04 00:04:20 +08:00
AcDbObjectId m_GroupId; //线所在组
AcDb::Visibility m_bIsVisible;//是否显示边线
2026-09-28 15:28:50 +08:00
};
typedef AcArray<CLineCADEntEdgeAdapter*> AcAryLineEntEdgeAdapterPtr;
typedef AcArray<CArcCADEntEdgeAdapter*> AcAryArcEntEdgeAdapterPtr;
typedef AcArray<CCADEntEdgeAdapter*> ArAryEntEdgeAdapterPointer;