#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(); }