96 lines
2.9 KiB
C++
96 lines
2.9 KiB
C++
// 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;
|
|
}; |