75 lines
2.3 KiB
C++
75 lines
2.3 KiB
C++
#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;
|