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

74 lines
2.2 KiB
C++
Raw Normal View History

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