#pragma once #include "roaddatacenternew.h" #include "RoadEdgeCreater.h" #include "TDbRoadEntity.h" #include "LandScapeStyle.h" //创建景观路及选择实体 class CLandScapeDataCenterNew : public CRoadDataCenterNew { public: CLandScapeDataCenterNew(void); ~CLandScapeDataCenterNew(void); // 添加道路,直线型,或者弧线型。 void AddLineRoad(const CLineRoad &lineRoad); void AddArcRoad(const CArcRoad &arcRoad); void RoolBack(); protected: // 改变选择实体的方式 static void SelectEntInCAD(const AcGePoint2d &ptLeftDown, const AcGePoint2d &ptRightUp, AcAryLineEntEdgeAdapterPtr &lineEdges, AcAryArcEntEdgeAdapterPtr &arcEdges, AcAryLineEntEdgeAdapterPtr &lineMids, AcAryArcEntEdgeAdapterPtr &arcMids); //处理截取的道路边线 static void CreateRoadEdgeStruct(ROAD_EDGE_STRUCT &res); AcDbObjectIdArray m_arrGroupId; }; class CLineLandScapeEdgeCreater : public CLineRoadEdgeCreater { public: CLineLandScapeEdgeCreater (const CRoad *pRoad, AcAryInterStructPointer &leftInterStruct, AcAryInterStructPointer &rightInterStruct, AcAryInterStructPointer &leftInterStructin, AcAryInterStructPointer &rightInterStructin, AcAryInterStructPointer &leftInterStructMid, AcAryInterStructPointer &rightInterStructMid, CFilterMode &leftFilterMode, CFilterMode &rightFiltMode); ~CLineLandScapeEdgeCreater(){} protected: void DrawRoadEdge();// 绘制道路时添加图块及设置边线是否显示 }; class CArcLandScapeEdgeCreater : public CArcRoadEdgeCreater { public: CArcLandScapeEdgeCreater (const CRoad *pRoad, AcAryInterStructPointer &leftInterStruct, AcAryInterStructPointer &rightInterStruct, AcAryInterStructPointer &leftInterStructin, AcAryInterStructPointer &rightInterStructin, AcAryInterStructPointer &leftInterStructMid, AcAryInterStructPointer &rightInterStructMid, CFilterMode &leftFilterMode, CFilterMode &rightFiltMode); ~CArcLandScapeEdgeCreater(){} protected: void DrawRoadEdge(); // 绘制道路时添加图块及设置边线是否显示 }; //初始化道路参数 class TDbArcLandScapeEntity : public TDbArcRoadEntity { DECLARE_TENTBASE(); public: ACRX_DECLARE_MEMBERS(TDbArcLandScapeEntity); TDbArcLandScapeEntity(){} virtual ~TDbArcLandScapeEntity(void){} void SetHalfWid(double dHalfWid); public: CArcRoad* CreateArcRoad(CLandScapeStyle *pLandStyle); void SetArcRoad(const AcGePoint2d &ptFir, const AcGePoint2d &ptThir, const AcGePoint2d &ptEnd, CLandScapeStyle *pLandStyle); }; class TDbLineLandScapeEntity : public TDbLineRoadEntity { DECLARE_TENTBASE(); public: ACRX_DECLARE_MEMBERS(TDbLineLandScapeEntity); TDbLineLandScapeEntity(){} virtual ~TDbLineLandScapeEntity(void){} void SetHalfWid(double dHalfWid); public: CLineRoad* CreateLineRoad(CLandScapeStyle *pLandStyle); void SetLineRoad(const AcGePoint2d &ptStart, const AcGePoint2d &ptEnd, CLandScapeStyle *pLandStyle); };