Files
envi-code/SourceCode/Code2026/SPLDCmd/HZDLDlg.cpp
T
2026-09-28 15:28:50 +08:00

139 lines
2.3 KiB
C++

#include "stdafx.h"
#include "HZDLDlg.h"
#include "UIHistory.h"
IMPLEMENT_DYNAMIC(CHZDLDlg, CDialog)
CHZDLDlg::CHZDLDlg(CWnd* pParent /*=NULL*/)
: CDialog(CHZDLDlg::IDD, pParent)
, m_dRRatio(2.0)
, m_dW(6.0)
, m_dGrade(1.5)
, m_sRoadType(_T("沥青路面"))
, m_dEl(0.0)
, m_bDrawCen(TRUE)
{
m_bWIsValid = TRUE;
GET_CACHE(CHZDLDlg
, %f%f%f%f%d%s
, &m_dRRatio
, &m_dW
, &m_dGrade
, &m_dEl
, &m_bDrawCen
, &m_sRoadType );
}
CHZDLDlg::~CHZDLDlg()
{
}
void CHZDLDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT2, m_dRRatio);
DDX_Text(pDX, IDC_EDIT1, m_dW);
DDX_Control(pDX,IDC_EDIT1,m_wndEditW);
DDX_Text(pDX, IDC_EDIT3, m_dGrade);
DDX_CBString(pDX, IDC_COMBO1, m_sRoadType);
DDX_Text(pDX, IDC_EDIT4, m_dEl);
DDX_Check(pDX, IDC_CHECK1, m_bDrawCen);
}
BEGIN_MESSAGE_MAP(CHZDLDlg, CDialog)
ON_BN_CLICKED(IDOK, &CHZDLDlg::OnBnClickedOk)
END_MESSAGE_MAP()
void CHZDLDlg::GetPipeParam(WPipe::RoadParam& rp) const
{
memset(&rp,0,sizeof(WPipe::RoadParam));
rp.dSize[0] = m_dW;
rp.dSize[1] = 1.0;
rp.dSize[2] = 1.0;
rp.dGrade = m_dGrade;
rp.dRRatio = m_dRRatio;
rp.dThick = 1.0;
rp.m_dEl = m_dEl;
_tcscpy(rp.szSpec,m_sRoadType);
rp.m_nAlign = 1;
rp.m_vtNrom.set(0,0,1);
rp.nDrawCen = m_bDrawCen;
struct resbuf rb;
acedGetVar(_T("INSUNITS"), &rb);
if ( rb.resval.rint == AcDb::kUnitsMillimeters )
{
rp.dSize[0] *= 1000.0;
rp.m_dEl *= 1000.0;
}
}
void CHZDLDlg::SetPipeParam(WPipe::RoadParam& rp)
{
m_dW = rp.dSize[0];
m_dRRatio = rp.dRRatio;
m_dGrade = rp.dGrade;
m_dEl = rp.m_dEl;
m_sRoadType = rp.szSpec,m_sRoadType;
m_bDrawCen = rp.nDrawCen;
struct resbuf rb;
acedGetVar(_T("INSUNITS"), &rb);
if ( rb.resval.rint == AcDb::kUnitsMillimeters )
{
m_dW *= 1000.0;
m_dEl *= 1000.0;
}
}
BOOL CHZDLDlg::OnInitDialog()
{
CDialog::OnInitDialog();
if (!m_bWIsValid)
{
m_wndEditW.SetReadOnly(TRUE);
}
UpdateData(FALSE);
return TRUE;
}
void CHZDLDlg::OnBnClickedOk()
{
UpdateData(TRUE);
if (m_dW < 1.0)
{
AfxMessageBox(_T("道路宽度太窄!至少大于1米!"));
return;
}
if (m_dRRatio < 1.0)
{
AfxMessageBox(_T("道路曲率半径太小!至少大于1.0!"));
return;
}
if (m_dGrade < 1.0)
{
AfxMessageBox(_T("道路散水坡度太小!至少大于1.0!"));
return;
}
SET_CACHE(CHZDLDlg
, %f%f%f%f%d%s
, m_dRRatio
, m_dW
, m_dGrade
, m_dEl
, m_bDrawCen
, m_sRoadType);
OnOK();
}