// Copyright (C), 1998-2007, Beijing Tangent Engineering Software Co. Ltd. // = FileName: TDbRoadEntity.h // = Version: 8.5 // = Author: lgh // = Date: 2010-9-10 9:32:48 // = Description: 道路实体,仅仅用来做jig的绘制,其他功能没有实现 // = Maintainers: #pragma once class CDrawRoadDlg; class CLineRoad; class CArcRoad; // 注意需要实现默认的构造函数 class TDbRoadEntity : public TDbEntity { DECLARE_TENTBASE(); public: ACRX_DECLARE_MEMBERS(TDbRoadEntity); TDbRoadEntity(){}; TDbRoadEntity(double dHalfWid) : m_dHalfWid(dHalfWid), TDbEntity(){}; virtual ~TDbRoadEntity(void){}; public: virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler*); virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler*) const; virtual Acad::ErrorStatus ExplodeOrDraw2d(XExplodeDraw &dc) const{return Acad::eOk;} public: virtual void SetHalfWid(double dHalfWid); double m_dHalfWid; }; class TDbLineRoadEntity : public TDbRoadEntity { DECLARE_TENTBASE(); public: ACRX_DECLARE_MEMBERS(TDbLineRoadEntity); TDbLineRoadEntity(){} TDbLineRoadEntity(double dHalfWid, const AcGeLineSeg2d &lineSeg) : TDbRoadEntity(dHalfWid), m_ptStart(lineSeg.startPoint()), m_ptEnd(lineSeg.endPoint()){} virtual ~TDbLineRoadEntity(void){} public: virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler*); virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler*) const; virtual Acad::ErrorStatus ExplodeOrDraw2d(XExplodeDraw &dc) const; public: CLineRoad* CreateLineRoad(CDrawRoadDlg *pDlg) const ; public: void SetMidLine(const AcGeLineSeg2d &midLine) ; void SetLineRoad(const AcGePoint2d &ptStart, const AcGePoint2d &ptEnd, CDrawRoadDlg *pDlg); AcGePoint2d GetStartPt() {return m_ptStart; } AcGePoint2d GetEndPt() {return m_ptEnd; } private: AcGePoint2d m_ptStart, m_ptEnd; }; class TDbArcRoadEntity : public TDbRoadEntity { DECLARE_TENTBASE(); public: ACRX_DECLARE_MEMBERS(TDbArcRoadEntity); TDbArcRoadEntity(){} TDbArcRoadEntity(double dHalfWid, const AcGePoint2d &ptFir, const AcGePoint2d &ptThir, const AcGePoint2d &ptEnd) : TDbRoadEntity(dHalfWid), m_ptFirst(ptFir), m_ptThird(ptThir), m_ptEnd(ptEnd) {} virtual ~TDbArcRoadEntity(void){} public: virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler*); virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler*) const; virtual Acad::ErrorStatus ExplodeOrDraw2d(XExplodeDraw &dc) const; public: CArcRoad* CreateArcRoad(CDrawRoadDlg *pDlg); void SetMidArc(const AcGePoint2d &ptFir, const AcGePoint2d &ptThir, const AcGePoint2d &ptEnd) { m_ptFirst = ptFir; m_ptThird = ptThir; m_ptEnd = ptEnd; } void SetArcRoad(const AcGePoint2d &ptFir, const AcGePoint2d &ptThir, const AcGePoint2d &ptEnd, CDrawRoadDlg *pDlg); AcGePoint2d GetFirstPt() {return m_ptFirst; } AcGePoint2d GetThirdPt() {return m_ptThird; } AcGePoint2d GetEndPt() {return m_ptEnd; } private: AcGePoint2d m_ptFirst; AcGePoint2d m_ptThird; AcGePoint2d m_ptEnd; };