Files
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

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;
};