238 lines
6.2 KiB
C++
238 lines
6.2 KiB
C++
#include "stdafx.h"
|
|
#include "EReducerDlg.h"
|
|
#include "afxdialogex.h"
|
|
|
|
IMPLEMENT_DYNAMIC(CEReducerDlg, CDialog)
|
|
|
|
CEReducerDlg::CEReducerDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CEReducerDlg::IDD, pParent)
|
|
{
|
|
m_pDb = NULL;
|
|
m_pPipeParam = NULL;
|
|
}
|
|
|
|
CEReducerDlg::~CEReducerDlg()
|
|
{
|
|
}
|
|
|
|
void CEReducerDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
DDX_Control(pDX, IDC_LISTREDUCER, m_wndListCtrl);
|
|
DDX_Control(pDX, IDC_LISTODTHK, m_wndListODThk);
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CEReducerDlg, CDialog)
|
|
ON_BN_CLICKED(IDOK, &CEReducerDlg::OnBnClickedOk)
|
|
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LISTREDUCER, &CEReducerDlg::OnLvnItemchangedListreducer)
|
|
END_MESSAGE_MAP()
|
|
|
|
void CEReducerDlg::Set(CUIISQLiteServer* pDb,WPipe::PipeParam* pParam,AcGeVector3d& vtDirCur,BOOL bOnlyStandardRec)
|
|
{
|
|
m_pDb = pDb;
|
|
m_pPipeParam = pParam;
|
|
}
|
|
|
|
BOOL CEReducerDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
m_wndListCtrl.InsertColumn(0,_T("主管公称直径"),LVCFMT_LEFT,100);
|
|
m_wndListCtrl.InsertColumn(1,_T("变径端公称直径"),LVCFMT_LEFT,100);
|
|
m_wndListCtrl.InsertColumn(2,_T("长度"),LVCFMT_LEFT,100);
|
|
m_wndListCtrl.InsertColumn(3,_T("弯头曲率"), LVCFMT_LEFT, 0);
|
|
|
|
m_wndListCtrl.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
|
|
|
|
m_wndListODThk.InsertColumn(0,_T("外径"),LVCFMT_LEFT,80);
|
|
m_wndListODThk.InsertColumn(1,_T("壁厚"),LVCFMT_LEFT,60);
|
|
m_wndListODThk.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
|
|
|
|
InitReducer();
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CEReducerDlg::InitReducer()
|
|
{
|
|
if (m_pDb == NULL) return;
|
|
|
|
CString sSQL,sSN = m_pPipeParam->szODSn;
|
|
|
|
if (sSN.IsEmpty())
|
|
{
|
|
sSQL.Format(_T("select distinct [外径系列] from AecSpecFit where [等级名称]='%s'"), m_pPipeParam->szLevel);
|
|
m_pDb->GetSelData(sSQL, sSN);
|
|
}
|
|
|
|
if (sSN.IsEmpty())
|
|
{
|
|
sSQL.Format(_T("select [公称直径L], [公称直径S], [长度] from [AecRElbowData] where [公称直径L]=%d order by [公称直径L],[公称直径S]"),
|
|
(int)(m_pPipeParam->m_dDN + 0.5));
|
|
}
|
|
else
|
|
{
|
|
sSQL.Format(_T("select [公称直径L], [公称直径S], [长度] from [AecRElbowData] where [公称直径L]=%d and [外径系列] = '%s' order by [公称直径L],[公称直径S]"),
|
|
(int)(m_pPipeParam->m_dDN + 0.5),sSN);
|
|
}
|
|
|
|
CUIIValueTable valTable;
|
|
m_pDb->GetSelData(sSQL,valTable);
|
|
int nSize = valTable.GetTableLogicSize();
|
|
|
|
if (nSize == 0)
|
|
{
|
|
sSQL.Format(_T("select [公称直径L], [公称直径S], [长度] from [AecRElbowData] where [公称直径L]=%d order by [公称直径L],[公称直径S]"),
|
|
(int)(m_pPipeParam->m_dDN + 0.5));
|
|
m_pDb->GetSelData(sSQL,valTable);
|
|
}
|
|
|
|
nSize = valTable.GetTableLogicSize();
|
|
|
|
CString sDN1,sDN2,sL,sRR;
|
|
CStringArray arVals;
|
|
CStringList lstDn2s;
|
|
for(int i = 0;i < nSize;i++)
|
|
{
|
|
arVals.RemoveAll();
|
|
valTable.GetValueRecord(i,arVals);
|
|
|
|
if (arVals.GetSize() >= 3)
|
|
{
|
|
sDN1 = arVals.GetAt(0);
|
|
sDN2 = arVals.GetAt(1);
|
|
sL = arVals.GetAt(2);
|
|
sRR.Format(_T("%.1f"),2.0 * _ttof(sL) / __max(_ttof(sDN1),_ttof(sDN2)));
|
|
|
|
if (lstDn2s.Find(sDN2) == NULL)
|
|
{
|
|
int nItem = m_wndListCtrl.GetItemCount();
|
|
m_wndListCtrl.InsertItem(nItem,sDN1);
|
|
m_wndListCtrl.SetItemText(nItem,1,sDN2);
|
|
m_wndListCtrl.SetItemText(nItem,2,sL);
|
|
m_wndListCtrl.SetItemText(nItem, 3, sRR);
|
|
lstDn2s.AddTail(sDN2);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (sSN.IsEmpty())
|
|
{
|
|
sSQL.Format(_T("select [公称直径S], [公称直径L], [长度] from [AecRElbowData] where [公称直径L]=%d order by [公称直径S],[公称直径L]"),
|
|
(int)(m_pPipeParam->m_dDN + 0.5));
|
|
}
|
|
else
|
|
{
|
|
sSQL.Format(_T("select [公称直径S], [公称直径L], [长度] from [AecRElbowData] where [公称直径S]=%d and [外径系列] = '%s' order by [公称直径S],[公称直径L]"),
|
|
(int)(m_pPipeParam->m_dDN + 0.5), sSN);
|
|
}
|
|
|
|
valTable.RemoveAll();
|
|
m_pDb->GetSelData(sSQL,valTable);
|
|
|
|
nSize = valTable.GetTableLogicSize();
|
|
for(i = 0;i < nSize;i++)
|
|
{
|
|
arVals.RemoveAll();
|
|
valTable.GetValueRecord(i,arVals);
|
|
|
|
if (arVals.GetSize() >= 3)
|
|
{
|
|
sDN1 = arVals.GetAt(0);
|
|
sDN2 = arVals.GetAt(1);
|
|
sL = arVals.GetAt(2);
|
|
sRR.Format(_T("%.1f"), 2.0 * _ttof(sL) / __max(_ttof(sDN1), _ttof(sDN2)));
|
|
|
|
if (lstDn2s.Find(sDN1) == NULL)
|
|
{
|
|
lstDn2s.AddTail(sDN1);
|
|
int nItem = m_wndListCtrl.GetItemCount();
|
|
m_wndListCtrl.InsertItem(nItem,sDN1);
|
|
m_wndListCtrl.SetItemText(nItem,1,sDN2);
|
|
m_wndListCtrl.SetItemText(nItem,2,sL);
|
|
m_wndListCtrl.SetItemText(nItem, 3, sRR);
|
|
}
|
|
}
|
|
}
|
|
m_wndListCtrl.SetItemState(0,LVIS_SELECTED,LVIS_SELECTED);
|
|
}
|
|
|
|
void CEReducerDlg::OnLvnItemchangedListreducer(NMHDR *pNMHDR, LRESULT *pResult)
|
|
{
|
|
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
|
|
|
|
int nItem = pNMLV->iItem;
|
|
if (nItem != -1)
|
|
{
|
|
double dDN = _ttof(m_wndListCtrl.GetItemText(nItem,1));
|
|
|
|
CString sSQL;
|
|
sSQL.Format(_T("select [外径],[壁厚] from AecOD where [公称直径]=%d"),(int)dDN);
|
|
|
|
m_wndListODThk.DeleteAllItems();
|
|
CUIIValueTable table;
|
|
m_pDb->GetSelData(sSQL,table);
|
|
table.ShowToListCtrl(&m_wndListODThk);
|
|
|
|
m_wndListODThk.SetItemState(0,LVIS_SELECTED,LVIS_SELECTED);
|
|
}
|
|
*pResult = 0;
|
|
}
|
|
|
|
|
|
void CEReducerDlg::OnBnClickedOk()
|
|
{
|
|
UpdateData();
|
|
|
|
POSITION ps = m_wndListCtrl.GetFirstSelectedItemPosition();
|
|
int nIntem = m_wndListCtrl.GetNextSelectedItem(ps);
|
|
if (nIntem == -1)
|
|
{
|
|
AfxMessageBox(_T("请选择变径系列!"));
|
|
return;
|
|
}
|
|
|
|
ps = m_wndListODThk.GetFirstSelectedItemPosition();
|
|
int nIntem2 = m_wndListODThk.GetNextSelectedItem(ps);
|
|
if (nIntem2 == -1)
|
|
{
|
|
AfxMessageBox(_T("请选择变径后续的管子的外径壁厚系列!"));
|
|
return;
|
|
}
|
|
|
|
CString sText;
|
|
double dDNPre = _ttof(m_wndListCtrl.GetItemText(nIntem,0));
|
|
m_pPipeParam->m_dDN = _ttof(m_wndListCtrl.GetItemText(nIntem,1));
|
|
m_pPipeParam->m_dInterfaceL3 = _ttof(m_wndListCtrl.GetItemText(nIntem,2));
|
|
|
|
double dOD = _ttof(m_wndListODThk.GetItemText(nIntem2,0));
|
|
double dThk = _ttof(m_wndListODThk.GetItemText(nIntem2,1));
|
|
//m_pPipeParam->m_dRRatio = _ttof(m_wndListCtrl.GetItemText(nIntem, 3));
|
|
//不变
|
|
|
|
m_pPipeParam->m_dOD = dOD;
|
|
m_pPipeParam->m_dThick = dThk;
|
|
|
|
switch(m_pPipeParam->m_eD)
|
|
{
|
|
case WPipe::eDN:
|
|
{
|
|
m_pPipeParam->m_dD = m_pPipeParam->m_dDN;
|
|
break;
|
|
}
|
|
case WPipe::eOD:
|
|
{
|
|
m_pPipeParam->m_dD = m_pPipeParam->m_dOD;
|
|
break;
|
|
}
|
|
case WPipe::eID:
|
|
{
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
EndDialog(IDOK);
|
|
}
|