#include "stdafx.h" #include "JSCDlg.h" #include "AecDbFlume.h" #include "CoreTools.h" #include "PipelineTools.h" IMPLEMENT_DYNAMIC(JSCDlg, CDialog) JSCDlg::JSCDlg(CWnd* pParent) : CDialog(IDD_JSC_DLG, pParent) , m_dH(100) , m_dT(5.) , m_dW(100.) , m_dWeirH(50.) , m_dWeirSp(150.) , m_bCircle(0) , m_dData(90.) , m_sDataName(_T("角度:")) , m_dHeadSp(10.) , m_dTailSp(10.) , m_sDataUnit(_T("度")) { } JSCDlg::~JSCDlg() { } void JSCDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT1, m_dH); DDV_MinMaxDouble(pDX, m_dH, 0.1, 1000000); DDX_Text(pDX, IDC_EDIT7, m_dT); DDV_MinMaxDouble(pDX, m_dT, 0.1, 1000); DDX_Text(pDX, IDC_EDIT2, m_dW); DDV_MinMaxDouble(pDX, m_dW, 0.1, 1000000); DDX_Text(pDX, IDC_EDIT4, m_dWeirH); DDV_MinMaxDouble(pDX, m_dWeirH, 0.1, 1000000); DDX_Text(pDX, IDC_EDIT3, m_dWeirSp); DDV_MinMaxDouble(pDX, m_dWeirSp, 0.1, 1000000); DDX_Radio(pDX, IDC_RADIO1, m_bCircle); DDX_Text(pDX, IDC_EDIT8, m_dData); DDV_MinMaxDouble(pDX, m_dData, 0.1, 1000000); DDX_Text(pDX, IDC_STA_DATA, m_sDataName); DDX_Text(pDX, IDC_EDIT5, m_dHeadSp); DDV_MinMaxDouble(pDX, m_dHeadSp, 0.1, 1000000); DDX_Text(pDX, IDC_EDIT6, m_dTailSp); DDV_MinMaxDouble(pDX, m_dTailSp, 0.1, 1000000); DDX_Text(pDX, IDC_STA_UNIT, m_sDataUnit); } BOOL JSCDlg::OnInitDialog() { CDialog::OnInitDialog(); GET_CACHE(JSCDlg, %f%f%f%f%f%f%f%f%d, &m_dH, &m_dT, &m_dW, &m_dWeirH, &m_dWeirSp, &m_dData , &m_dHeadSp, &m_dTailSp, &m_bCircle); m_sDataName = m_bCircle ? _T("孔径:") : _T("角度:"); m_sDataUnit = m_bCircle ?_T("毫米") : _T("度"); UpdateData(FALSE); return TRUE; } BEGIN_MESSAGE_MAP(JSCDlg, CDialog) ON_BN_CLICKED(IDOK, &JSCDlg::OnBnClickedOk) ON_BN_CLICKED(IDC_RADIO1, &JSCDlg::OnBnClickedRadio1) ON_BN_CLICKED(IDC_RADIO2, &JSCDlg::OnBnClickedRadio2) ON_BN_CLICKED(IDC_RADIO4, &JSCDlg::OnBnClickedRadio4) END_MESSAGE_MAP() void JSCDlg::OnBnClickedOk() { UpdateData(TRUE); SET_CACHE(JSCDlg, %f%f%f%f%f%f%f%f%d, m_dH, m_dT, m_dW, m_dWeirH, m_dWeirSp, m_dData , m_dHeadSp, m_dTailSp, m_bCircle); CDialog::OnOK(); } void JSCDlg::OnBnClickedRadio1() { enableUI(1); m_sDataName = _T("角度:"); m_sDataUnit = _T("度"); m_bCircle = 0; UpdateData(FALSE); } void JSCDlg::OnBnClickedRadio2() { enableUI(1); m_sDataName = _T("孔径:"); m_sDataUnit = _T("毫米"); m_bCircle = 1; UpdateData(FALSE); } void JSCDlg::OnBnClickedRadio4() { enableUI(0); m_bCircle = 2; } void JSCDlg::enableUI(int nEnable) { CWnd *pWnd = GetDlgItem(IDC_EDIT3); if (pWnd) pWnd->EnableWindow(nEnable); pWnd = GetDlgItem(IDC_EDIT4); if (pWnd) pWnd->EnableWindow(nEnable); pWnd = GetDlgItem(IDC_EDIT5); if (pWnd) pWnd->EnableWindow(nEnable); pWnd = GetDlgItem(IDC_EDIT6); if (pWnd) pWnd->EnableWindow(nEnable); pWnd = GetDlgItem(IDC_EDIT8); if (pWnd) pWnd->EnableWindow(nEnable); } void JSCDlg::Start() { CAcModuleResourceOverride myResources; JSCDlg dlg; if (dlg.DoModal() != IDOK) return; double dEl(1); ads_point adspt1, adspt2; if (acedGetPoint(NULL, _T("\n选择起点:"), adspt1) != RTNORM) return; if (acedGetPoint(adspt1, _T("\n选择终点:"), adspt2) != RTNORM) return; if (acedGetReal(_T("\n输入标高(米)<1>:"), &dEl) == RTCAN) return; AcGePoint3d ptS(asPnt3d(adspt1)), ptE(asPnt3d(adspt2)); ptS.z = ptE.z = dEl * 1000; CoreTools::UCS2WCS(ptS, ptS); CoreTools::UCS2WCS(ptE, ptE); AecDbFlume *p = new AecDbFlume(); p->SetWidth(dlg.m_dW); p->SetHeight(dlg.m_dH); p->SetThick(dlg.m_dT); p->SetStartPt(asPnt3d(adspt1)); p->SetEndPt(asPnt3d(adspt2)); p->SetBaseCurve(asPnt3d(adspt1), asPnt3d(adspt2)); if (dlg.m_bCircle == 1) { p->SetType(AecDbFlume::eCircle); p->SetWeirHC(dlg.m_dH - dlg.m_dWeirH); p->SetRadius(dlg.m_dData); p->SetHeadSpaC(dlg.m_dHeadSp); p->SetTailSpaC(dlg.m_dTailSp); p->SetSpacingC(dlg.m_dWeirSp); } else if (dlg.m_bCircle == 0) { p->SetType(AecDbFlume::eTriangle); p->SetWeirHT(dlg.m_dH - dlg.m_dWeirH); p->SetAngle(dlg.m_dData * PI / 180); p->SetHeadSpaT(dlg.m_dHeadSp); p->SetTailSpaT(dlg.m_dTailSp); p->SetSpacingT(dlg.m_dWeirSp); } else // 薄壁堰 { p->SetType(AecDbFlume::eSlab); } CoreTools::AddToModelSpace(p); }