282 lines
4.9 KiB
C++
282 lines
4.9 KiB
C++
#include "stdafx.h"
|
|
#include "GradientEleCalcDlg.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
|
|
extern BOOL IsInSamePipeSys(SSearchPipeList *pListAll, Entity &ent);
|
|
extern double GetPipeEle(Entity &ent, BOOL bUp);
|
|
|
|
double CGradientEleCalcDlg::m_dWndEdtGrad = 0.003;
|
|
CGradientEleCalcDlg::CGradientEleCalcDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CGradientEleCalcDlg::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CGradientEleCalcDlg)
|
|
m_bWndChkUpEle = FALSE;
|
|
m_bWndChkLowEle = FALSE;
|
|
m_bWndChkGradient = TRUE;
|
|
m_dWndEdtLowEle = 0.0;
|
|
m_dWndEdtUpEle = 0.0;
|
|
//}}AFX_DATA_INIT
|
|
m_lstPipeSys = NULL;
|
|
}
|
|
|
|
|
|
void CGradientEleCalcDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CGradientEleCalcDlg)
|
|
DDX_Check(pDX, IDC_CHECK_UPELE, m_bWndChkUpEle);
|
|
DDX_Check(pDX, IDC_CHECK_LOWELE, m_bWndChkLowEle);
|
|
DDX_Check(pDX, IDC_CHECK_GRADIENT, m_bWndChkGradient);
|
|
DDX_Text(pDX, IDC_EDIT_GRADIENT, m_dWndEdtGrad);
|
|
DDX_Text(pDX, IDC_EDIT_LOWELEVATION, m_dWndEdtLowEle);
|
|
DDX_Text(pDX, IDC_EDIT_UPELEVATION, m_dWndEdtUpEle);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CGradientEleCalcDlg, CDialog)
|
|
//{{AFX_MSG_MAP(CGradientEleCalcDlg)
|
|
ON_BN_CLICKED(IDC_CHECK_UPELE, OnCheckUpEle)
|
|
ON_BN_CLICKED(IDC_CHECK_LOWELE, OnCheckLowEle)
|
|
ON_BN_CLICKED(IDC_CHECK_GRADIENT, OnCheckGradient)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
void CGradientEleCalcDlg::SetUpElevation(BOOL bVal)
|
|
{
|
|
m_bUpElevation = bVal;
|
|
}
|
|
|
|
BOOL CGradientEleCalcDlg::GetUpElevation()
|
|
{
|
|
return m_bUpElevation;
|
|
}
|
|
|
|
BOOL CGradientEleCalcDlg::GetChkUpEle()
|
|
{
|
|
return m_bWndChkUpEle;
|
|
}
|
|
|
|
BOOL CGradientEleCalcDlg::GetChkLowEle()
|
|
{
|
|
return m_bWndChkLowEle;
|
|
}
|
|
|
|
double CGradientEleCalcDlg::GetGradient()
|
|
{
|
|
return m_dGradient;
|
|
}
|
|
|
|
void CGradientEleCalcDlg::SetGradient(double dGrad)
|
|
{
|
|
m_dWndEdtGrad = dGrad;
|
|
m_dGradient = dGrad;
|
|
}
|
|
|
|
double CGradientEleCalcDlg::GetLowEle()
|
|
{
|
|
return m_dLowEle;
|
|
}
|
|
|
|
void CGradientEleCalcDlg::SetLowEle(double dEle)
|
|
{
|
|
m_dWndEdtLowEle = dEle;
|
|
m_dLowEle = dEle;
|
|
}
|
|
|
|
double CGradientEleCalcDlg::GetUpEle()
|
|
{
|
|
return m_dUpEle;
|
|
}
|
|
|
|
void CGradientEleCalcDlg::SetUpEle(double dEle)
|
|
{
|
|
m_dWndEdtUpEle = dEle;
|
|
m_dUpEle = dEle;
|
|
}
|
|
|
|
void CGradientEleCalcDlg::GetEnt(Entity& ent)
|
|
{
|
|
ent = m_ent;
|
|
}
|
|
|
|
void CGradientEleCalcDlg::SetPipeSys(SSearchPipeList *pLst)
|
|
{
|
|
m_lstPipeSys = pLst;
|
|
}
|
|
|
|
BOOL CGradientEleCalcDlg::GetChkGradient()
|
|
{
|
|
return m_bWndChkGradient;
|
|
}
|
|
|
|
BOOL CGradientEleCalcDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
if (m_bUpElevation)
|
|
{
|
|
CWnd *pWnd = GetDlgItem(IDC_CHECK_UPELE);
|
|
if (pWnd != NULL)
|
|
{
|
|
pWnd->ShowWindow(SW_HIDE);
|
|
}
|
|
OnCheckLowEle();
|
|
}
|
|
else
|
|
{
|
|
CWnd *pWnd = GetDlgItem(IDC_CHECK_LOWELE);
|
|
if (pWnd != NULL)
|
|
{
|
|
pWnd->ShowWindow(SW_HIDE);
|
|
}
|
|
OnCheckUpEle();
|
|
}
|
|
|
|
OnCheckGradient();
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CGradientEleCalcDlg::OnCheckUpEle()
|
|
{
|
|
UpdateData(TRUE);
|
|
CWnd *pWnd1 = GetDlgItem(IDC_CHECK_GRADIENT);
|
|
CWnd *pWnd2 = GetDlgItem(IDC_EDIT_GRADIENT);
|
|
CWnd *pWnd3 = GetDlgItem(IDC_EDIT_UPELEVATION);
|
|
if (m_bWndChkUpEle)
|
|
{
|
|
if (pWnd1 != NULL)
|
|
{
|
|
pWnd1->EnableWindow(FALSE);
|
|
}
|
|
|
|
if (pWnd2 != NULL)
|
|
{
|
|
pWnd2->EnableWindow(FALSE);
|
|
}
|
|
|
|
if (pWnd3 != NULL)
|
|
{
|
|
pWnd3->EnableWindow(TRUE);
|
|
}
|
|
|
|
HideDialog(this, TRUE);
|
|
RBList rbMask(RTDXF0, _T("ATS_PIPE,ATS_PIPECANAL"), NULL);
|
|
while (SelectEntity(_T("\n请选择上游端点位置<退出>"), m_ent, rbMask) == RTNORM)
|
|
{
|
|
if (!IsInSamePipeSys(m_lstPipeSys, m_ent))
|
|
{
|
|
adsout << _T("\n上下游端点不在同一管道系统或上游端点不是末端管线!");
|
|
continue;
|
|
}
|
|
break;
|
|
}
|
|
|
|
if (m_ent.Is(_T("ATS_PIPE")))
|
|
{
|
|
m_dWndEdtUpEle = GetPipeEle(m_ent, TRUE);
|
|
}
|
|
HideDialog(this, FALSE);
|
|
UpdateData(FALSE);
|
|
}
|
|
else
|
|
{
|
|
if (pWnd1 != NULL)
|
|
{
|
|
pWnd1->EnableWindow(TRUE);
|
|
}
|
|
|
|
if (pWnd2 != NULL)
|
|
{
|
|
pWnd2->EnableWindow(TRUE);
|
|
}
|
|
|
|
if (pWnd3 != NULL)
|
|
{
|
|
pWnd3->EnableWindow(FALSE);
|
|
}
|
|
|
|
OnCheckGradient();
|
|
}
|
|
}
|
|
|
|
void CGradientEleCalcDlg::OnCheckLowEle()
|
|
{
|
|
UpdateData(TRUE);
|
|
CWnd *pWnd1 = GetDlgItem(IDC_CHECK_GRADIENT);
|
|
CWnd *pWnd2 = GetDlgItem(IDC_EDIT_GRADIENT);
|
|
CWnd *pWnd3 = GetDlgItem(IDC_EDIT_LOWELEVATION);
|
|
if (m_bWndChkLowEle)
|
|
{
|
|
if (pWnd1 != NULL)
|
|
{
|
|
pWnd1->EnableWindow(FALSE);
|
|
}
|
|
|
|
if (pWnd2 != NULL)
|
|
{
|
|
pWnd2->EnableWindow(FALSE);
|
|
}
|
|
|
|
if (pWnd3 != NULL)
|
|
{
|
|
pWnd3->EnableWindow(TRUE);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (pWnd1 != NULL)
|
|
{
|
|
pWnd1->EnableWindow(TRUE);
|
|
}
|
|
|
|
if (pWnd2 != NULL)
|
|
{
|
|
pWnd2->EnableWindow(TRUE);
|
|
}
|
|
|
|
if (pWnd3 != NULL)
|
|
{
|
|
pWnd3->EnableWindow(FALSE);
|
|
}
|
|
|
|
OnCheckGradient();
|
|
}
|
|
}
|
|
|
|
void CGradientEleCalcDlg::OnCheckGradient()
|
|
{
|
|
UpdateData(TRUE);
|
|
CWnd *pWnd = GetDlgItem(IDC_EDIT_GRADIENT);
|
|
if (m_bWndChkGradient)
|
|
{
|
|
if (pWnd != NULL)
|
|
{
|
|
pWnd->EnableWindow(FALSE);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (pWnd != NULL)
|
|
{
|
|
pWnd->EnableWindow(TRUE);
|
|
}
|
|
}
|
|
}
|
|
|
|
void CGradientEleCalcDlg::OnOK()
|
|
{
|
|
UpdateData(TRUE);
|
|
m_dGradient = m_dWndEdtGrad;
|
|
m_dUpEle = m_dWndEdtUpEle;
|
|
m_dLowEle = m_dWndEdtLowEle;
|
|
CDialog::OnOK();
|
|
}
|