724 lines
18 KiB
C++
724 lines
18 KiB
C++
#include "stdafx.h"
|
|
#include "PipeMajDlg.h"
|
|
#include "KTModelLayoutXData.h"
|
|
#include "coretools.h"
|
|
#include "PipelineTools.h"
|
|
|
|
#ifndef _BYGB_
|
|
#define _BYGB_ _T("按执行标准")
|
|
#endif
|
|
extern double g_minRadio;
|
|
|
|
IMPLEMENT_DYNAMIC(CPipeMajDlg, CDialog)
|
|
|
|
CPipeMajDlg::CPipeMajDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CPipeMajDlg::IDD, pParent)
|
|
, m_sMertialFit(_T("碳钢"))
|
|
, m_sMertial(_T("碳钢"))
|
|
{
|
|
m_pDb = NULL;
|
|
m_nDN = 100;
|
|
m_dOD = 107;
|
|
m_dt = 3.5;
|
|
m_dPress = 1.0;
|
|
m_sPress = _T("1.6A");
|
|
m_bPressureSel = TRUE;
|
|
m_bUpdateMat = FALSE;
|
|
m_nColorIndex = 256;
|
|
m_nOnlyDN = 0;
|
|
m_nRadioOn = 1;
|
|
}
|
|
|
|
CPipeMajDlg::~CPipeMajDlg()
|
|
{
|
|
|
|
}
|
|
|
|
void CPipeMajDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
DDX_Control(pDX, IDC_PIPELIST, m_wndPipeList);
|
|
DDX_Control(pDX, IDC_LISTELBOWRAD, m_wndElbowradList);
|
|
DDX_Control(pDX, IDC_LIST1, m_wndPressList);
|
|
DDX_Control(pDX, IDC_LIST2, m_wndPressList2);
|
|
DDX_Control(pDX, IDC_COMBO_SYS, m_wndComboPipeSys);
|
|
DDX_Text(pDX,IDC_EDIT1,m_nDN);
|
|
DDX_Text(pDX,IDC_EDIT2,m_dOD);
|
|
DDX_Text(pDX,IDC_EDIT3,m_dt);
|
|
DDX_Text(pDX,IDC_EDIT4,m_sPress);
|
|
DDX_Text(pDX,IDC_EDIT5,m_dRatio);
|
|
DDX_Radio(pDX, IDC_RADIO6, m_nRadioOn);
|
|
DDX_Text(pDX,IDC_EDIT6,m_dPress);
|
|
DDX_Check(pDX,IDC_CHECK1,m_bPressureSel);
|
|
DDX_Check(pDX,IDC_CHECK2,m_bUpdateMat);
|
|
|
|
DDX_CBString(pDX, IDC_COMBOMATERS, m_sMertial);
|
|
DDX_Control(pDX, IDC_COMBOMATERS, m_wndComboMaters);
|
|
DDX_Control(pDX, IDC_COMBOMATERSFIT, m_wndComboMatersFit);
|
|
DDX_CBString(pDX, IDC_COMBOMATERSFIT, m_sMertialFit);
|
|
DDX_CBString(pDX, IDC_COMBO_SYS, m_sPipeSys);
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CPipeMajDlg, CDialog)
|
|
ON_BN_CLICKED(IDC_CHECK1,&CPipeMajDlg::OnCheckPressSwitch)
|
|
ON_BN_CLICKED(IDC_CHECK2,&CPipeMajDlg::OnCheckUpdateMat)
|
|
END_MESSAGE_MAP()
|
|
|
|
//UPVC CPVC PVC-C PP-H (PE) HDPE
|
|
bool CPipeMajDlg::IsPlasticsMat(int nPos, CString &sODNo)
|
|
{
|
|
const CString sPlastic = _T("UPVC CPVC PVC-C PP-H (PE) PE100 HDPE");
|
|
|
|
CStringArray arTxts;
|
|
CoreTools::SplitStrintToArray(sPlastic, arTxts, _T(' '));
|
|
|
|
for (int i = 0; i < arTxts.GetSize(); i++)
|
|
{
|
|
if (nPos == 0)
|
|
{
|
|
if (m_sMertial.Find(arTxts.GetAt(i)) != -1)
|
|
{
|
|
sODNo = arTxts.GetAt(i);
|
|
|
|
//以下 PVC-C PP-H PE100 的国标数据 替代 PVC
|
|
if (sODNo.CompareNoCase(_T("PVC-C")) == 0)
|
|
sODNo = _T("CPVC");
|
|
|
|
if (sODNo.Find(_T("(PE)")) == 0)
|
|
sODNo = _T("PE");
|
|
|
|
if (sODNo.CompareNoCase(_T("PE100")) == 0)
|
|
sODNo = _T("PE");
|
|
|
|
if (sODNo.CompareNoCase(_T("(PE100)")) == 0)
|
|
sODNo = _T("PE");
|
|
|
|
return true;
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
if (m_sMertialFit.Find(arTxts.GetAt(i)) != -1)
|
|
{
|
|
sODNo = arTxts.GetAt(i);
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
BOOL CPipeMajDlg::IsGSFMaterial(CString &sODNo)
|
|
{
|
|
//目前只能按照材质判断
|
|
if (m_sMertial.Find(_T("衬塑")) != -1 ||
|
|
m_sMertial.Find(_T("HG/T 20538")) != -1)
|
|
{
|
|
sODNo = _T("GSF");
|
|
return TRUE;
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
BOOL CPipeMajDlg::IsRCPMaterial(CString &sODNo)
|
|
{
|
|
//目前只能按照材质判断
|
|
if (m_sMertial.Find(_T("混凝土")) != -1)
|
|
{
|
|
sODNo = _T("RCP");
|
|
return TRUE;
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
BOOL CPipeMajDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
//4K
|
|
int iWidth = GetSystemMetrics(SM_CXSCREEN);
|
|
int iHeight = GetSystemMetrics(SM_CYSCREEN);
|
|
int nAdd = 0;
|
|
if (iWidth >= 3800 && iHeight >= 2400)//4K
|
|
{
|
|
nAdd = 45;
|
|
}
|
|
|
|
//LIST
|
|
m_wndPipeList.SetExtendedStyle(LVS_EX_FULLROWSELECT);
|
|
m_wndPipeList.InsertColumn(0, _T("DN"), LVCFMT_LEFT, 70 + nAdd);
|
|
m_wndPipeList.InsertColumn(1, _T("外径"), LVCFMT_LEFT, 70 + nAdd);
|
|
m_wndPipeList.InsertColumn(2, _T("壁厚"), LVCFMT_LEFT, 60 + nAdd);
|
|
m_wndPipeList.InsertColumn(3, _T("重量"), LVCFMT_LEFT, 62 + nAdd);
|
|
m_wndPipeList.InsertColumn(4, _T("表号"), LVCFMT_LEFT, 65 + nAdd);
|
|
m_wndPipeList.InsertColumn(5, _T("外径系列"), LVCFMT_CENTER, 80 + nAdd);
|
|
|
|
//EXT
|
|
m_wndPipeList.InsertColumn(6, _T("执行标准"), LVCFMT_LEFT, 300 + nAdd);
|
|
//m_wndPipeList.InsertColumn(7, _T("物料描述"), LVCFMT_LEFT, 0);
|
|
//m_wndPipeList.InsertColumn(8, _T("规格型号"), LVCFMT_LEFT, 0);
|
|
|
|
if (m_pDb != NULL)
|
|
{
|
|
|
|
CString sODNo = m_param.szODSn;
|
|
//再次确认
|
|
IsGSFMaterial(sODNo);
|
|
|
|
IsPlasticsMat(0, sODNo);
|
|
|
|
InitPipeList(50000, sODNo);
|
|
|
|
InitPressFromDb();
|
|
|
|
CStringArray arVals;
|
|
PipelineTools::getPipeSysRecord(m_pDb, m_sPipeSys, arVals);
|
|
if (arVals.GetSize() >= 5)
|
|
{
|
|
m_nColorIndex = _ttoi(arVals.GetAt(2));
|
|
}
|
|
}
|
|
|
|
if (m_bPressureSel)
|
|
{
|
|
m_wndPressList2.ShowWindow(SW_SHOW);
|
|
m_wndPressList.ShowWindow(SW_HIDE);
|
|
}
|
|
else
|
|
{
|
|
m_wndPressList2.ShowWindow(SW_HIDE);
|
|
m_wndPressList.ShowWindow(SW_SHOW);
|
|
}
|
|
|
|
m_wndComboMatersFit.EnableWindow(m_bUpdateMat);
|
|
m_wndComboMaters.EnableWindow(m_bUpdateMat);
|
|
m_wndComboPipeSys.EnableWindow(m_bUpdateMat);
|
|
|
|
|
|
UpdateData(FALSE);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CPipeMajDlg::OnOK()
|
|
{
|
|
UpdateData();
|
|
|
|
POSITION ps = m_wndPipeList.GetFirstSelectedItemPosition();
|
|
if (ps != NULL)
|
|
{
|
|
int nItem = m_wndPipeList.GetNextSelectedItem(ps);
|
|
if (nItem != -1)
|
|
{
|
|
m_param.m_dDN = _ttof(m_wndPipeList.GetItemText(nItem,0));
|
|
m_param.m_dOD = _ttof(m_wndPipeList.GetItemText(nItem,1));
|
|
m_param.m_dThick = _ttof(m_wndPipeList.GetItemText(nItem,2));
|
|
_tcscpy(m_param.szODSn,m_wndPipeList.GetItemText(nItem, 5));
|
|
_tcscpy(m_param.szStdNo, m_wndPipeList.GetItemText(nItem, 6));
|
|
}
|
|
else
|
|
{
|
|
AfxMessageBox(_T("请选择管线规格系列!"));
|
|
return;
|
|
}
|
|
}
|
|
|
|
CString sText,sSQL;
|
|
int nSel = m_wndElbowradList.GetCurSel();
|
|
if (nSel != -1)
|
|
{
|
|
//曲率
|
|
m_wndElbowradList.GetText(nSel, sText);
|
|
if (sText.CompareNoCase(_BYGB_) == 0)
|
|
{
|
|
m_param.m_nRadioOn = TRUE;//按国标结构长度
|
|
m_param.m_dRRatio = g_minRadio;//最小
|
|
|
|
//根据ODSN查询数据库 默认曲率
|
|
sSQL.Format(_T("select distinct [弯头曲率] from [AecElbowData] where [外径系列]='%s' order by [弯头曲率]"), m_param.szODSn);
|
|
CStringArray arRad;
|
|
m_pDb->GetSelData(sSQL, arRad);
|
|
if (arRad.GetSize() > 0)
|
|
{
|
|
m_param.m_dRRatio = _ttof(arRad.GetAt(0));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
m_param.m_dRRatio = _ttof(sText);
|
|
}
|
|
}
|
|
|
|
//不可变换等级
|
|
/*nSel = m_wndPressList.GetCurSel();
|
|
if (nSel != -1)
|
|
{
|
|
sText = _T("");
|
|
m_wndPressList.GetText(nSel,sText);
|
|
_tcscpy(m_param.szLevel,(LPCTSTR)sText);
|
|
}*/
|
|
|
|
m_dPress = 1.0;
|
|
nSel = m_wndPressList2.GetCurSel();
|
|
if (nSel != -1)
|
|
{
|
|
sText = _T("");
|
|
m_wndPressList2.GetText(nSel,sText);
|
|
m_dPress = _ttof(sText);
|
|
}
|
|
|
|
if (m_param.m_nConnectType == 3)//法兰管
|
|
{
|
|
//查询法兰管的法兰数据
|
|
QueryFlangOnPipe();
|
|
}
|
|
|
|
if (m_bUpdateMat)
|
|
{
|
|
CString sODNo = m_param.szODSn;
|
|
CString sBk = m_sMertial;
|
|
m_sMertial = m_param.szMertial;
|
|
BOOL bIsPla1 = IsPlasticsMat(0, sODNo);
|
|
BOOL bIsGasf1 = IsGSFMaterial(sODNo);
|
|
BOOL bIsRcp1 = IsRCPMaterial(sODNo);
|
|
|
|
m_sMertial = sBk;
|
|
BOOL bIsPla2 = IsPlasticsMat(0,m_sMertial);
|
|
BOOL bIsGasf2 = IsGSFMaterial(sODNo);
|
|
BOOL bIsRcp2 = IsRCPMaterial(sODNo);
|
|
|
|
//1.
|
|
if (bIsPla1 && !bIsPla2)
|
|
{
|
|
if (sBk.CompareNoCase(m_param.szMertial) != 0)
|
|
{
|
|
AfxMessageBox(_T("不可以从塑料管切换成非塑料管!"));
|
|
return;
|
|
}
|
|
}
|
|
if (!bIsPla1 && bIsPla2)
|
|
{
|
|
if (sBk.CompareNoCase(m_param.szMertial) != 0)
|
|
{
|
|
AfxMessageBox(_T("不可以从非塑料管切换成塑料管!"));
|
|
return;
|
|
}
|
|
}
|
|
|
|
//2.
|
|
if (bIsGasf1 && !bIsGasf2)
|
|
{
|
|
if (sBk.CompareNoCase(m_param.szMertial) != 0)
|
|
{
|
|
AfxMessageBox(_T("不可以从衬塑管切换成非衬塑管!"));
|
|
return;
|
|
}
|
|
}
|
|
if (!bIsGasf1 && bIsGasf2)
|
|
{
|
|
if (sBk.CompareNoCase(m_param.szMertial) != 0)
|
|
{
|
|
AfxMessageBox(_T("不可以从非衬塑管切换成衬塑管!"));
|
|
return;
|
|
}
|
|
}
|
|
|
|
//3.
|
|
if (bIsRcp1 && !bIsGasf2)
|
|
{
|
|
if (sBk.CompareNoCase(m_param.szMertial) != 0)
|
|
{
|
|
AfxMessageBox(_T("不可以从水泥管切换成非水泥管!"));
|
|
return;
|
|
}
|
|
}
|
|
if (!bIsRcp1 && bIsGasf2)
|
|
{
|
|
if (sBk.CompareNoCase(m_param.szMertial) != 0)
|
|
{
|
|
AfxMessageBox(_T("不可以从非水泥管切换成水泥管!"));
|
|
return;
|
|
}
|
|
}
|
|
|
|
_tcscpy(m_param.szMertial,m_sMertial);
|
|
_tcscpy(m_param.szMertialFit,m_sMertialFit);
|
|
if (m_sPipeSys != _T("不修改管线系统"))
|
|
{
|
|
_tcscpy(m_param.szSys, m_sPipeSys);
|
|
|
|
CStringArray arVals;
|
|
PipelineTools::getPipeSysRecord(m_pDb, m_sPipeSys, arVals);
|
|
if (arVals.GetSize() >= 5)
|
|
{
|
|
m_nColorIndex = _ttoi(arVals.GetAt(2));
|
|
}
|
|
}
|
|
}
|
|
|
|
EndDialog(IDOK);
|
|
}
|
|
|
|
void CPipeMajDlg::OnCheckPressSwitch()
|
|
{
|
|
UpdateData();
|
|
|
|
if (m_bPressureSel)
|
|
{
|
|
m_wndPressList2.ShowWindow(SW_SHOW);
|
|
m_wndPressList.ShowWindow(SW_HIDE);
|
|
}
|
|
else
|
|
{
|
|
m_wndPressList2.ShowWindow(SW_HIDE);
|
|
m_wndPressList.ShowWindow(SW_SHOW);
|
|
}
|
|
}
|
|
|
|
void CPipeMajDlg::OnCheckUpdateMat()
|
|
{
|
|
UpdateData();
|
|
|
|
m_wndComboMaters.EnableWindow(m_bUpdateMat);
|
|
m_wndComboMatersFit.EnableWindow(m_bUpdateMat);
|
|
m_wndComboPipeSys.EnableWindow(m_bUpdateMat);
|
|
}
|
|
|
|
void CPipeMajDlg::QueryFlangOnPipe()
|
|
{
|
|
double dWD, dWh, dd;
|
|
if (CoreTools::QueryFlangData(m_pDb
|
|
, m_param.m_dDN
|
|
, m_dPress
|
|
, dWD
|
|
, dWh
|
|
, dd
|
|
, dd
|
|
, CoreTools::GetCurrentProject()
|
|
, m_param.szLevel))
|
|
{
|
|
m_param.m_dInterfaceL = dWh;
|
|
m_param.m_dInterfaceD = dWD;
|
|
}
|
|
}
|
|
|
|
void CPipeMajDlg::SetDbServer(CUIISQLiteServer* pDb)
|
|
{
|
|
m_pDb = pDb;
|
|
}
|
|
|
|
void CPipeMajDlg::InitPipeList(int nMaxDN, CString sODNo)
|
|
{
|
|
if (m_pDb != NULL)
|
|
{
|
|
m_wndPipeList.DeleteAllItems();
|
|
|
|
//公称直径系列
|
|
bool bMODSN = false;
|
|
CString sSQL, sText, sODAWhere = _T("");
|
|
if (sODNo.CompareNoCase(_T("A")) == 0 || sODNo.CompareNoCase(_T("B")) == 0 || sODNo.IsEmpty())
|
|
{
|
|
sODAWhere = _T("([外径系列]='A' or [外径系列]='B' or [外径系列]='S')");
|
|
bMODSN = true;
|
|
}
|
|
else
|
|
{
|
|
sODAWhere.Format(_T("[外径系列]='%s'"), sODNo);
|
|
}
|
|
|
|
/*
|
|
//公称直径系列
|
|
CString sSQL, sText;
|
|
#ifdef HAITIAN
|
|
if (m_nOnlyDN == 0)
|
|
{
|
|
sSQL = _T("select [公称直径],[外径],[壁厚],[重量],[执行标准],[物料描述],[规格型号] from AecOD order by [公称直径],[壁厚]");
|
|
}
|
|
else
|
|
{
|
|
sSQL.Format(_T("select [公称直径],[外径],[壁厚],[重量],[执行标准],[物料描述],[规格型号] from AecOD where [公称直径]=%d order by [公称直径],[壁厚]"), m_nOnlyDN);
|
|
}
|
|
#else
|
|
if (m_nOnlyDN == 0)
|
|
{
|
|
sSQL.Format(_T("select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列] from AecOD where [公称直径]<%d and [外径系列]='%s' order by [公称直径],[壁厚],[表号]"), nMaxDN, sODNo);
|
|
}
|
|
else
|
|
{
|
|
sSQL.Format(_T("select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列] from AecOD where [公称直径]=%d and [外径系列]='%s' order by [公称直径],[壁厚],[表号]"), m_nOnlyDN, sODNo);
|
|
}
|
|
#endif
|
|
CUIIValueTable table;
|
|
m_pDb->GetSelData(sSQL, table);
|
|
|
|
if (table.GetTableLogicSize() == 0)
|
|
{
|
|
//按外径选
|
|
sSQL.Format(_T("select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列] from AecOD where [外径]<=%d and [外径系列]='%s' order by [公称直径],[壁厚],[表号]"), m_nOnlyDN, sODNo);
|
|
m_pDb->GetSelData(sSQL, table);
|
|
}*/
|
|
|
|
|
|
if (m_nOnlyDN == 0)
|
|
{
|
|
//sSQL.Format(_T("select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列] from AecOD where [公称直径]<%d and %s order by [公称直径],[壁厚],[外径系列],[表号]"), nMaxDN, sODAWhere);
|
|
if (bMODSN)
|
|
{
|
|
sSQL.Format(_T("select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列],[标准] from AecOD where [公称直径]<=%d and %s order by [外径系列] desc"), nMaxDN, sODAWhere);
|
|
}
|
|
else
|
|
{
|
|
sSQL.Format(_T("select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列],[标准] from AecOD where [公称直径]<=%d and %s order by [外径系列],[公称直径],[壁厚]"), nMaxDN, sODAWhere);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//sSQL.Format(_T("select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列] from AecOD where [公称直径]=%d and %s order by [公称直径],[壁厚],[外径系列],[表号]"), m_nOnlyDN, sODAWhere);
|
|
sSQL.Format(_T("select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列],[标准] from AecOD where [公称直径]=%d and %s order by [外径系列],[公称直径],[壁厚] desc"), m_nOnlyDN, sODAWhere);//
|
|
}
|
|
|
|
CUIIValueTable table;
|
|
m_pDb->GetSelData(sSQL, table);
|
|
|
|
if (table.GetTableLogicSize() == 0)
|
|
{
|
|
//按外径选
|
|
//sSQL.Format(_T("select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列] from AecOD where [外径]<=%d and %s order by [公称直径],[壁厚],[外径系列],[表号]"), m_nOnlyDN, sODAWhere);
|
|
|
|
//按外径选
|
|
int nDN = (m_nOnlyDN == 0) ? nMaxDN : m_nOnlyDN;
|
|
|
|
if (bMODSN)
|
|
{
|
|
sSQL.Format(_T("select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列],[标准] from AecOD where [外径]<=%d and %s order by [外径系列]"), nDN, sODAWhere);
|
|
}
|
|
else
|
|
{
|
|
sSQL.Format(_T("select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列],[标准] from AecOD where [外径]<=%d and %s order by [外径系列],[公称直径],[壁厚]"), nDN, sODAWhere);
|
|
}
|
|
m_pDb->GetSelData(sSQL, table);
|
|
}
|
|
|
|
table.ShowToListCtrl(&m_wndPipeList);
|
|
|
|
CString sDnold, sThick,sODNo2;
|
|
sDnold.Format(_T("%d"), m_nDN);
|
|
|
|
int iStart = -1;
|
|
bool bFind = false;
|
|
for (int i = 0; i < m_wndPipeList.GetItemCount(); i++)
|
|
{
|
|
sText = m_wndPipeList.GetItemText(i, 0);
|
|
sThick = m_wndPipeList.GetItemText(i, 2);
|
|
sODNo2 = m_wndPipeList.GetItemText(i, 5);
|
|
|
|
if (sText.CompareNoCase(sDnold) == 0 && iStart == -1)
|
|
iStart = i;
|
|
|
|
if (sText.CompareNoCase(sDnold) == 0 && fabs(_ttof(sThick) - m_dt) < 1.e-6 && sODNo2.CompareNoCase(sODNo) == 0)
|
|
{
|
|
iStart = i;
|
|
m_wndPipeList.SetItemState(i, LVIS_SELECTED, LVIS_SELECTED);
|
|
m_wndPipeList.EnsureVisible(i, TRUE);
|
|
bFind = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (!bFind)
|
|
{
|
|
if (iStart == -1) iStart = 0;
|
|
|
|
if (m_wndPipeList.GetItemCount() > 0)
|
|
m_wndPipeList.SetItemState(iStart, LVIS_SELECTED, LVIS_SELECTED);
|
|
m_wndPipeList.EnsureVisible(iStart, TRUE);
|
|
}
|
|
|
|
//曲率半径
|
|
//sSQL = _T("select [曲率半径] from AecElbowradius order by [曲率半径]");
|
|
sSQL.Format(_T("select distinct [弯头曲率] from AecElbowData where %s order by [弯头曲率]"), sODAWhere);
|
|
|
|
int nSel = 0;
|
|
CString sRat;
|
|
CStringArray arVals;
|
|
arVals.Add(_BYGB_);
|
|
m_pDb->GetSelData(sSQL,arVals);
|
|
for ( i = 0;i < arVals.GetSize();i++)
|
|
{
|
|
m_wndElbowradList.InsertString(i,arVals.GetAt(i));
|
|
sRat = arVals.GetAt(i);
|
|
if ( fabs(_ttof(sRat) - m_param.m_dRRatio) < 1.e-6)
|
|
{
|
|
nSel = i;
|
|
if ((m_param.m_dRRatio - g_minRadio) < 1.e-3)
|
|
nSel = 0;
|
|
}
|
|
}
|
|
m_wndElbowradList.SetCurSel(nSel);
|
|
|
|
//材质
|
|
arVals.RemoveAll();
|
|
sSQL = _T("select [材质] from AecMaterial where [类型]='管道'");
|
|
m_pDb->GetSelData(sSQL,arVals);
|
|
|
|
for (i = 0;i < arVals.GetSize();i++)
|
|
{
|
|
m_wndComboMaters.InsertString(i,arVals.GetAt(i));
|
|
|
|
if (m_sMertial.CompareNoCase(arVals.GetAt(i)) == 0)
|
|
{
|
|
m_wndComboMaters.SetCurSel(i);
|
|
}
|
|
}
|
|
|
|
//材质
|
|
arVals.RemoveAll();
|
|
sSQL = _T("select [材质] from AecMaterial where [类型]='管件'");
|
|
m_pDb->GetSelData(sSQL,arVals);
|
|
|
|
for (i = 0;i < arVals.GetSize();i++)
|
|
{
|
|
m_wndComboMatersFit.InsertString(i,arVals.GetAt(i));
|
|
|
|
if (m_sMertialFit.CompareNoCase(arVals.GetAt(i)) == 0)
|
|
{
|
|
m_wndComboMatersFit.SetCurSel(i);
|
|
}
|
|
}
|
|
|
|
// 初始化管线系统
|
|
{
|
|
CString sStd(CoreTools::getCurrentPipeSysTblName()), sTemp;
|
|
//sSQL = _T("select tablename from wpipecfg where currstd=1");
|
|
//m_pDb->GetSelData(sSQL, sStd);
|
|
|
|
sSQL.Format(_T("select distinct system from %s"), sStd);
|
|
CStringArray arSyses;
|
|
m_pDb->GetSelData(sSQL, arSyses);
|
|
m_wndComboPipeSys.AddString(_T("不修改管线系统"));
|
|
for (int i = 0; i < arSyses.GetSize(); i++)
|
|
{
|
|
sTemp = arSyses.GetAt(i);
|
|
m_wndComboPipeSys.AddString(sTemp);
|
|
}
|
|
|
|
//再从图层中加一遍
|
|
|
|
m_wndComboPipeSys.SetCurSel(0);
|
|
}
|
|
}
|
|
}
|
|
|
|
void CPipeMajDlg::InitPressFromDb()
|
|
{
|
|
//获取项目名称
|
|
AecDbObjXDataMap xDataMap;
|
|
xDataMap.SetAt(DOC_TRADE, WPipe::ePetro); //应用行业,石油
|
|
xDataMap.SetAt(DOC_SCALE, _T("1:50")); //出图比例
|
|
xDataMap.SetAt(DOC_PLOTWIDTH, 0.5); //最小打印线宽
|
|
xDataMap.SetAt(DOC_DPLOTWIDTH, 0.5); //双线打印线宽
|
|
|
|
xDataMap.SetAt(DOC_WELDDIA, 1.0); //焊点直径
|
|
xDataMap.SetAt(DOC_PIPEMINDIA, 65.0); //最小管道直径
|
|
xDataMap.SetAt(DOC_PIPEMAXDIA, 200.0); //最大管线直径
|
|
xDataMap.SetAt(DOC_PERELBOWDIA, 40.0); //垂直弯头直径
|
|
xDataMap.SetAt(DOC_BREAKSPACE, 2.0); //交叉断线间距
|
|
xDataMap.SetAt(DOC_UNIT, 0); //单位
|
|
xDataMap.SetAt(DOC_DIMTERM, 0); //标注端符
|
|
|
|
xDataMap.SetAt(DOC_DIMTXTH, 2.0); //标注文字高度
|
|
xDataMap.SetAt(DOC_DIMTXTF, 0.7); //标注文字宽度系数
|
|
|
|
xDataMap.SetAt(DOC_EQPTXTH, 2.0); //设备标注文字高度
|
|
xDataMap.SetAt(DOC_EQPTXTF, 1.0); //设备标注文字宽度系数
|
|
|
|
xDataMap.SetAt(DOC_STRTXTH, 2.0); //结构标注文字高度
|
|
xDataMap.SetAt(DOC_STRTXTF, 0.7); //结构标注文字宽度系数
|
|
|
|
xDataMap.SetAt(DOC_SCRIPTT, _T("{0}{-}{1}{-}{2}{-}{3}"));//上标脚本
|
|
xDataMap.SetAt(DOC_SCRIPTB, _T("{4}{-}{5}"));//下标脚本
|
|
xDataMap.SetAt(DOC_ELTYPE, 0); //标高设置
|
|
xDataMap.SetAt(DOC_ELDESCR, _T("--")); //标高文本
|
|
|
|
if (!KTModelLayoutXData::ReadModelXData(KT_PIPEINIT,xDataMap))
|
|
{
|
|
acedAlert(_T("\n系统未初始化!"));
|
|
return;
|
|
}
|
|
|
|
CString sProject;
|
|
xDataMap.GetAt(DOC_PIDPROJECT,sProject);
|
|
|
|
CString sSQL;
|
|
sSQL.Format(_T("select [等级名称] from AecSpecname where [项目名称]='%s'"),sProject);
|
|
|
|
CStringArray arValues;
|
|
m_pDb->GetSelData(sSQL,arValues);
|
|
|
|
m_wndPressList.ResetContent();
|
|
for (int i = 0;i < arValues.GetSize();i++)
|
|
{
|
|
m_wndPressList.InsertString(i,arValues.GetAt(i));
|
|
}
|
|
|
|
int nIndex = m_wndPressList.FindString(0,m_param.szLevel);//压力等级
|
|
if (nIndex != -1)
|
|
{
|
|
m_wndPressList.SetCurSel(nIndex);
|
|
}
|
|
else
|
|
{
|
|
m_wndPressList.SetCurSel(0);
|
|
}
|
|
|
|
//压力表
|
|
sSQL.Format(_T("select [压力] from aecpressure order by [压力]"));
|
|
arValues.RemoveAll();
|
|
m_pDb->GetSelData(sSQL,arValues);
|
|
|
|
m_wndPressList2.ResetContent();
|
|
for (int i = 0;i < arValues.GetSize();i++)
|
|
{
|
|
m_wndPressList2.InsertString(i,arValues.GetAt(i));
|
|
if ( fabs(_ttof(arValues.GetAt(i)) - m_dPress) < 1.e-3)
|
|
{
|
|
m_wndPressList2.SetCurSel(i);
|
|
}
|
|
}
|
|
}
|
|
|
|
void CPipeMajDlg::SetShowParam(WPipe::PipeParam* pParam)
|
|
{
|
|
if (pParam != NULL)
|
|
{
|
|
double dScale = CoreTools::IsMetersUnit() ? 1000. : 1;
|
|
|
|
memcpy(&m_param,pParam,sizeof(WPipe::PipeParam));
|
|
m_nDN = (int)(pParam->m_dDN * dScale + 0.5);
|
|
m_dOD = pParam->m_dOD * dScale;
|
|
m_dt = pParam->m_dThick * dScale;
|
|
m_dRatio = pParam->m_dRRatio;
|
|
m_nRadioOn = 1;// pParam->m_nRadioOn;
|
|
m_sPress = pParam->szLevel;
|
|
m_dPress = pParam->m_dPress;
|
|
m_sMertial = pParam->szMertial;
|
|
m_sMertialFit = pParam->szMertialFit;
|
|
//兼容
|
|
if (m_sMertial.Find(_T("衬塑")) != -1)
|
|
{
|
|
m_sMertial = _T("衬塑管");
|
|
m_sMertialFit = _T("衬塑管");
|
|
_tcscpy(m_param.szMertial, m_sMertial);
|
|
_tcscpy(m_param.szMertialFit, m_sMertialFit);
|
|
}
|
|
}
|
|
}
|
|
|
|
void CPipeMajDlg::GetPipeParam(WPipe::PipeParam* pParam) const
|
|
{
|
|
if (pParam != NULL)
|
|
{
|
|
memcpy(pParam,&m_param,sizeof(WPipe::PipeParam));
|
|
}
|
|
} |