#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 AcAryLineEntEdgeAdapterPtr; typedef AcArray AcAryArcEntEdgeAdapterPtr; typedef AcArray ArAryEntEdgeAdapterPointer;