708 lines
16 KiB
C++
708 lines
16 KiB
C++
#include "stdafx.h"
|
|
#include "twt_pump.h"
|
|
#include "DoubleLinePipeReducerEditDlg.h"
|
|
#include "SelectBlkDlg.h"
|
|
#include "DbDoubleLinePipeReducer.h"
|
|
#include "DbDoubleLinePipe.h"
|
|
#include <set>
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
//#ifdef _WIN64
|
|
#include "TGAs.h"
|
|
//#endif
|
|
|
|
// 编辑大小接头
|
|
int EditDoubleLineReducer(AcDbObjectId id)
|
|
{
|
|
TDbDoubleLinePipeReducer *pDLPipeReducer = NULL;
|
|
acdbOpenObject(pDLPipeReducer, id, AcDb::kForWrite);
|
|
if (pDLPipeReducer != NULL)
|
|
{
|
|
AcDbObjectId id1, id2;
|
|
id1 = pDLPipeReducer->GetIPipe(0); // 大小接头起点处接口
|
|
id2 = pDLPipeReducer->GetIPipe(1); // 大小接头终点处接口
|
|
if ((id1.isValid() && id2.isValid()&&!id1.isErased()&&!id2.isErased())) // 两个接口都连接着管子
|
|
{
|
|
acutPrintf(_T("\n无法编辑大小接头,请删除后重新绘制!"));
|
|
}
|
|
else if ((id1.isValid() && !id1.isErased()) ||
|
|
(id2.isValid() && !id2.isErased()) )
|
|
{
|
|
double dPipeDia1 = 0.0, dPipeDia2 = 0.0;
|
|
double dPressure = 1.0;
|
|
double dFlangeThick1 = 0.0, dFlangeThick2 = 0.0;
|
|
double dFlangeDia1 = 0.0, dFlangeDia2 = 0.0;
|
|
int nType = 0, nLinkType = 0;
|
|
|
|
dPipeDia1 = pDLPipeReducer->GetSPipeDiameter();
|
|
dPipeDia2 = pDLPipeReducer->GetEPipeDiameter();
|
|
dFlangeDia1 = pDLPipeReducer->GetSFlangeDiameter();
|
|
dFlangeDia2 = pDLPipeReducer->GetEFlangeDiameter();
|
|
dFlangeThick1 = pDLPipeReducer->GetSFlangeThick();
|
|
dFlangeThick2 = pDLPipeReducer->GetEFlangeThick();
|
|
nType = pDLPipeReducer->GetType();
|
|
nLinkType = pDLPipeReducer->GetLinkType();
|
|
|
|
CTemporaryResourceOverride vTemp;
|
|
CDoubleLinePipeReducerEditDlg dlg;
|
|
|
|
// 根据那个接口连接着管子确定大小接头的起点位置
|
|
if (id1.isValid() && !id1.isErased())
|
|
{
|
|
ads_name ent;
|
|
acdbGetAdsName(ent, id1);
|
|
|
|
CString csPn = ReadXdata(ent, _T("TG-PIPE-FLANGE-PN"));
|
|
// cet 2010.5.19 add
|
|
if (csPn.IsEmpty())
|
|
{
|
|
csPn = _T("1.0MPa");
|
|
}
|
|
csPn.TrimRight(_T("MPa"));
|
|
dPressure = _tstof(csPn);
|
|
|
|
dlg.SetOldPipeDiameter(dPipeDia1);
|
|
dlg.SetNewPipeDiameter(dPipeDia2);
|
|
dlg.SetOldPipePressure(dPressure);
|
|
dlg.SetNewPipePressure(dPressure);
|
|
dlg.SetOldFlangeDiameter(dFlangeDia1);
|
|
dlg.SetNewFlangeDiameter(dFlangeDia2);
|
|
dlg.SetOldFlangeThick(dFlangeThick1);
|
|
dlg.SetNewFlangeThick(dFlangeThick2);
|
|
dlg.SetPipeType(nType);
|
|
dlg.SetLinkType(nLinkType);
|
|
|
|
if (dlg.DoModal() == IDOK)
|
|
{
|
|
pDLPipeReducer->SetEPipeDiameter(dlg.GetNewPipeDiameter());
|
|
pDLPipeReducer->SetEFlangeDiameter(dlg.GetNewFlangeDiameter());
|
|
pDLPipeReducer->SetEFlangeThick(dlg.GetNewFlangeThick());
|
|
pDLPipeReducer->SetType(dlg.GetPipeType());
|
|
pDLPipeReducer->SetSPipeFlangeDist(dlg.GetH1());
|
|
pDLPipeReducer->SetEPipeFlangeDist(dlg.GetH2());
|
|
pDLPipeReducer->SetLenght(dlg.GetL());
|
|
}
|
|
}
|
|
else
|
|
{
|
|
ads_name ent;
|
|
acdbGetAdsName(ent, id2);
|
|
CString csPn = ReadXdata(ent, _T("TG-PIPE-FLANGE-PN"));
|
|
csPn.TrimRight(_T("MPa"));
|
|
dPressure = _tstof(csPn);
|
|
|
|
dlg.SetOldPipeDiameter(dPipeDia2);
|
|
dlg.SetNewPipeDiameter(dPipeDia1);
|
|
dlg.SetOldPipePressure(dPressure);
|
|
dlg.SetNewPipePressure(dPressure);
|
|
dlg.SetOldFlangeDiameter(dFlangeDia2);
|
|
dlg.SetNewFlangeDiameter(dFlangeDia1);
|
|
dlg.SetOldFlangeThick(dFlangeThick2);
|
|
dlg.SetNewFlangeThick(dFlangeThick1);
|
|
dlg.SetPipeType(nType);
|
|
dlg.SetLinkType(nLinkType);
|
|
|
|
if (dlg.DoModal() == IDOK)
|
|
{
|
|
pDLPipeReducer->SetSPipeDiameter(dlg.GetNewPipeDiameter());
|
|
pDLPipeReducer->SetSFlangeDiameter(dlg.GetNewFlangeDiameter());
|
|
pDLPipeReducer->SetSFlangeThick(dlg.GetNewFlangeThick());
|
|
pDLPipeReducer->SetType(dlg.GetPipeType());
|
|
pDLPipeReducer->SetSPipeFlangeDist(dlg.GetH1());
|
|
pDLPipeReducer->SetEPipeFlangeDist(dlg.GetH2());
|
|
pDLPipeReducer->SetLenght(dlg.GetL());
|
|
}
|
|
}
|
|
}
|
|
else // 两个接口都没有连接管子
|
|
{
|
|
acutPrintf(_T("\n无法编辑大小接头,请删除后重新绘制!"));
|
|
}
|
|
pDLPipeReducer->Close();
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
CDoubleLinePipeReducerEditDlg::CDoubleLinePipeReducerEditDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CDoubleLinePipeReducerEditDlg::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CDoubleLinePipeReducerEditDlg)
|
|
m_dWndEdtOldPipeDia = 0.0;
|
|
m_nWndRadPipeType = 0;
|
|
m_dWndEdtOldFlangeThick = 0.0;
|
|
m_dWndEdtOldFlangeDia = 0.0;
|
|
m_dWndEdtOldPressure = 0.0;
|
|
m_dWndEdtNewFlangeThick = 0.0;
|
|
m_dWndEdtNewFlangeDia = 0.0;
|
|
//}}AFX_DATA_INIT
|
|
m_nLinkType = 0;
|
|
m_dNewPipeDiameter = 0.0;
|
|
m_dNewPipePressure = 0.0;
|
|
m_dH1 = 0.0;
|
|
m_dH2 = 0.0;
|
|
m_dL = 0.0;
|
|
}
|
|
|
|
|
|
void CDoubleLinePipeReducerEditDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CDoubleLinePipeReducerEditDlg)
|
|
DDX_Control(pDX, IDC_CMB_NEWPIPEDIAMETER, m_wndCmbPipeDiameter);
|
|
DDX_Control(pDX, IDC_CMB_NEWPRESSURE, m_wndCmbPipePressure);
|
|
DDX_Text(pDX, IDC_EDT_OLDFLANGEDIAMETER, m_dWndEdtOldFlangeDia);
|
|
DDX_Radio(pDX, IDC_RADIO1, m_nWndRadPipeType);
|
|
DDX_Text(pDX, IDC_EDT_OLDFLANGETHICK, m_dWndEdtOldFlangeThick);
|
|
DDX_Text(pDX, IDC_EDT_OLDPIPEDIAMETER, m_dWndEdtOldPipeDia);
|
|
// DDX_Text(pDX, IDC_EDT_OLDPRESSURE, m_dWndEdtOldPressure);
|
|
DDX_Text(pDX, IDC_EDT_NEWFLANGETHICK, m_dWndEdtNewFlangeThick);
|
|
DDX_Text(pDX, IDC_EDT_NEWFALNGEDIAMETER, m_dWndEdtNewFlangeDia);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CDoubleLinePipeReducerEditDlg, CDialog)
|
|
//{{AFX_MSG_MAP(CDoubleLinePipeReducerEditDlg)
|
|
ON_WM_PAINT()
|
|
ON_CBN_SELCHANGE(IDC_CMB_NEWPRESSURE, OnSelchangeCmbNewpressure)
|
|
ON_CBN_SELCHANGE(IDC_CMB_NEWPIPEDIAMETER, OnSelchangeCmbNewpipediameter)
|
|
ON_BN_CLICKED(IDC_RADIO1, OnRadio1)
|
|
ON_BN_CLICKED(IDC_RADIO2, OnRadio1)
|
|
ON_BN_CLICKED(IDC_RADIO3, OnRadio1)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
double CDoubleLinePipeReducerEditDlg::GetNewPipePressure()
|
|
{
|
|
double dVal = 0.0;
|
|
int nIndex = m_wndCmbPipePressure.GetCurSel();
|
|
if (nIndex != -1)
|
|
{
|
|
CString strTemp;
|
|
m_wndCmbPipePressure.GetLBText(nIndex, strTemp);
|
|
dVal = _tstof(strTemp);
|
|
}
|
|
return dVal;
|
|
}
|
|
|
|
void CDoubleLinePipeReducerEditDlg::SetNewPipePressure(double dPipePressure)
|
|
{
|
|
CString strTemp;
|
|
strTemp.Format(_T("%f"), dPipePressure);
|
|
strTemp.TrimRight(_T("0"));
|
|
strTemp.TrimRight(_T("."));
|
|
m_strPressure = strTemp;
|
|
}
|
|
|
|
double CDoubleLinePipeReducerEditDlg::GetNewPipeDiameter()
|
|
{
|
|
return m_dNewPipeDiameter;
|
|
}
|
|
|
|
void CDoubleLinePipeReducerEditDlg::SetNewPipeDiameter(double dPipeDiameter)
|
|
{
|
|
m_dNewPipeDiameter = dPipeDiameter;
|
|
}
|
|
|
|
void CDoubleLinePipeReducerEditDlg::OpenSlide()
|
|
{
|
|
UpdateData(TRUE);
|
|
//比较两管径大小
|
|
CString strTmp;
|
|
int nIndex = m_wndCmbPipeDiameter.GetCurSel();
|
|
m_wndCmbPipeDiameter.GetLBText(nIndex, strTmp);
|
|
double dNewPipeDia = _tstof(strTmp);
|
|
bool bVal = m_dWndEdtOldPipeDia >= dNewPipeDia;
|
|
|
|
// 判断需显示的幻灯片
|
|
CString strSlb;
|
|
if (m_nLinkType == eJointing) // 焊接
|
|
{
|
|
if (m_nWndRadPipeType == 0) // 同心
|
|
{
|
|
if (bVal)
|
|
{
|
|
strSlb = _T("TWT(PIPEREDUCER1)");
|
|
}
|
|
else
|
|
{
|
|
strSlb = _T("TWT(PIPEREDUCER2)");
|
|
}
|
|
|
|
}
|
|
else if (m_nWndRadPipeType == 1) // 偏心顶平
|
|
{
|
|
if (bVal)
|
|
{
|
|
strSlb = _T("TWT(PIPEREDUCER3)");
|
|
}
|
|
else
|
|
{
|
|
strSlb = _T("TWT(PIPEREDUCER4)");
|
|
}
|
|
}
|
|
else if (m_nWndRadPipeType == 2) // 偏心底平
|
|
{
|
|
if (bVal)
|
|
{
|
|
strSlb = _T("TWT(PIPEREDUCER5)");
|
|
}
|
|
else
|
|
{
|
|
strSlb = _T("TWT(PIPEREDUCER6)");
|
|
}
|
|
}
|
|
}
|
|
else // 法兰链接
|
|
{
|
|
if (m_nWndRadPipeType == 0) // 同心
|
|
{
|
|
if (bVal)
|
|
{
|
|
strSlb = _T("TWT(PIPEREDUCER7)");
|
|
}
|
|
else
|
|
{
|
|
strSlb = _T("TWT(PIPEREDUCER8)");
|
|
}
|
|
|
|
}
|
|
else if (m_nWndRadPipeType == 1) // 偏心顶平
|
|
{
|
|
if (bVal)
|
|
{
|
|
strSlb = _T("TWT(PIPEREDUCER9)");
|
|
}
|
|
else
|
|
{
|
|
strSlb = _T("TWT(PIPEREDUCER10)");
|
|
}
|
|
}
|
|
else if (m_nWndRadPipeType == 2) // 偏心底平
|
|
{
|
|
if (bVal)
|
|
{
|
|
strSlb = _T("TWT(PIPEREDUCER11)");
|
|
}
|
|
else
|
|
{
|
|
strSlb = _T("TWT(PIPEREDUCER12)");
|
|
}
|
|
}
|
|
}
|
|
// 显示幻灯片
|
|
CWnd *pImageBox = GetDlgItem(IDC_STC_PREVIEW);
|
|
if (pImageBox != NULL)
|
|
{
|
|
DrawSlide((const TCHAR*)strSlb, pImageBox);
|
|
}
|
|
}
|
|
|
|
void CDoubleLinePipeReducerEditDlg::OnPaint()
|
|
{
|
|
CPaintDC dc(this);
|
|
OpenSlide();
|
|
}
|
|
|
|
void CDoubleLinePipeReducerEditDlg::Init()
|
|
{
|
|
FLANGEDATA data1[] = {
|
|
{50, 140, 12},
|
|
{65, 160, 14},
|
|
{80, 190, 14},
|
|
{100, 210, 14},
|
|
{125, 240, 14},
|
|
{150, 265, 16},
|
|
{200, 320, 18},
|
|
{250, 375, 22},
|
|
{300, 440, 22},
|
|
{350, 490, 22},
|
|
{400, 540, 22},
|
|
{450, 595, 24},
|
|
{500, 645, 24},
|
|
{600, 755, 24},
|
|
{700, 860, 26},
|
|
{800, 975, 26},
|
|
{900, 1075, 28},
|
|
{1000, 1175, 30},
|
|
{1200, 1375, 30},
|
|
{1400, 1575, 32},
|
|
{1600, 1790, 32},
|
|
{1800, 1990, 34},
|
|
{2000, 2190, 34},
|
|
};
|
|
std::vector<FLANGEDATA> vec1(data1, data1 + 23);
|
|
m_mapFlangeData.insert(std::make_pair(CString(_T("0.25")), vec1));
|
|
|
|
FLANGEDATA data2[] = {
|
|
{50, 140, 16},
|
|
{65, 160, 16},
|
|
{80, 190, 18},
|
|
{100, 210, 18},
|
|
{125, 240, 20},
|
|
{150, 265, 20},
|
|
{200, 320, 22},
|
|
{250, 375, 24},
|
|
{300, 440, 24},
|
|
{350, 490, 26},
|
|
{400, 540, 28},
|
|
{450, 595, 28},
|
|
{500, 645, 30},
|
|
{600, 755, 30},
|
|
{700, 860, 32},
|
|
{800, 975, 32},
|
|
{900, 1075, 34},
|
|
{1000, 1175, 36},
|
|
{1200, 1405, 38},
|
|
{1400, 1630, 44},
|
|
{1600, 1830, 46},
|
|
{1800, 2045, 52},
|
|
{2000, 2265, 54},
|
|
};
|
|
std::vector<FLANGEDATA> vec2(data2, data2 + 23);
|
|
m_mapFlangeData.insert(std::make_pair(CString(_T("0.6")), vec2));
|
|
|
|
FLANGEDATA data3[] = {
|
|
{50, 165, 18},
|
|
{65, 185, 20},
|
|
{80, 200, 20},
|
|
{100, 220, 22},
|
|
{125, 250, 24},
|
|
{150, 285, 24},
|
|
{200, 340, 24},
|
|
{250, 395, 26},
|
|
{300, 445, 28},
|
|
{350, 505, 28},
|
|
{400, 565, 30},
|
|
{450, 615, 30},
|
|
{500, 670, 32},
|
|
{600, 780, 36},
|
|
{700, 895, 36},
|
|
{800, 1015, 38},
|
|
{900, 1115, 42},
|
|
{1000, 1230, 44},
|
|
{1200, 1455, 48},
|
|
{1400, 1675, 54},
|
|
{1600, 1915, 62},
|
|
{1800, 2115, 66},
|
|
{2000, 2325, 72},
|
|
};
|
|
std::vector<FLANGEDATA> vec3(data3, data3 + 23);
|
|
m_mapFlangeData.insert(std::make_pair(CString(_T("1.0")), vec3));
|
|
|
|
FLANGEDATA data4[] = {
|
|
{50, 165, 22},
|
|
{65, 185, 24},
|
|
{80, 200, 24},
|
|
{100, 220, 26},
|
|
{125, 250, 28},
|
|
{150, 285, 28},
|
|
{200, 340, 30},
|
|
{250, 405, 32},
|
|
{300, 460, 32},
|
|
{350, 520, 34},
|
|
{400, 580, 38},
|
|
{450, 640, 42},
|
|
{500, 715, 48},
|
|
{600, 840, 50},
|
|
};
|
|
std::vector<FLANGEDATA> vec4(data4, data4 + 23);
|
|
m_mapFlangeData.insert(std::make_pair(CString(_T("1.6")), vec4));
|
|
|
|
CWnd *pWnd = NULL;
|
|
m_wndCmbPipePressure.EnableWindow(FALSE);
|
|
|
|
pWnd = NULL;
|
|
pWnd = GetDlgItem(IDC_EDT_NEWFALNGEDIAMETER);
|
|
if (pWnd != NULL)
|
|
{
|
|
pWnd->EnableWindow(FALSE);
|
|
}
|
|
|
|
pWnd = NULL;
|
|
pWnd = GetDlgItem(IDC_EDT_NEWFLANGETHICK);
|
|
if (pWnd != NULL)
|
|
{
|
|
pWnd->EnableWindow(FALSE);
|
|
}
|
|
|
|
|
|
// 为异径管管径添加数据
|
|
CodeBase db;
|
|
XString fullFile;
|
|
if(!FindFile(_T("PipeReducer.dbf"), fullFile))
|
|
{
|
|
Callme(_T("对不起,没有发现PipeReducer.dbf文件!"));
|
|
return;
|
|
}
|
|
|
|
XDbfTable *pTable = db.Open(fullFile);
|
|
if(!pTable)
|
|
{
|
|
Callme(_T("PipeReducer.dbf文件出错!"));
|
|
return;
|
|
}
|
|
|
|
int nType = 0;
|
|
double dDn1 = 0.0, dDn2 = 0.0;
|
|
std::set<double> setData;
|
|
double dPipeDia = GetNewPipeDiameter();
|
|
pTable->MoveFirst();
|
|
while(!pTable->IsEOF())
|
|
{
|
|
GET_FIELD(pTable, _T("Type"), nType);
|
|
if (m_nWndRadPipeType == 0)
|
|
{
|
|
if (nType == 0) //同心
|
|
{
|
|
GET_FIELD(pTable, _T("Dn1"), dDn1);
|
|
GET_FIELD(pTable, _T("Dn2"), dDn2);
|
|
if (fabs(m_dWndEdtOldPipeDia - dDn1) < 1e-3)
|
|
{
|
|
setData.insert(dDn2);
|
|
}
|
|
else if (fabs(m_dWndEdtOldPipeDia - dDn2) < 1e-3)
|
|
{
|
|
setData.insert(dDn1);
|
|
}
|
|
}
|
|
}
|
|
else if (m_nWndRadPipeType == 1 || m_nWndRadPipeType == 2)
|
|
{
|
|
if (nType == 1) //偏心
|
|
{
|
|
GET_FIELD(pTable, _T("Dn1"), dDn1);
|
|
GET_FIELD(pTable, _T("Dn2"), dDn2);
|
|
if (fabs(m_dWndEdtOldPipeDia - dDn1) < 1e-3)
|
|
{
|
|
setData.insert(dDn2);
|
|
}
|
|
else if (fabs(m_dWndEdtOldPipeDia - dDn2) < 1e-3)
|
|
{
|
|
setData.insert(dDn1);
|
|
}
|
|
}
|
|
}
|
|
pTable->MoveNext();
|
|
}
|
|
|
|
std::set<double>::iterator it;
|
|
CString strTmp;
|
|
m_wndCmbPipeDiameter.Clear();
|
|
for (it = setData.begin(); it != setData.end(); it++)
|
|
{
|
|
strTmp.Format(_T("%f"), *it);
|
|
strTmp.TrimRight(_T("0"));
|
|
strTmp.TrimRight(_T("."));
|
|
m_wndCmbPipeDiameter.AddString(strTmp);
|
|
}
|
|
|
|
// 设置压力值
|
|
int i = m_wndCmbPipePressure.FindString(0, m_strPressure);
|
|
if (i != -1)
|
|
{
|
|
m_wndCmbPipePressure.SetCurSel(i);
|
|
}
|
|
|
|
pWnd = GetDlgItem(IDC_EDT_OLDPRESSURE);
|
|
if (pWnd != NULL)
|
|
{
|
|
if (fabs(m_dWndEdtOldPressure - 1.0) < 1e-3)
|
|
{
|
|
pWnd->SetWindowText(_T("1.0"));
|
|
}
|
|
else if (fabs(m_dWndEdtOldPressure - 0.6) < 1e-3)
|
|
{
|
|
pWnd->SetWindowText(_T("0.6"));
|
|
}
|
|
else if (fabs(m_dWndEdtOldPressure - 0.25) < 1e-3)
|
|
{
|
|
pWnd->SetWindowText(_T("0.25"));
|
|
}
|
|
else if (fabs(m_dWndEdtOldPressure - 1.6) < 1e-3)
|
|
{
|
|
pWnd->SetWindowText(_T("1.6"));
|
|
}
|
|
}
|
|
|
|
// 设置管子直径
|
|
strTmp.Format(_T("%.0f"), m_dNewPipeDiameter);
|
|
i = m_wndCmbPipeDiameter.FindString(0, strTmp);
|
|
if (i != -1)
|
|
{
|
|
m_wndCmbPipeDiameter.SetCurSel(i);
|
|
}
|
|
else
|
|
{
|
|
m_wndCmbPipeDiameter.SetCurSel(0);
|
|
}
|
|
}
|
|
|
|
BOOL CDoubleLinePipeReducerEditDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
Init();
|
|
if (m_nLinkType == eFlangeLInk)
|
|
{
|
|
OnSelchangeCmbNewpressure();
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
void CDoubleLinePipeReducerEditDlg::OnSelchangeCmbNewpressure()
|
|
{
|
|
if (m_nLinkType == eJointing)
|
|
{
|
|
m_dWndEdtNewFlangeDia = 0.0;
|
|
m_dWndEdtNewFlangeThick = 0.0;
|
|
return;
|
|
}
|
|
|
|
int nIndex1 = m_wndCmbPipePressure.GetCurSel();
|
|
int nIndex2 = m_wndCmbPipeDiameter.GetCurSel();
|
|
if (nIndex1 != -1 && nIndex2 != -1)
|
|
{
|
|
CString strTemp;
|
|
m_wndCmbPipePressure.GetLBText(nIndex1, strTemp);
|
|
|
|
std::map<CString, std::vector<FLANGEDATA> >::iterator iter;
|
|
iter = m_mapFlangeData.find(strTemp);
|
|
if (iter != m_mapFlangeData.end())
|
|
{
|
|
double dDia = 0.0;
|
|
m_wndCmbPipeDiameter.GetLBText(nIndex2, strTemp);
|
|
dDia = _tstof(strTemp);
|
|
std::vector<FLANGEDATA>::iterator it;
|
|
for (it = (*iter).second.begin(); it != (*iter).second.end(); it++)
|
|
{
|
|
if (fabs((*it).dPipeDiameter - dDia) < 1e-3)
|
|
{
|
|
m_dWndEdtNewFlangeDia = (*it).dFlangeDiameter;
|
|
m_dWndEdtNewFlangeThick = (*it).dFlangeThick;
|
|
UpdateData(FALSE);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CDoubleLinePipeReducerEditDlg::OnOK()
|
|
{
|
|
CWnd *pWnd = NULL;
|
|
pWnd = GetDlgItem(IDC_CMB_NEWPIPEDIAMETER);
|
|
if (pWnd != NULL)
|
|
{
|
|
CString strTemp;
|
|
pWnd->GetWindowText(strTemp);
|
|
m_dNewPipeDiameter = _tstof(strTemp);
|
|
}
|
|
QueryData();
|
|
|
|
CDialog::OnOK();
|
|
}
|
|
|
|
void CDoubleLinePipeReducerEditDlg::OnSelchangeCmbNewpipediameter()
|
|
{
|
|
CWnd *pWnd = NULL;
|
|
pWnd = GetDlgItem(IDC_CMB_NEWPIPEDIAMETER);
|
|
if (pWnd != NULL)
|
|
{
|
|
CString strTemp;
|
|
pWnd->GetWindowText(strTemp);
|
|
m_dNewPipeDiameter = _tstof(strTemp);
|
|
}
|
|
OnSelchangeCmbNewpressure(); // 调整法兰参数
|
|
OpenSlide(); // 更改幻灯片
|
|
}
|
|
|
|
void CDoubleLinePipeReducerEditDlg::OnRadio1()
|
|
{
|
|
OpenSlide(); // 更改幻灯片
|
|
}
|
|
|
|
void CDoubleLinePipeReducerEditDlg::QueryData()
|
|
{
|
|
CodeBase db;
|
|
XString fullFile;
|
|
if(!FindFile(_T("PipeReducer.dbf"), fullFile))
|
|
{
|
|
Callme(_T("对不起,没有发现PipeReducer.dbf文件!"));
|
|
return;
|
|
}
|
|
|
|
XDbfTable *pTable = db.Open(fullFile);
|
|
if(!pTable)
|
|
{
|
|
Callme(_T("PipeReducer.dbf文件出错!"));
|
|
return;
|
|
}
|
|
|
|
pTable->MoveFirst();
|
|
int nType = 0;
|
|
double dDn1 = 0.0, dDn2 = 0.0;
|
|
UpdateData(TRUE);
|
|
double dPipeDia = GetNewPipeDiameter();
|
|
while(!pTable->IsEOF())
|
|
{
|
|
GET_FIELD(pTable, _T("Type"), nType);
|
|
if (m_nWndRadPipeType == 0)
|
|
{
|
|
if (nType == 0) //同心
|
|
{
|
|
GET_FIELD(pTable, _T("Dn1"), dDn1);
|
|
GET_FIELD(pTable, _T("Dn2"), dDn2);
|
|
if (fabs(m_dWndEdtOldPipeDia - dDn1) < 1e-3 && fabs(dPipeDia - dDn2) < 1e-3)
|
|
{
|
|
GET_FIELD(pTable, _T("H1"), m_dH1);
|
|
GET_FIELD(pTable, _T("H2"), m_dH2);
|
|
GET_FIELD(pTable, _T("L"), m_dL);
|
|
break;
|
|
}
|
|
else if (fabs(m_dWndEdtOldPipeDia - dDn2) < 1e-3 && fabs(dPipeDia - dDn1) < 1e-3)
|
|
{
|
|
GET_FIELD(pTable, _T("H1"), m_dH2);
|
|
GET_FIELD(pTable, _T("H2"), m_dH1);
|
|
GET_FIELD(pTable, _T("L"), m_dL);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (m_nWndRadPipeType == 1 || m_nWndRadPipeType == 2)
|
|
{
|
|
if (nType == 1) //偏心
|
|
{
|
|
GET_FIELD(pTable, _T("Dn1"), dDn1);
|
|
GET_FIELD(pTable, _T("Dn2"), dDn2);
|
|
if (fabs(m_dWndEdtOldPipeDia - dDn1) < 1e-3 && fabs(dPipeDia - dDn2) < 1e-3)
|
|
{
|
|
GET_FIELD(pTable, _T("H1"), m_dH1);
|
|
GET_FIELD(pTable, _T("H2"), m_dH2);
|
|
GET_FIELD(pTable, _T("L"), m_dL);
|
|
break;
|
|
}
|
|
else if (fabs(m_dWndEdtOldPipeDia - dDn2) < 1e-3 && fabs(dPipeDia - dDn1) < 1e-3)
|
|
{
|
|
GET_FIELD(pTable, _T("H1"), m_dH2);
|
|
GET_FIELD(pTable, _T("H2"), m_dH1);
|
|
GET_FIELD(pTable, _T("L"), m_dL);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
pTable->MoveNext();
|
|
}
|
|
|
|
if (m_nLinkType == eJointing)
|
|
{
|
|
m_dH1 = 0.0;
|
|
m_dH2 = 0.0;
|
|
}
|
|
}
|