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

472 lines
10 KiB
C++

#include "stdafx.h"
#include "CDKDDlg.h"
int g_nNozzY[] = {6,8,10,15,20,25,32,40,50,65,80,100,125,150,200,250,300,350,400,450,500,600,800,850,900,950,1000,1050,1100,1150,1200,1500,2000,0};
int g_nHoleNo = 1;
int g_nD5R[] = {200,220,235,255,290,315,375,435,495,545,600,650,705,820,910,1020,1120,1220,0};
int g_nD5F[] = {200,220,235,255,290,315,375,435,495,545,600,650,705,820,910,1020,1120,1220,0};
int g_nD2G[] = {95,105,110,120,135,150,210,230,260,320,375,475,525,575,630,680,830,920,1020,1220,0};
IMPLEMENT_DYNAMIC(CCDKDDlg, CDialog)
CCDKDDlg::CCDKDDlg(CWnd* pParent/* = NULL*/)
: CDialog(CCDKDDlg::IDD, pParent)
,m_dDL(500)
,m_dW(500)
,m_dE(0)
,m_nShape(0)
,m_nCurSel(10)
,m_bHasCase(FALSE)
,m_bHasNozz(TRUE)
,m_dT(6.0)
,m_sMertial(_T("PVC"))
,m_sNo(_T("H-001"))
,m_sPipeType(_T("A型刚性防水套管"))
, m_dHoleDeep(0)
, m_bHoleDeep(FALSE)
, m_bEnableRadio(TRUE)
, m_dTL(200.0)
, m_bMultiCurveUI(false)
, m_bExt(FALSE)
, m_dExt1(0)
, m_dExt2(0)
, m_nD2(2)
, m_sD2(_T(""))
, m_sForUse(_T("普通"))
{
m_bIsArrayKD = FALSE;
m_dBomEl = 0.0;
m_bBomEl = TRUE;
m_bFromPipe = FALSE;
GET_CACHE(CCDKDDlg
,%f%f%f%f%d%d%d%d%s%s
, &m_dDL
, &m_dW
, &m_dE
, &m_dT
, &m_nShape
, &m_nCurSel
, &m_bHasNozz
, &m_bHasCase
, &m_sMertial
, &m_sNo);
m_sNo.Format(_T("H-%d"),g_nHoleNo);
g_nHoleNo++;
}
CCDKDDlg::~CCDKDDlg(void)
{
}
void CCDKDDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, m_dDL);
DDX_Text(pDX, IDC_EDIT2, m_dW);
DDX_Text(pDX, IDC_EDIT3, m_dE);
DDX_Text(pDX, IDC_EDIT4, m_dT);
DDX_Radio(pDX, IDC_RADIO1, m_nShape);
DDX_CBIndex(pDX, IDC_COMBOINF, m_nCurSel);
DDX_Check(pDX, IDC_CHECK1, m_bHasNozz);
DDX_Check(pDX, IDC_CHECK2, m_bHasCase);
DDX_CBString(pDX, IDC_COMBO1, m_sMertial);
DDX_Text(pDX, IDC_EDIT6, m_sNo);
DDX_Control(pDX, IDC_COMBO1, m_wndComboMaters);
DDX_Control(pDX, IDC_COMBOINF, m_wndDnCombo);
DDX_CBString(pDX, IDC_COMBO3, m_sPipeType);
DDX_Control(pDX, IDC_COMBO3, m_wndPipeComboType);
DDX_Text(pDX, IDC_EDIT8, m_dHoleDeep);
DDX_Check(pDX, IDC_CHECK3, m_bHoleDeep);
DDX_Control(pDX, IDC_RADIO1, m_btnRadio1);
DDX_Control(pDX, IDC_RADIO2, m_btnRadio2);
DDX_Control(pDX, IDC_RADIO3, m_btnRadio3);
DDX_Text(pDX, IDC_EDIT9, m_dTL);
DDX_Check(pDX, IDC_CHECK6, m_bExt);
DDX_Text(pDX, IDC_EDIT10, m_dExt1);
DDX_Text(pDX, IDC_EDIT11, m_dExt2);
DDX_Control(pDX, IDC_EDIT10, m_wndExtEx1);
DDX_Control(pDX, IDC_EDIT11, m_wndEditExt2);
DDX_Text(pDX, IDC_EDIT12, m_nD2);
DDX_CBString(pDX, IDC_COMBO5, m_sD2);
DDX_Control(pDX, IDC_COMBO5, m_wndD2Combo);
DDX_Text(pDX, IDC_COMBO10, m_sForUse);
}
BEGIN_MESSAGE_MAP(CCDKDDlg, CDialog)
ON_BN_CLICKED(IDOK, &CCDKDDlg::OnBnClickedOk)
ON_BN_CLICKED(IDC_RADIO1, &CCDKDDlg::OnBnClickedRadio1)
ON_BN_CLICKED(IDC_RADIO2, &CCDKDDlg::OnBnClickedRadio2)
ON_BN_CLICKED(IDC_CHECK2, &CCDKDDlg::OnBnClickedCheck2)
ON_BN_CLICKED(IDC_CHECK1, &CCDKDDlg::OnBnClickedCheck1)
ON_BN_CLICKED(IDC_RADIO3, &CCDKDDlg::OnBnClickedRadio3)
ON_BN_CLICKED(IDC_CHECK6, &CCDKDDlg::OnBnClickedCheck6)
ON_CBN_SELCHANGE(IDC_COMBO3, &CCDKDDlg::OnCbnSelchangeCombo3)
END_MESSAGE_MAP()
BOOL CCDKDDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_dDLBk = m_dDL;
m_dWBk = m_dW;
UpdateData(FALSE);
CString path = FilePath::GetSysDir() + Plumbing_DB;
if (!m_dbSQLite.InitADOServer(path))
{
AfxMessageBox(CString(_T("数据库初始化失败,请检查 sys")) + Plumbing_DB + _T("文件是否存在."));
return FALSE;
}
InitMaterial();
InitComboDN();
OnBnClickedRadio1();
OnBnClickedCheck1();
if (m_bIsArrayKD)
{
GetDlgItem(IDC_STATIC_EL)->SetWindowText(_T("最低洞口中心标高(&E):") );
m_dE = m_dBomEl + 500;
}
//异形洞口的标高锁定.
GetDlgItem(IDC_EDIT3)->EnableWindow(m_bBomEl);
if (m_bFromPipe)
{
//GetDlgItem(IDC_EDIT1)->EnableWindow(FALSE);
//GetDlgItem(IDC_EDIT2)->EnableWindow(FALSE);
}
int nSel = m_wndPipeComboType.FindString(0,m_sPipeType);
if (nSel == -1)
{
nSel = 0;
}
m_wndPipeComboType.SetCurSel(nSel);
//更新翼环数据
ShowYHCombo();
m_btnRadio1.EnableWindow(m_bEnableRadio);
m_btnRadio2.EnableWindow(m_bEnableRadio);
m_btnRadio3.EnableWindow(m_bEnableRadio);
UpdateData(FALSE);
if (m_bMultiCurveUI)
{
GetDlgItem(IDC_RADIO1)->EnableWindow(0);
GetDlgItem(IDC_RADIO2)->EnableWindow(0);
GetDlgItem(IDC_RADIO3)->EnableWindow(0);
GetDlgItem(IDC_EDIT1)->EnableWindow(0);
GetDlgItem(IDC_EDIT2)->EnableWindow(0);
GetDlgItem(IDC_EDIT3)->EnableWindow(0);
GetDlgItem(IDC_EDIT6)->EnableWindow(0);
GetDlgItem(IDC_EDIT8)->EnableWindow(0);
m_wndD2Combo.EnableWindow(0);
GetDlgItem(IDC_EDIT12)->EnableWindow(0);
}
m_wndExtEx1.EnableWindow(m_bExt);
m_wndEditExt2.EnableWindow(m_bExt);
return TRUE;
}
void CCDKDDlg::OnBnClickedOk()
{
UpdateData();
if (m_bIsArrayKD)
{
if (m_dE - m_dBomEl < 1.e-3)
{
AfxMessageBox(_T("请检查开洞的洞口标高是否合理!"));
return;
}
}
if (m_bHoleDeep)
{
if (m_dHoleDeep < 5.0)//5毫米
{
AfxMessageBox(_T("请检查开洞的洞口深度是否合理!"));
return;
}
}
if (m_bHasCase)
{
if (m_dTL < 1.e-2)
{
AfxMessageBox(_T("请检查套管的长度是否合理!"));
return;
}
}
if (m_bFromPipe)//如果来自管子,则开洞尺寸必须大于外径
{
if ( (m_dDLBk - m_dDL) > 1.e-10 ||
(m_dWBk - m_dW) > 1.e-10)
{
AfxMessageBox(_T("穿管开洞,洞口尺寸不能小于管子外径!"));
return;
}
}
SET_CACHE(CCDKDDlg
, %f%f%f%f%d%d%d%d%s%s
, m_dDL
, m_dW
, m_dE
, m_dT
, m_nShape
, m_nCurSel
, m_bHasNozz
, m_bHasCase
, m_sMertial
, m_sNo);
OnOK();
}
void CCDKDDlg::GetHoleData(KHoleData& data) const
{
data.m_dDL = m_dDL;
data.m_dW = m_dW;
data.m_dE = m_dE;
data.m_dT = m_dT;
data.m_dTL = m_dTL;
data.m_dDeep = m_dHoleDeep;
data.m_bDeep = m_bHoleDeep;
data.m_nCurSel = m_nCurSel;
data.m_nShape = m_nShape;
data.m_bHasCase = m_bHasCase;
data.m_bHasNozz = m_bHasNozz;
data.m_nD2 = m_nD2;
_tcscpy(data.m_sHoles,m_sHoles);
_tcscpy(data.m_sMertial,m_sMertial);
_tcscpy(data.m_sPipeType,m_sPipeType);
_tcscpy(data.m_sD2,m_sD2);
_tcscpy(data.m_sNo,m_sNo);
_tcscpy(data.m_sForUser, m_sForUse);
}
void CCDKDDlg::InitMaterial()
{
//材质
CStringArray arVals;
CString sSQL = _T("select [材质] from AecMaterial where [类型]='管道'");
m_dbSQLite.GetSelData(sSQL,arVals);
int nSel = 0;
m_wndComboMaters.ResetContent();
for (int i = 0;i < arVals.GetSize();i++)
{
m_wndComboMaters.InsertString(i,arVals.GetAt(i));
if (m_sMertial.CompareNoCase(arVals.GetAt(i)) == 0)
{
nSel = i;
}
}
m_wndComboMaters.SetCurSel(nSel);
}
void CCDKDDlg::EnableRadioBtn(BOOL bEnable)
{
m_bEnableRadio = bEnable;
}
void CCDKDDlg::setMultiCurveUI()
{
m_bMultiCurveUI = true;
}
void CCDKDDlg::InitComboDN()
{
m_wndDnCombo.ResetContent();
int i = 0,nIndex = 0;
CString sText;
while(TRUE)
{
if (g_nNozzY[i] == 0)
break;
sText.Format(_T("%d"),g_nNozzY[i]);
nIndex = m_wndDnCombo.InsertString(i,sText);
m_wndDnCombo.SetItemData(nIndex,i);
i++;
}
if (m_wndDnCombo.GetCount() >= 10)
m_wndDnCombo.SetCurSel(10);
m_nCurSel = 10;
}
void CCDKDDlg::OnBnClickedRadio1()
{
UpdateData();
GetDlgItem(IDC_STATIC_W)->EnableWindow(m_nShape);
GetDlgItem(IDC_EDIT2)->EnableWindow(m_nShape);
GetDlgItem(IDC_STATIC_W2)->EnableWindow(m_nShape);
if (m_nShape == 0)
{
GetDlgItem(IDC_STATIC_DL)->SetWindowText(_T("直径(&D):"));
GetDlgItem(IDC_STATIC_Y)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT27)->EnableWindow(FALSE);
}
else
{
if (m_nShape == 1)
{
GetDlgItem(IDC_STATIC_Y)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT27)->EnableWindow(TRUE);
}
GetDlgItem(IDC_STATIC_DL)->SetWindowText(_T("高度(&H):"));
}
}
void CCDKDDlg::OnBnClickedRadio2()
{
UpdateData();
GetDlgItem(IDC_STATIC_W)->EnableWindow(m_nShape);
GetDlgItem(IDC_EDIT2)->EnableWindow(m_nShape);
GetDlgItem(IDC_STATIC_W2)->EnableWindow(m_nShape);
if (m_nShape == 0)
{
GetDlgItem(IDC_STATIC_DL)->SetWindowText(_T("直径(&D):"));
}
else if (m_nShape == 1)
{
GetDlgItem(IDC_STATIC_DL)->SetWindowText(_T("高度(&H):"));
GetDlgItem(IDC_STATIC_Y)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT27)->EnableWindow(TRUE);
}
}
void CCDKDDlg::OnBnClickedRadio3()
{
UpdateData();
if (m_nShape == 2)
{
GetDlgItem(IDC_STATIC_W)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT2)->EnableWindow(FALSE);
GetDlgItem(IDC_STATIC_W2)->EnableWindow(FALSE);
GetDlgItem(IDC_CHECK2)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT4)->EnableWindow(FALSE);
GetDlgItem(IDC_CHECK1)->EnableWindow(FALSE);
GetDlgItem(IDC_COMBOINF)->EnableWindow(FALSE);
}
else
{
GetDlgItem(IDC_STATIC_W)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT2)->EnableWindow(TRUE);
GetDlgItem(IDC_STATIC_W2)->EnableWindow(TRUE);
GetDlgItem(IDC_CHECK2)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT4)->EnableWindow(TRUE);
GetDlgItem(IDC_CHECK1)->EnableWindow(TRUE);
GetDlgItem(IDC_COMBOINF)->EnableWindow(TRUE);
OnBnClickedRadio2();
}
}
void CCDKDDlg::OnBnClickedCheck2()
{
UpdateData();
GetDlgItem(IDC_EDIT4)->EnableWindow(m_bHasCase);
}
void CCDKDDlg::OnBnClickedCheck1()
{
UpdateData();
m_wndDnCombo.EnableWindow(m_bHasNozz);
if (m_bHasNozz)
{
CString sText;
for (int i = 0;i < m_wndDnCombo.GetCount();i++)
{
m_wndDnCombo.GetLBText(i,sText);
if ( fabs(_ttof(sText) - m_dDL) < 1.e-3 )
{
m_wndDnCombo.SetCurSel(i);
break;
}
}
}
}
void CCDKDDlg::OnBnClickedCheck6()
{
UpdateData();
m_wndExtEx1.EnableWindow(m_bExt);
m_wndEditExt2.EnableWindow(m_bExt);
}
void CCDKDDlg::OnCbnSelchangeCombo3()
{
UpdateData();
ShowYHCombo();
}
void CCDKDDlg::ShowYHCombo()
{
CString sTemp;
if (m_sPipeType.Find(_T("柔性")) != -1)
{
m_wndD2Combo.ResetContent();
for (int i = 0;i < 30;i++)
{
if (g_nD5R[i] == 0)
break;
sTemp.Format(_T("%d"),g_nD5R[i]);
m_wndD2Combo.AddString(sTemp);
}
}
else if ( m_sPipeType.Find(_T("法兰")) != -1)
{
m_wndD2Combo.ResetContent();
for (int i = 0;i < 30;i++)
{
if (g_nD5F[i] == 0)
break;
sTemp.Format(_T("%d"),g_nD5F[i]);
m_wndD2Combo.AddString(sTemp);
}
}
else if (m_sPipeType.Find(_T("刚性")) != -1)
{
m_wndD2Combo.ResetContent();
for (int i = 0;i < 30;i++)
{
if (g_nD2G[i] == 0)
break;
sTemp.Format(_T("%d"),g_nD2G[i]);
m_wndD2Combo.AddString(sTemp);
}
}
}