Files
envi-code/SourceCode/Code2026/PipelineCmd/ChangElDlg.cpp
T
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

201 lines
4.2 KiB
C++

#include "stdafx.h"
#include "ChangElDlg.h"
#include "ReducerDlg.h"
IMPLEMENT_DYNAMIC(CChangElDlg, CDialog)
CChangElDlg::CChangElDlg(CWnd* pParent /*=NULL*/)
: CDialog(CChangElDlg::IDD, pParent)
, m_dCurEl(0)
, m_dNewEl(0)
, m_dRedElPos(0)
, m_bCheckRec(FALSE)
, m_bZPipe2DNoDraw(TRUE)
{
m_pDb = NULL;
memset(&m_pipeParam,0,sizeof(WPipe::PipeParam));
}
CChangElDlg::~CChangElDlg()
{
}
void CChangElDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDITCUREL, m_dCurEl);
DDX_Text(pDX, IDC_EDITNEWEL, m_dNewEl);
DDX_Text(pDX, IDC_EDITELPOS, m_dRedElPos);
DDX_Check(pDX, IDC_CHECKREC, m_bCheckRec);
DDX_Check(pDX, IDC_CHECK1, m_bZPipe2DNoDraw);
}
BEGIN_MESSAGE_MAP(CChangElDlg, CDialog)
ON_BN_CLICKED(IDOK, &CChangElDlg::OnBnClickedOk)
ON_BN_CLICKED(IDC_CHECKREC, &CChangElDlg::OnBnClickedCheckrec)
ON_STN_CLICKED(IDC_STATIC_PREVIEW, &CChangElDlg::OnStnClickedStaticPreview)
END_MESSAGE_MAP()
void CChangElDlg::SetCurParam(CUIISQLiteServer* pDb,WPipe::PipeParam* pParam)
{
m_pDb = pDb;
memcpy(&m_pipeParam,pParam,sizeof(WPipe::PipeParam));
memcpy(&m_pipeParamRec,pParam,sizeof(WPipe::PipeParam));
}
BOOL CChangElDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_dCurEl = m_pipeParam.m_dEl;
m_dNewEl = (int)(m_dCurEl + 2000);
m_dRedElPos = m_dCurEl + 1000;
CheckRadioButton(IDC_RADIOSTA,IDC_RADIOEND,IDC_RADIOSTA);
UpdateData(FALSE);
return TRUE;
}
void CChangElDlg::OnBnClickedOk()
{
UpdateData();
//标高的变化放得下一个弯头
/*double dELX = fabs(m_dNewEl - m_dCurEl);
double dMin = m_pipeParam.m_dRRatio * m_pipeParam.m_dDN;
if (dELX - dMin < 1.e-6)
{
AfxMessageBox(_T("标高的变化太小,无法创建立管,无法用弯头连接!"));
return;
}*/
if (m_bCheckRec) //判断是否加变径
{
if (!ReducerIsFitIn())
{
return;
}
}
//折算到变径开始点位置
if (m_bCheckRec)
{
ReducerIsFitIn(TRUE);
}
m_pipeParam.m_bZPipe2DDraw = !m_bZPipe2DNoDraw;
m_pipeParamRec.m_bZPipe2DDraw = !m_bZPipe2DNoDraw;
EndDialog(IDOK);
}
BOOL CChangElDlg::ReducerIsFitIn(BOOL bSettoStartPos)
{
int nDir = 1.0;
if (m_dNewEl - m_dCurEl < 1.e-3)
nDir = -1.0;
//变径折算到中点标高上
double dEL = 0.0;
int nRes = GetCheckedRadioButton(IDC_RADIOSTA,IDC_RADIOEND) - IDC_RADIOSTA;
switch(nRes)
{
case 0://sta
{
dEL = m_dRedElPos + nDir * m_pipeParamRec.m_dInterfaceL3;
if ( ( dEL - __min(m_dCurEl,m_dNewEl) ) > 1.e-6 &&
( dEL - __max(m_dCurEl,m_dNewEl) ) < 1.e-6 ) //不在CUREL , NEWEL 之间
{
}
else
{
AfxMessageBox(_T("在指定的标高位置插入变径超出了整体设置的新标高!"));
return FALSE;
}
if (bSettoStartPos)
{
m_dRedElPos = dEL;
}
break;
}
case 1://mid
{
dEL = m_dRedElPos + nDir * m_pipeParamRec.m_dInterfaceL3 * 0.5;
if ( ( dEL - __min(m_dCurEl,m_dNewEl) ) > 1.e-6 &&
( dEL - __max(m_dCurEl,m_dNewEl) ) < 1.e-6 ) //不在CUREL , NEWEL 之间
{
}
else
{
AfxMessageBox(_T("在指定的标高位置插入变径超出了整体设置的新标高!"));
return FALSE;
}
if (bSettoStartPos)
{
m_dRedElPos -= nDir * m_pipeParamRec.m_dInterfaceL3 * 0.5;
}
break;
}
case 2://end
{
dEL = m_dRedElPos;
if ( ( dEL - __min(m_dCurEl,m_dNewEl) ) > 1.e-6 &&
( dEL - __max(m_dCurEl,m_dNewEl) ) < 1.e-6 ) //不在CUREL , NEWEL 之间
{
}
else
{
AfxMessageBox(_T("在指定的标高位置插入变径超出了整体设置的新标高!"));
return FALSE;
}
if (bSettoStartPos)
{
m_dRedElPos -= nDir * m_pipeParamRec.m_dInterfaceL3;
}
break;
}
default:
break;
}
return TRUE;
}
void CChangElDlg::OnBnClickedCheckrec()
{
UpdateData();
if (m_bCheckRec)
{
AcGeVector3d vt = AcGeVector3d::kZAxis;
if (m_dNewEl - m_dCurEl < 1.e-6)
vt = -AcGeVector3d::kZAxis;
memcpy(&m_pipeParamRec,&m_pipeParam,sizeof(WPipe::PipeParam));
CReducerDlg redDlg;
redDlg.Set(m_pDb,&m_pipeParamRec,vt,FALSE);
int nRes = redDlg.DoModal();
if (nRes == IDOK)
{
}
else
{
m_bCheckRec = FALSE;
UpdateData( FALSE );
}
}
else
{
memcpy(&m_pipeParamRec,&m_pipeParam,sizeof(WPipe::PipeParam));
}
}
void CChangElDlg::OnStnClickedStaticPreview()
{
}