354 lines
5.5 KiB
C++
354 lines
5.5 KiB
C++
#pragma once
|
|
|
|
#include "resource.h"
|
|
#include "DataContainer.h"
|
|
#include "DrawSectionSymbol.h"
|
|
#include "WDGrid.h"
|
|
#include "GsPreviewCtrl.h"
|
|
|
|
class CHorizontalSectionDlg;
|
|
class CRoadGrid : public WDGrid
|
|
{
|
|
|
|
public:
|
|
|
|
CRoadGrid();
|
|
|
|
~CRoadGrid();
|
|
|
|
void SetDlg(CHorizontalSectionDlg *pDlg)
|
|
{
|
|
m_pWnddlg = pDlg;
|
|
}
|
|
|
|
protected:
|
|
|
|
virtual bool OnModified(WDGridCell&cell, CString &text);
|
|
|
|
private:
|
|
|
|
CHorizontalSectionDlg *m_pWnddlg;
|
|
};
|
|
|
|
|
|
class CHorizontalSectionDlg : public CDialog
|
|
{
|
|
|
|
public:
|
|
|
|
CHorizontalSectionDlg(CWnd* pParent = NULL);
|
|
|
|
~CHorizontalSectionDlg();
|
|
|
|
double GetScaleX()
|
|
{
|
|
return m_dScaleX;
|
|
}
|
|
|
|
void SetScaleX(double dVal)
|
|
{
|
|
m_dScaleX = dVal;
|
|
}
|
|
|
|
double GetScaleY()
|
|
{
|
|
return m_dScaleY;
|
|
}
|
|
|
|
void SetScaleY(double dVal)
|
|
{
|
|
m_dScaleY = dVal;
|
|
}
|
|
|
|
double GetRoadEle()
|
|
{
|
|
return m_dRoadEle;
|
|
}
|
|
|
|
void SetRoadEle(double dVal)
|
|
{
|
|
m_dRoadEle = dVal;
|
|
}
|
|
|
|
double GetHeight1()
|
|
{
|
|
return m_dHeight1;
|
|
}
|
|
|
|
void SetHeight1(double dVal)
|
|
{
|
|
m_dHeight1 = dVal;
|
|
}
|
|
|
|
double GetHeight2()
|
|
{
|
|
return m_dHeight2;
|
|
}
|
|
|
|
void SetHeight2(double dVal)
|
|
{
|
|
m_dHeight2 = dVal;
|
|
}
|
|
|
|
double GetGreenWidth1()
|
|
{
|
|
return m_dGreenWidth1;
|
|
}
|
|
|
|
void SetGreenWidth1(double dVal)
|
|
{
|
|
m_dGreenWidth1 = dVal;
|
|
}
|
|
|
|
double GetGreenWidth2()
|
|
{
|
|
return m_dGreenWidth2;
|
|
}
|
|
|
|
void SetGreenWidth2(double dVal)
|
|
{
|
|
m_dGreenWidth2 = dVal;
|
|
}
|
|
|
|
double GetGreenGrad1()
|
|
{
|
|
return m_dGreenGrad1;
|
|
}
|
|
|
|
void SetGreenGrad1(double dVal)
|
|
{
|
|
m_dGreenGrad1 = dVal;
|
|
}
|
|
|
|
double GetGreenGrad2()
|
|
{
|
|
return m_dGreenGrad2;
|
|
}
|
|
|
|
void SetGreenGrad2(double dVal)
|
|
{
|
|
m_dGreenGrad2 = dVal;
|
|
}
|
|
|
|
double GetCarWidth()
|
|
{
|
|
return m_dCarWidth;
|
|
}
|
|
|
|
void SetCarWidth(double dVal)
|
|
{
|
|
m_dCarWidth = dVal;
|
|
}
|
|
|
|
double GetCarGrad()
|
|
{
|
|
return m_dCarGrad;
|
|
}
|
|
|
|
void SetCarGrad(double dVal)
|
|
{
|
|
m_dCarGrad = dVal;
|
|
}
|
|
|
|
double GetNoCarWidth()
|
|
{
|
|
return m_dNoCarWidth;
|
|
}
|
|
|
|
void SetNoCarWidth(double dVal)
|
|
{
|
|
m_dNoCarWidth = dVal;
|
|
}
|
|
|
|
double GetNoCarGrad()
|
|
{
|
|
return m_dNoCarGrad;
|
|
}
|
|
|
|
void SetNoCarGrad(double dVal)
|
|
{
|
|
m_dNoCarGrad = dVal;
|
|
}
|
|
|
|
double GetMenWidth()
|
|
{
|
|
return m_dMenWidth;
|
|
}
|
|
|
|
void SetMenWidth(double dVal)
|
|
{
|
|
m_dMenWidth = dVal;
|
|
}
|
|
|
|
double GetMenGrad()
|
|
{
|
|
return m_dMenGrad;
|
|
}
|
|
|
|
void SetMenGrad(double dVal)
|
|
{
|
|
m_dMenGrad = dVal;
|
|
}
|
|
|
|
int GetRoadType()
|
|
{
|
|
return m_nRoadType;
|
|
}
|
|
void SetRoadType(int nVal)
|
|
{
|
|
m_nRoadType = nVal;
|
|
}
|
|
|
|
CString GetNumber()
|
|
{
|
|
return m_strNumber;
|
|
}
|
|
|
|
void SetNumber(const CString &strNumber)
|
|
{
|
|
m_strNumber = strNumber;
|
|
}
|
|
|
|
AcGePoint3d GetPtS()
|
|
{
|
|
return m_ptS;
|
|
}
|
|
|
|
void SetPtS(const AcGePoint3d &ptS)
|
|
{
|
|
m_ptS = ptS;
|
|
}
|
|
|
|
AcGePoint3d GetPtE()
|
|
{
|
|
return m_ptE;
|
|
}
|
|
|
|
void SetPtE(const AcGePoint3d &ptE)
|
|
{
|
|
m_ptE = ptE;
|
|
}
|
|
|
|
AcGeVector3d GetVt()
|
|
{
|
|
return m_vt;
|
|
}
|
|
|
|
void SetVt(const AcGeVector3d &vt)
|
|
{
|
|
m_vt = vt;
|
|
}
|
|
|
|
AcDbObjectId GetRoadMidLineId()
|
|
{
|
|
return m_idMidLine;
|
|
}
|
|
|
|
void SetRoadMidLineId(const AcDbObjectId &idLine)
|
|
{
|
|
m_idMidLine = idLine;
|
|
}
|
|
|
|
const std::vector<AcDbObjectId>& GetPipesId()
|
|
{
|
|
return m_vecPipeId;
|
|
}
|
|
|
|
void SetPipesId(std::vector<AcDbObjectId> &vecId)
|
|
{
|
|
m_vecPipeId.clear();
|
|
std::vector<AcDbObjectId>::iterator it;
|
|
for (it = vecId.begin(); it != vecId.end(); it++)
|
|
{
|
|
m_vecPipeId.push_back(*it);
|
|
}
|
|
}
|
|
|
|
void UpdateInfo();
|
|
|
|
public:
|
|
|
|
//{{AFX_DATA(CHorizontalSectionDlg)
|
|
enum { IDD = IDD_HORIZONTALSECTION };
|
|
CComboBox m_wndCmbType;
|
|
CRoadGrid m_wndLstRoadData;
|
|
BOOL m_bWndChkGrad;
|
|
//}}AFX_DATA
|
|
|
|
//{{AFX_VIRTUAL(CHorizontalSectionDlg)
|
|
protected:
|
|
|
|
virtual void DoDataExchange(CDataExchange* pDX);
|
|
//}}AFX_VIRTUAL
|
|
|
|
protected:
|
|
|
|
//{{AFX_MSG(CHorizontalSectionDlg)
|
|
virtual BOOL OnInitDialog();
|
|
virtual void OnOK();
|
|
afx_msg void OnCheckGrad();
|
|
afx_msg void OnSelchangeCmbType();
|
|
afx_msg void OnPaint();
|
|
afx_msg void OnKillfocusEdt();
|
|
afx_msg void OnChangeEdtHeight1();
|
|
afx_msg void OnChangeEdtHeight2();
|
|
afx_msg void OnSetfocusEdtHeight1();
|
|
afx_msg void OnSetfocusEdtHeight2();
|
|
afx_msg void OnStaticPreview();
|
|
//}}AFX_MSG
|
|
DECLARE_MESSAGE_MAP()
|
|
|
|
CGsPreviewCtrl m_PreviewCtrl;
|
|
AcDbDatabase *m_pPreviewDb;
|
|
|
|
private:
|
|
|
|
void initLstData();
|
|
|
|
void ReadOrWriteData(bool bVal);
|
|
//图形预览
|
|
void UpdateImage();
|
|
|
|
void GetRecordExtents(AcDbBlockTableRecord *pBlockTabRecord, AcDbExtents &extents);
|
|
|
|
void DrawPreviewEntity(AcDbBlockTableRecord *&pBlockTableRecord, AcDbDatabase* pDb);
|
|
|
|
void UpdateXDataMap();
|
|
|
|
bool InitDataContainer();
|
|
|
|
void GetMaxEleByPipe(double &dMax);
|
|
|
|
private:
|
|
|
|
double m_dScaleX; // 横向比例
|
|
double m_dScaleY; // 纵向比例
|
|
double m_dRoadEle; // 地面标高
|
|
double m_dHeight1; // 分隔带道牙高度
|
|
double m_dHeight2; // 人行道道牙高度
|
|
double m_dGreenWidth1; // 绿化带宽度(靠近道路中心)
|
|
double m_dGreenGrad1; // 绿化带坡度(靠近道路中心)
|
|
double m_dGreenWidth2; // 绿化带宽度(远离道路中心)
|
|
double m_dGreenGrad2; // 绿化带坡度(远离道路中心)
|
|
double m_dCarWidth; // 车行道宽度
|
|
double m_dCarGrad; // 车行道坡度
|
|
double m_dNoCarWidth; // 非机动车道宽度
|
|
double m_dNoCarGrad; // 非机动车道坡度
|
|
double m_dMenWidth; // 人行道宽度
|
|
double m_dMenGrad; // 人行道坡度
|
|
int m_nRoadType; // 板块类型
|
|
CString m_strNumber; // 横断面编号
|
|
AcGePoint3d m_ptS; // 剖切起点
|
|
AcGePoint3d m_ptE; // 剖切终点
|
|
AcGeVector3d m_vt; // 剖切方向
|
|
CDataContainer m_mapData; // 道路信息
|
|
CDrawSectionSymbol *m_pSecDraw; // 绘制横断面
|
|
AcDbObjectId m_idMidLine; // 道路中心线ID
|
|
AcDbObjectId m_IdText;
|
|
CString m_strHeight1;
|
|
CString m_strHeight2;
|
|
std::vector<AcDbObjectId> m_vecPipeId;
|
|
|
|
};
|
|
|
|
|