139 lines
2.4 KiB
C++
139 lines
2.4 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();
|
|
}
|