178 lines
4.1 KiB
C++
178 lines
4.1 KiB
C++
#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);
|
||
}
|