2102 lines
50 KiB
C++
2102 lines
50 KiB
C++
#include "stdafx.h"
|
|
#include "WPipeDrawConfigDlg.h"
|
|
#include "KTModelLayoutXData.h"
|
|
#include "./syslayercfg/WSysLayCfgDlg.h"
|
|
#include "CoreTools.h"
|
|
#include "GZCLDlg.h"
|
|
#include "KTInsulateMainDlg.h"
|
|
#include "PipelineTools.h"
|
|
#include "CFLEndFGsDlg.h"
|
|
#include "AecPipeSupport.h"
|
|
#include "KTMediumDlg.h"
|
|
|
|
extern void DLLIMPEXP PipeParamConvert2UnitMeters(WPipe::PipeParam* pParam);
|
|
extern void DLLIMPEXP XDataMapToPipeParam(const AecDbObjXDataMap* pXDataMapSrc, WPipe::PipeParam* pParamL);
|
|
extern void DLLIMPEXP PipeParamConvert2UnitMmeters(WPipe::PipeParam* pParam);
|
|
|
|
#define _BYGB_ _T("按执行标准")
|
|
double g_minRadio = 1.0;
|
|
|
|
CWPipeDrawConfigDlg* CWPipeDrawConfigDlg::s_pwndLastData = NULL;
|
|
|
|
IMPLEMENT_DYNAMIC(CWPipeDrawConfigDlg, CDialog)
|
|
|
|
double CWPipeDrawConfigDlg::g_dMinRRadio = 1.0;
|
|
|
|
CWPipeDrawConfigDlg::CWPipeDrawConfigDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(IDD_WPIPEDRAWCFGDLG, pParent)
|
|
, m_nDDir(0)
|
|
, m_nConnectType(0)
|
|
, m_nRadioOn(1)
|
|
, m_sFEGSInf(_T(""))
|
|
, m_dFPLen(6000)
|
|
, m_dEl(0)
|
|
, m_nElSel(0)
|
|
, m_sSerNo(_T(""))
|
|
, m_sZoneNo(_T(""))
|
|
, m_sUnitNo(_T(""))
|
|
, m_sPipeNo(_T(""))
|
|
, m_sCurrSys(_T(""))
|
|
, m_sDescr(_T(""))
|
|
,m_sMaterial(_T("碳钢"))
|
|
,m_sMaterialFit(_T("碳钢"))
|
|
,m_sParamSetting(_T(""))
|
|
, m_bFlangNoBom(FALSE)
|
|
{
|
|
m_sODSn = _T("B");
|
|
m_sProject = _T("工业");
|
|
m_nTrade = WPipe::eCivial;
|
|
m_dDn = 100.0;
|
|
m_dOD = 114.0;
|
|
m_dThk = 7.0;
|
|
m_dRRatio = 2.0;
|
|
m_nOnlyDN = 0;
|
|
m_bEleReadOnly = FALSE;
|
|
m_bOnlyDn = FALSE;
|
|
m_sCurrSys = _T("");
|
|
m_sSerNo = _T("1000");
|
|
m_dInterfaceL = 0.0;//法兰管的法兰厚
|
|
m_dInterfaceD = 0.0;//法兰管的法兰外径
|
|
m_sLevel = _T("L91A");
|
|
m_dPressure = 1.0;
|
|
m_bLevelSel = TRUE;
|
|
m_sProject = _T("工业");
|
|
m_nTrade = WPipe::eCivial;
|
|
m_sFEGSInf = _T("");
|
|
m_szShtNo = _T("");
|
|
m_sUnitNo = _T("X");
|
|
m_sTraMtoInfo = _T("");
|
|
m_sTraDescr = _T("");
|
|
m_nRadioOn = 1;//强制为1查询不到计算
|
|
m_nColorIndex = 256;
|
|
m_sEndF1 = _T("");
|
|
m_sEndF2 = _T("");
|
|
m_sGaskets = _T("");
|
|
m_nSglorDBL = 1;
|
|
m_pDb = NULL;
|
|
m_bLoadLast = FALSE;
|
|
m_dInsThk = 20.0;
|
|
m_nElSel = 0;
|
|
|
|
UIHistory::readCache(FILE_NAME_INI
|
|
, _T("CWPipeDrawConfigDlg2") //新
|
|
, _T("%d%d%d%d%d%f%f%f%f%f%f%f%f%f%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%d")
|
|
, &m_nDDir //%d
|
|
, &m_nConnectType //%d
|
|
, &m_nRadioOn //%d
|
|
, &m_nSglorDBL //%d
|
|
, &m_bFlangNoBom //%d
|
|
, &m_dFPLen //%f
|
|
, &m_dEl //%f
|
|
, &m_dDn //%f
|
|
, &m_dOD //%f
|
|
, &m_dThk //%f
|
|
, &m_dRRatio //%f
|
|
, &m_dInterfaceL //%f
|
|
, &m_dInterfaceD //%f
|
|
, &m_dPressure //%f
|
|
, &m_sSerNo //%s
|
|
, &m_sZoneNo //%s
|
|
, &m_sUnitNo //%s
|
|
, &m_sPipeNo //%s
|
|
, &m_sCurrSys //%s
|
|
, &m_sDescr //%s
|
|
, &m_sMaterial //%s
|
|
, &m_sMaterialFit //%s
|
|
, &m_sParamSetting //%s
|
|
, &m_sODSn //%s
|
|
, &m_sLevel //%s
|
|
, &m_szShtNo //%s
|
|
, &m_sTraMtoInfo //%s
|
|
, &m_sTraDescr //%s
|
|
, &m_sEndF1 //%s
|
|
, &m_sEndF2 //%s
|
|
, &m_sFEGSInf //%s
|
|
, &m_sGaskets //%s
|
|
, &m_nElSel
|
|
);
|
|
// 所有管线标高都以管中心线为基准,所以,在这里还原m_nElSel
|
|
// 这样,双击弹出后,保证标高数据和标高基准数据可以匹配
|
|
m_nRadioOn = 1;//强制为1查询不到计算
|
|
m_nRadSel = 0;
|
|
}
|
|
|
|
CWPipeDrawConfigDlg::~CWPipeDrawConfigDlg()
|
|
{
|
|
UIHistory::writeCache(FILE_NAME_INI
|
|
, _T("CWPipeDrawConfigDlg2") //新
|
|
, _T("%d%d%d%d%d%f%f%f%f%f%f%f%f%f%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%d")
|
|
, m_nDDir //%d
|
|
, m_nConnectType //%d
|
|
, m_nRadioOn //%d
|
|
, m_nSglorDBL //%d
|
|
, m_bFlangNoBom //%d
|
|
, m_dFPLen //%f
|
|
, m_dEl //%f
|
|
, m_dDn //%f
|
|
, m_dOD //%f
|
|
, m_dThk //%f
|
|
, m_dRRatio //%f
|
|
, m_dInterfaceL //%f
|
|
, m_dInterfaceD //%f
|
|
, m_dPressure //%f
|
|
, m_sSerNo //%s
|
|
, m_sZoneNo //%s
|
|
, m_sUnitNo //%s
|
|
, m_sPipeNo //%s
|
|
, m_sCurrSys //%s
|
|
, m_sDescr //%s
|
|
, m_sMaterial //%s
|
|
, m_sMaterialFit //%s
|
|
, m_sParamSetting //%s
|
|
, m_sODSn //%s
|
|
, m_sLevel //%s
|
|
, m_szShtNo //%s
|
|
, m_sTraMtoInfo //%s
|
|
, m_sTraDescr //%s
|
|
, m_sEndF1 //%s
|
|
, m_sEndF2 //%s
|
|
, m_sFEGSInf //%s
|
|
, m_sGaskets //%s
|
|
, m_nElSel
|
|
);
|
|
}
|
|
|
|
void CWPipeDrawConfigDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
DDX_Control(pDX, IDC_PIPELIST, m_wndPipeList);
|
|
DDX_Control(pDX, IDC_LIST2, m_wndPressList);
|
|
DDX_Control(pDX, IDC_LIST1, m_wndSpecList);
|
|
DDX_Control(pDX, IDC_LISTELBOWRAD, m_wndElbowradList);
|
|
DDX_LBIndex(pDX, IDC_LISTELBOWRAD, m_nRadSel);
|
|
DDX_Radio(pDX, IDC_RADIODN, m_nDDir);
|
|
DDX_Radio(pDX, IDC_RADIO1, m_nConnectType);
|
|
DDX_Text(pDX, IDC_EDITFEGS, m_sFEGSInf);
|
|
DDX_Text(pDX, IDC_EDIT1, m_dFPLen);
|
|
DDX_Text(pDX, IDC_EDITEL, m_dEl);
|
|
DDX_Radio(pDX, IDC_RADIOE0, m_nElSel);
|
|
DDX_Text(pDX, IDC_EDITSERNO, m_sSerNo);
|
|
DDX_Text(pDX, IDC_EDITZONE, m_sZoneNo);
|
|
DDX_Text(pDX, IDC_EDITUNITNO, m_sUnitNo);
|
|
DDX_Text(pDX, IDC_EDITPIPECODE, m_sPipeNo);
|
|
DDX_Control(pDX, IDC_COMBOMATERS, m_wndComboMaters);
|
|
DDX_Control(pDX, IDC_COMBOMATERSFIT, m_wndComboMatersFit);
|
|
DDX_CBString(pDX, IDC_COMBOSYSLAY, m_sCurrSys);
|
|
DDX_Text(pDX, IDC_EDITDESCR, m_sDescr);
|
|
DDX_CBString(pDX, IDC_COMBOMATERS, m_sMaterial);
|
|
DDX_CBString(pDX, IDC_COMBOMATERSFIT, m_sMaterialFit);
|
|
DDX_Control(pDX, IDC_COMBOSYSLAY, m_wndComboSys);
|
|
DDX_Control(pDX, IDC_EDITEL, m_wndEditEl);
|
|
DDX_Control(pDX, IDC_BTPICKPIPE, m_wndBtPickpipe);
|
|
DDX_Text(pDX, IDC_EDITSETTING, m_sParamSetting);
|
|
DDX_Check(pDX, IDC_CHECKANG, m_bElbowAngleDraw);
|
|
DDX_Check(pDX, IDC_CHECKWELDDOT, m_bDrawWeldDot);
|
|
DDX_Check(pDX, IDC_CHECK2, m_bFlangNoBom);
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CWPipeDrawConfigDlg, CDialog)
|
|
ON_BN_CLICKED(IDC_BUTTON1, &CWPipeDrawConfigDlg::OnBnClickedButton1)
|
|
ON_BN_CLICKED(IDC_BUTTON2, &CWPipeDrawConfigDlg::OnBnClickedButton2)
|
|
ON_BN_CLICKED(IDC_BTADDMETI, &CWPipeDrawConfigDlg::OnBnClickedBtaddmeti)
|
|
ON_BN_CLICKED(IDC_BTSYSSET, &CWPipeDrawConfigDlg::OnBnClickedBtsysset)
|
|
ON_BN_CLICKED(IDC_BTPICKPIPE, &CWPipeDrawConfigDlg::OnBnClickedBtpickpipe)
|
|
ON_BN_CLICKED(IDOK, &CWPipeDrawConfigDlg::OnBnClickedOk)
|
|
ON_CONTROL_RANGE(BN_CLICKED, IDC_RADIO1, IDC_RADIO5, OnBnClickedRadioConnectType)
|
|
ON_CBN_SELCHANGE(IDC_COMBOMATERS, &CWPipeDrawConfigDlg::OnCbnSelchangeCombomaters)
|
|
ON_CBN_SELCHANGE(IDC_COMBOMATERSFIT, &CWPipeDrawConfigDlg::OnCbnSelchangeCombomatersfit)
|
|
ON_CBN_SELCHANGE(IDC_COMBOSYSLAY, &CWPipeDrawConfigDlg::OnCbnSelchangeCombosyslay)
|
|
ON_BN_CLICKED(IDC_BUTTON3, &CWPipeDrawConfigDlg::OnBnClickedButton3)
|
|
END_MESSAGE_MAP()
|
|
|
|
void CWPipeDrawConfigDlg::SetDbServer(CUIISQLiteServer* pDb)
|
|
{
|
|
m_pDb = pDb;
|
|
}
|
|
|
|
void CWPipeDrawConfigDlg::SetOnlyByDN(int nDN)
|
|
{
|
|
m_nOnlyDN = nDN;
|
|
m_bOnlyDn = TRUE;
|
|
if (nDN < 1)
|
|
m_bOnlyDn = FALSE;
|
|
m_dDn = m_nOnlyDN;
|
|
}
|
|
|
|
BOOL CWPipeDrawConfigDlg::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, 65 + 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_bLoadLast) LoadLastData();
|
|
|
|
InitPipeList(50000, m_sODSn);
|
|
|
|
InitElbowRadio(m_sODSn);
|
|
|
|
InitPipeMaterCombox();
|
|
|
|
InitFittingMaterCombox();
|
|
|
|
InitPressSpecFromDb();
|
|
|
|
m_wndEditEl.SetReadOnly(m_bEleReadOnly);
|
|
if (m_bOnlyDn)
|
|
{
|
|
m_wndBtPickpipe.EnableWindow(FALSE);
|
|
}
|
|
|
|
InitSys();
|
|
|
|
if (m_bEleReadOnly)//锁定标高
|
|
{
|
|
GetDlgItem(IDC_EDITEL)->EnableWindow(FALSE);
|
|
}
|
|
|
|
CWnd *pWnd(GetDlgItem(IDC_EDIT1));
|
|
if (pWnd)
|
|
{
|
|
//法兰管分段
|
|
pWnd->EnableWindow(m_nConnectType == 3 || m_nConnectType == 5);
|
|
}
|
|
|
|
//根据上次材料认定
|
|
OnCbnSelchangeCombomaters();
|
|
|
|
UpdateData(FALSE);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CWPipeDrawConfigDlg::InitPipeList(int nMaxDN, CString& sODNo)
|
|
{
|
|
if (m_pDb != NULL)
|
|
{
|
|
CString sSQL, sText, sODAWhere = _T("");
|
|
|
|
m_wndPipeList.DeleteAllItems();
|
|
|
|
//公称直径系列
|
|
bool bMODSN = false;
|
|
if (sODNo.CompareNoCase(_T("A")) == 0 || sODNo.CompareNoCase(_T("B")) == 0 || sODNo.IsEmpty() )
|
|
{
|
|
if (m_nConnectType == 1 || m_nConnectType == 2 || m_nConnectType == 4 )
|
|
{
|
|
//S系列没有 承插 或 螺纹 卡箍
|
|
sODAWhere = _T("([外径系列]='A' or [外径系列]='B')");
|
|
}
|
|
else
|
|
{
|
|
sODAWhere = _T("([外径系列]='A' or [外径系列]='B' or [外径系列]='S')");
|
|
}
|
|
bMODSN = true;
|
|
}
|
|
else
|
|
{
|
|
sODAWhere.Format(_T("[外径系列]='%s'"), sODNo);
|
|
}
|
|
|
|
//承插 螺纹 最大值
|
|
CStringArray arDNs;
|
|
if (m_nConnectType == 1)//承插
|
|
{
|
|
sSQL.Format(_T("select [公称直径] from [AecElbowSData] where %s order by [公称直径] desc"), sODAWhere);
|
|
m_pDb->GetSelData(sSQL, arDNs);
|
|
if (!arDNs.IsEmpty())
|
|
{
|
|
nMaxDN = _ttoi(arDNs.GetAt(0));
|
|
}
|
|
}
|
|
|
|
if (m_nConnectType == 2)//螺纹
|
|
{
|
|
sSQL.Format(_T("select [公称直径] from [AecElbowTData] where %s order by [公称直径] desc"), sODAWhere);
|
|
m_pDb->GetSelData(sSQL, arDNs);
|
|
if (!arDNs.IsEmpty())
|
|
{
|
|
nMaxDN = _ttoi(arDNs.GetAt(0));
|
|
}
|
|
}
|
|
|
|
CStringArray arRds;
|
|
arRds.Add(_BYGB_);
|
|
sSQL = _T("select distinct [弯头曲率] from AecElbowData order by [弯头曲率]");
|
|
m_pDb->GetSelData(sSQL, arRds);
|
|
|
|
if (arRds.GetSize() > 0)
|
|
{
|
|
int nSel = 0;
|
|
m_wndElbowradList.ResetContent();
|
|
for (int n = 0; n < arRds.GetSize(); n++)
|
|
{
|
|
m_wndElbowradList.AddString(arRds.GetAt(n));
|
|
if (fabs( _ttof(arRds.GetAt(n)) - m_dRRatio) < 1.e-3)
|
|
{
|
|
nSel = n;
|
|
}
|
|
}
|
|
m_wndElbowradList.SetCurSel(nSel);
|
|
}
|
|
|
|
if (m_nOnlyDN == 0)//不限制DN
|
|
{
|
|
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 [外径系列],[公称直径],[壁厚] desc"), m_nOnlyDN, sODAWhere);//
|
|
}
|
|
|
|
CUIIValueTable table;
|
|
m_pDb->GetSelData(sSQL, table);
|
|
|
|
if (table.GetTableLogicSize() == 0)
|
|
{
|
|
//按外径选
|
|
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"), (int)(m_dDn + 0.5));
|
|
|
|
if (sODNo.IsEmpty()) sODNo = m_sODSn;
|
|
int iStart = -1;
|
|
bool bFind = false;
|
|
int nCount = m_wndPipeList.GetItemCount();
|
|
for (int i = 0; i < nCount; 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 && sODNo2.CompareNoCase(sODNo) == 0)
|
|
iStart = i;
|
|
|
|
if (sText.CompareNoCase(sDnold) == 0 && fabs(_ttof(sThick) - m_dThk) < 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);
|
|
}
|
|
}
|
|
}
|
|
|
|
void CWPipeDrawConfigDlg::InitElbowRadio(CString& sODNo)
|
|
{
|
|
CString sSQL,sODAWhere;
|
|
|
|
//曲率半径
|
|
sSQL = _T("select distinct [曲率半径] from AecElbowradius order by [曲率半径]");
|
|
|
|
m_wndElbowradList.ResetContent();
|
|
CString sRat;
|
|
CStringArray arVals;
|
|
arVals.Add(_BYGB_);
|
|
m_pDb->GetSelData(sSQL, arVals);
|
|
int nSel = -1;
|
|
|
|
for (int i = 0; i < arVals.GetSize(); i++)
|
|
{
|
|
m_wndElbowradList.InsertString(i, arVals.GetAt(i));
|
|
sRat = arVals.GetAt(i);
|
|
if (fabs(_ttof(sRat) - m_dRRatio) < 1.e-3 && nSel == -1)
|
|
{
|
|
nSel = i;
|
|
if ( (m_dRRatio -g_minRadio) < 1.e-3)
|
|
nSel = 0;
|
|
}
|
|
}
|
|
if (nSel == -1) nSel = 0;
|
|
m_wndElbowradList.SetCurSel(nSel);
|
|
}
|
|
|
|
void CWPipeDrawConfigDlg::InitPipeMaterCombox()
|
|
{
|
|
//材质
|
|
m_wndComboMaters.ResetContent();
|
|
|
|
CString sSQL,sMat;
|
|
CStringArray arVals;
|
|
|
|
sSQL = _T("select [材质] from AecMaterial where [类型]='管道'");
|
|
m_pDb->GetSelData(sSQL, arVals);
|
|
|
|
for (int i = 0; i < arVals.GetSize(); i++)
|
|
{
|
|
sMat = arVals.GetAt(i);
|
|
m_wndComboMaters.InsertString(i, sMat);
|
|
|
|
if (m_sMaterial.CompareNoCase(sMat) == 0 ||
|
|
(m_sMaterial.Find(_T("衬塑")) != -1 && sMat.Find(_T("衬塑")) != -1))
|
|
{
|
|
m_wndComboMaters.SetCurSel(i);
|
|
}
|
|
}
|
|
}
|
|
|
|
void CWPipeDrawConfigDlg::InitFittingMaterCombox()
|
|
{
|
|
CString sSQL,sMat;
|
|
CStringArray arVals;
|
|
|
|
//材质
|
|
m_wndComboMatersFit.ResetContent();
|
|
arVals.RemoveAll();
|
|
sSQL = _T("select [材质] from AecMaterial where [类型]='管件'");
|
|
m_pDb->GetSelData(sSQL, arVals);
|
|
|
|
for (int i = 0; i < arVals.GetSize(); i++)
|
|
{
|
|
sMat = arVals.GetAt(i);
|
|
m_wndComboMatersFit.InsertString(i, sMat);
|
|
|
|
if (m_sMaterialFit.CompareNoCase(sMat) == 0 ||
|
|
(m_sMaterialFit.Find(_T("衬塑")) != -1 && sMat.Find(_T("衬塑")) != -1))
|
|
{
|
|
m_wndComboMatersFit.SetCurSel(i);
|
|
}
|
|
}
|
|
}
|
|
|
|
void CWPipeDrawConfigDlg::InitPressSpecFromDb()
|
|
{
|
|
//获取项目名称
|
|
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;
|
|
}
|
|
|
|
xDataMap.GetAt(DOC_PIDPROJECT, m_sProject);
|
|
xDataMap.GetAt(DOC_TRADE, m_nTrade);
|
|
|
|
if (m_nTrade = WPipe::eCivial && m_sProject.IsEmpty())
|
|
{
|
|
m_sProject = _T("市政");
|
|
}
|
|
else if (m_sProject.IsEmpty() || m_sProject.CompareNoCase(_T("SH")) == 0)//兼容旧SH
|
|
{
|
|
m_sProject = _T("工业");
|
|
}
|
|
|
|
CString sSQL;
|
|
sSQL.Format(_T("select distinct [等级名称] from AecSpecname where [项目名称]='%s' order by [等级名称]"), m_sProject);
|
|
|
|
CStringArray arValues;
|
|
m_pDb->GetSelData(sSQL, arValues);
|
|
|
|
m_wndSpecList.ResetContent();
|
|
for (int i = 0; i < arValues.GetSize(); i++)
|
|
{
|
|
m_wndSpecList.InsertString(i, arValues.GetAt(i));
|
|
}
|
|
|
|
int nIndex = m_wndSpecList.FindString(0, m_sLevel);
|
|
if (nIndex != -1)
|
|
{
|
|
m_wndSpecList.SetCurSel(nIndex);
|
|
}
|
|
else
|
|
{
|
|
m_wndSpecList.SetCurSel(0);
|
|
}
|
|
|
|
//压力表
|
|
sSQL.Format(_T("select [压力] from aecpressure order by [压力]"));
|
|
arValues.RemoveAll();
|
|
m_pDb->GetSelData(sSQL, arValues);
|
|
|
|
m_wndPressList.ResetContent();
|
|
for (int i = 0; i < arValues.GetSize(); i++)
|
|
{
|
|
m_wndPressList.InsertString(i, arValues.GetAt(i));
|
|
if (_ttof(arValues.GetAt(i)) < 1.1 &&
|
|
_ttof(arValues.GetAt(i)) > 0.95)
|
|
{
|
|
m_wndPressList.SetCurSel(i);
|
|
}
|
|
}
|
|
}
|
|
|
|
void CWPipeDrawConfigDlg::InitSys()
|
|
{
|
|
//显示当前图层系统
|
|
CString sSQL, sStd(CoreTools::getCurrentPipeSysTblName()), sTemp;
|
|
|
|
sSQL.Format(_T("select distinct system from %s"), sStd);
|
|
CStringArray arSyses;
|
|
m_pDb->GetSelData(sSQL, arSyses);
|
|
|
|
int nCursel = 0;
|
|
for (int i = 0; i < arSyses.GetSize(); i++)
|
|
{
|
|
sTemp = arSyses.GetAt(i);
|
|
m_wndComboSys.AddString(sTemp);
|
|
if (m_sCurrSys.CompareNoCase(sTemp) == 0)
|
|
{
|
|
nCursel = i;
|
|
}
|
|
}
|
|
m_wndComboSys.SetCurSel(nCursel);
|
|
}
|
|
|
|
bool CWPipeDrawConfigDlg::IsPlasticsMat(int nPos, CString& sODNo)
|
|
{
|
|
UpdateData();
|
|
|
|
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_sMaterial.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.CompareNoCase(_T("(PE)")) == 0)
|
|
sODNo = _T("PE");
|
|
|
|
if (sODNo.CompareNoCase(_T("PE100")) == 0)
|
|
sODNo = _T("PE");
|
|
|
|
m_nDDir = 1;//外径绘制
|
|
if (m_nConnectType > 2 || m_nConnectType < 1)
|
|
m_nConnectType = 1;//设置为承插
|
|
return true;
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
if (m_sMaterialFit.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.CompareNoCase(_T("(PE)")) == 0)
|
|
sODNo = _T("PE");
|
|
|
|
if (sODNo.CompareNoCase(_T("PE100")) == 0)
|
|
sODNo = _T("PE");
|
|
|
|
m_nDDir = 1;//外径绘制
|
|
m_nRadioOn = 1;//必须按结构长度
|
|
if (m_nConnectType > 2 || m_nConnectType < 1)
|
|
m_nConnectType = 1;//设置为承插
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
BOOL CWPipeDrawConfigDlg::IsGSFMaterial(CString &sODNo)
|
|
{
|
|
UpdateData();
|
|
|
|
//目前只能按照材质判断
|
|
if (m_sMaterial.Find(_T("衬塑")) != -1 ||
|
|
m_sMaterial.Find(_T("HG/T 20538")) != -1)
|
|
{
|
|
sODNo = _T("GSF");
|
|
m_nDDir = 0;//DN
|
|
m_nConnectType = 3;//必须法兰
|
|
m_bFlangNoBom = 1;
|
|
return TRUE;
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
BOOL CWPipeDrawConfigDlg::IsSRPEMaterial(CString &sODNo)
|
|
{
|
|
UpdateData();
|
|
|
|
//目前只能按照材质判断
|
|
if (m_sMaterial.Find(_T("钢骨架")) != -1 ||
|
|
m_sMaterial.Find(_T("CJ/T 123")) != -1)
|
|
{
|
|
sODNo = _T("SRPE");
|
|
m_nDDir = 0;//DN
|
|
if (m_nConnectType == 2)
|
|
m_nConnectType = 1;//承插
|
|
m_bFlangNoBom = 0;
|
|
return TRUE;
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
BOOL CWPipeDrawConfigDlg::IsRCPMaterial(CString &sODNo)
|
|
{
|
|
UpdateData();
|
|
|
|
//目前只能按照材质判断
|
|
if (m_sMaterial.Find(_T("混凝土")) != -1)
|
|
{
|
|
sODNo = _T("RCP");
|
|
m_nDDir = 0;//DN
|
|
if (m_nConnectType > 1)
|
|
{
|
|
m_nConnectType = 0;
|
|
}
|
|
return TRUE;
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
//添加管道规格
|
|
static int getMaxIDFromDB(LPCTSTR pszField, LPCTSTR pszTbl, CUIISQLiteServer *pDb)
|
|
{
|
|
if (!pszField || !pszTbl || !pDb) return -1;
|
|
CString ss(_T("")), v(_T(""));
|
|
ss.Format(_T("select max(%s) from %s"), pszField, pszTbl);
|
|
|
|
if (!pDb->GetSelData(ss, v)) return -1;
|
|
|
|
return _ttoi(v) + 1;
|
|
}
|
|
void CWPipeDrawConfigDlg::OnBnClickedButton1()
|
|
{
|
|
UpdateData();
|
|
|
|
/*
|
|
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, 65 + nAdd);
|
|
m_wndPipeList.InsertColumn(4, _T("表号"), LVCFMT_LEFT, 65 + nAdd);
|
|
m_wndPipeList.InsertColumn(5, _T("系列/代号"), LVCFMT_CENTER, 80 + nAdd);
|
|
m_wndPipeList.InsertColumn(6, _T("执行标准"), LVCFMT_LEFT, 300+nAdd);
|
|
*/
|
|
POSITION ps = m_wndPipeList.GetFirstSelectedItemPosition();
|
|
if (ps != NULL)
|
|
{
|
|
int nSel = m_wndPipeList.GetNextSelectedItem(ps);
|
|
if (nSel != -1)
|
|
{
|
|
CGZCLDlg dlg;
|
|
|
|
dlg.m_sMat = m_sMaterial;
|
|
dlg.m_sSCode = m_wndPipeList.GetItemText(nSel,4);
|
|
dlg.m_sODSN = m_wndPipeList.GetItemText(nSel,5);
|
|
dlg.m_sStd = m_wndPipeList.GetItemText(nSel, 6);
|
|
|
|
if (IDOK == dlg.DoModal())
|
|
{
|
|
CString sSQL;
|
|
sSQL.Format(_T("insert into AecOD ([公称直径],[外径],[表号],[壁厚],[重量],[外径系列],[标准]) values (%d,%d,'%s',%.1f,%.2f,'%s','%s')"),
|
|
dlg.m_nDN, (int)dlg.m_dOD, dlg.m_sSCode, dlg.m_dt, dlg.m_dWe, dlg.m_sODSN, dlg.m_sStd);
|
|
|
|
if (m_pDb->ExecuteSQL(sSQL))
|
|
{
|
|
InitPipeList(50000, dlg.m_sODSN);
|
|
}
|
|
|
|
if (m_wndComboMaters.FindString(0,dlg.m_sMat) == -1)
|
|
m_wndComboMaters.AddString(dlg.m_sMat);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//保温伴热
|
|
void CWPipeDrawConfigDlg::OnBnClickedButton2()
|
|
{
|
|
UpdateData();
|
|
|
|
int nSel = m_wndSpecList.GetCurSel();
|
|
if (nSel != -1)
|
|
m_wndSpecList.GetText(nSel, m_sLevel);
|
|
|
|
CString sText;
|
|
nSel = m_wndPressList.GetCurSel();
|
|
if (nSel != -1)
|
|
{
|
|
m_wndPressList.GetText(nSel, sText);
|
|
m_dPressure = _ttof(sText);
|
|
}
|
|
|
|
nSel = m_wndComboSys.GetCurSel();
|
|
if (nSel != -1)
|
|
m_wndComboSys.GetLBText(nSel, m_sCurrSys);
|
|
|
|
nSel = m_wndElbowradList.GetCurSel();
|
|
if (nSel != -1)
|
|
{
|
|
m_wndElbowradList.GetText(nSel, sText);
|
|
m_dRRatio = _ttof(sText);
|
|
}
|
|
|
|
KTInsulateMainDlg dlg;
|
|
dlg.SetADOServer(m_pDb);
|
|
|
|
WPipe::PipeParam param;
|
|
GetPipeParam(¶m);
|
|
|
|
dlg.SetPipeParam(¶m);
|
|
if (IDOK == dlg.DoModal())
|
|
{
|
|
m_sInsMtr = param.szInsMtr;
|
|
m_dInsThk = param.m_dInsThk;
|
|
m_nInsAndHead = param.m_nInsAndHead;
|
|
|
|
m_sInsSpec = param.szInsSpec;
|
|
m_sInsMaterial = param.szInsMateral;
|
|
m_szInsTag = param.szInsTag;
|
|
m_szInsDim = param.szInsDim;
|
|
|
|
m_sTraMtoInfo, param.szTraMtoInfo;
|
|
m_sTraDescr, param.szTraDescr;
|
|
|
|
FormatParamSettingAndSpec();
|
|
}
|
|
}
|
|
|
|
void CWPipeDrawConfigDlg::FormatParamSettingAndSpec()
|
|
{
|
|
//介质压力
|
|
CString sZone, sDN, sPP, sNo, sGrade;
|
|
CString sText;
|
|
sText.Format(_T("%s"), m_szMedia);
|
|
sPP = sText;
|
|
m_sParamSetting = sText + _T("-");
|
|
|
|
//sText.Format(_T("%s"), m_sLevel);
|
|
//sGrade = sText;
|
|
//m_sParamSetting += sText + _T("-");
|
|
|
|
sText.Format(_T("%d"), (int)m_dDn);
|
|
sDN = sText;
|
|
m_sParamSetting += sText + _T("-");
|
|
|
|
sText.Format(_T("%.1f"), m_dRRatio);
|
|
m_sParamSetting += sText + _T("-");
|
|
|
|
sText.Format(_T("%s"), m_sInsMtr);
|
|
sText.TrimRight(_T('-'));
|
|
if (!sText.IsEmpty())
|
|
{
|
|
m_sParamSetting += sText + _T("-");
|
|
}
|
|
|
|
sText.Format(_T("%.1f"), m_dInsThk);
|
|
m_sParamSetting += sText;
|
|
|
|
CString sAdd;
|
|
if (_tcslen(m_sInsMtr) > 0) sAdd = _T("保温");
|
|
if (_tcslen(m_sTraMtoInfo) > 0) sAdd += _T("伴热");
|
|
|
|
//管线号= 区号-单元号-顺序号-DN-等级-保温伴热
|
|
m_sPipeNo.Format(_T("%s-%s-%s-%s-%s-%s"), m_sZoneNo, m_sUnitNo, m_sSerNo, sDN, sGrade, sAdd);
|
|
m_sPipeNo.TrimRight(_T('-'));
|
|
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
//添加材料
|
|
void CWPipeDrawConfigDlg::OnBnClickedBtaddmeti()
|
|
{
|
|
CStringArray arPipe, arFit;
|
|
|
|
if (!PipelineTools::setPipelineMaterial(m_pDb, arPipe, arFit))
|
|
{
|
|
return;
|
|
}
|
|
|
|
m_wndComboMaters.ResetContent();
|
|
for (int i = 0; i < arPipe.GetSize(); i++)
|
|
{
|
|
m_wndComboMaters.InsertString(i, arPipe.GetAt(i));
|
|
if (m_sMaterial.CompareNoCase(arPipe.GetAt(i)) == 0)
|
|
m_wndComboMaters.SetCurSel(i);
|
|
}
|
|
|
|
m_wndComboMatersFit.ResetContent();
|
|
for (int i = 0; i < arFit.GetSize(); i++)
|
|
{
|
|
m_wndComboMatersFit.InsertString(i, arFit.GetAt(i));
|
|
if (m_sMaterialFit.CompareNoCase(arFit.GetAt(i)) == 0)
|
|
m_wndComboMatersFit.SetCurSel(i);
|
|
}
|
|
}
|
|
|
|
//分系统
|
|
void CWPipeDrawConfigDlg::OnBnClickedBtsysset()
|
|
{
|
|
CStringArray arSyses;
|
|
if (!PipelineTools::setLayerSys(m_pDb, arSyses))
|
|
{
|
|
return;
|
|
}
|
|
|
|
m_wndComboSys.ResetContent();
|
|
for (int i = 0; i < arSyses.GetSize(); i++)
|
|
{
|
|
m_wndComboSys.AddString(arSyses.GetAt(i));
|
|
}
|
|
|
|
if (arSyses.GetSize() > 0)
|
|
{
|
|
m_wndComboSys.SetCurSel(0);
|
|
m_wndComboSys.GetLBText(0, m_sCurrSys);
|
|
}
|
|
}
|
|
|
|
//参数选择管线
|
|
void CWPipeDrawConfigDlg::OnBnClickedBtpickpipe()
|
|
{
|
|
//切换界面的当前活动
|
|
acedGetAcadFrame()->EnableWindow(TRUE);
|
|
ShowWindow(SW_HIDE);
|
|
acedGetAcadFrame()->SetFocus();
|
|
|
|
CString strLay(_T(""));
|
|
AecDbObjXDataMap xmap;
|
|
if (!PipelineTools::getPipelineParam(xmap, strLay))
|
|
{
|
|
ShowWindow(SW_SHOW);
|
|
SetFocus();
|
|
acedGetAcadFrame()->EnableWindow(FALSE);
|
|
EnableWindow(TRUE);
|
|
|
|
return;
|
|
}
|
|
|
|
SetsureLaySysByLayer(strLay);
|
|
SetFromXDataMap(&xmap);
|
|
|
|
xmap.GetAt(PIPE_EL, m_dEl);
|
|
xmap.GetAt(PIPE_SYS, m_sCurrSys);
|
|
|
|
PipelineTools::setCurrentLayerSys(m_sCurrSys);
|
|
|
|
CString sSysTmp;
|
|
for (int j = 0; j < m_wndComboSys.GetCount(); j++)
|
|
{
|
|
m_wndComboSys.GetLBText(j, sSysTmp);
|
|
if (m_sCurrSys.CompareNoCase(sSysTmp) == 0)
|
|
{
|
|
m_wndComboSys.SetCurSel(j);
|
|
}
|
|
}
|
|
|
|
m_idCurSys = CoreTools::getLyForPipe(m_sCurrSys);
|
|
|
|
UpdateData(FALSE);
|
|
|
|
UpdatePipeList();
|
|
|
|
OnCbnSelchangeCombomaters();
|
|
|
|
ShowWindow(SW_SHOW);
|
|
SetFocus();
|
|
acedGetAcadFrame()->EnableWindow(FALSE);
|
|
EnableWindow(TRUE);
|
|
}
|
|
|
|
void CWPipeDrawConfigDlg::UpdatePipeList()
|
|
{
|
|
CString sDnold, sThick;
|
|
sDnold.Format(_T("%d"), (int)(m_dDn + 0.5));
|
|
|
|
CString sText;
|
|
for (int i = 0; i < m_wndPipeList.GetItemCount(); i++)
|
|
{
|
|
sText = m_wndPipeList.GetItemText(i, 0);
|
|
sThick = m_wndPipeList.GetItemText(i, 2);
|
|
if (sText.CompareNoCase(sDnold) == 0 && fabs(_ttof(sThick) - m_dThk) < 1.e-6)
|
|
{
|
|
m_wndPipeList.SetItemState(i, LVIS_SELECTED, LVIS_SELECTED);
|
|
m_wndPipeList.EnsureVisible(i, TRUE);
|
|
break;
|
|
}
|
|
}
|
|
|
|
//曲率半径
|
|
CString sRat;
|
|
for (i = 0; i < m_wndElbowradList.GetCount(); i++)
|
|
{
|
|
m_wndElbowradList.GetText(i, sRat);
|
|
if (fabs(_ttof(sRat) - m_dRRatio) < 1.e-6)
|
|
{
|
|
m_wndElbowradList.SetCurSel(i);
|
|
break;
|
|
}
|
|
}
|
|
|
|
//材质
|
|
for (i = 0; i < m_wndComboMaters.GetCount(); i++)
|
|
{
|
|
m_wndComboMaters.GetLBText(i, sText);
|
|
if (m_sMaterial.CompareNoCase(sText) == 0)
|
|
{
|
|
m_wndComboMaters.SetCurSel(i);
|
|
break;
|
|
}
|
|
}
|
|
|
|
//材质
|
|
for (i = 0; i < m_wndComboMatersFit.GetCount(); i++)
|
|
{
|
|
m_wndComboMatersFit.GetLBText(i, sText);
|
|
if (m_sMaterialFit.CompareNoCase(sText) == 0)
|
|
{
|
|
m_wndComboMatersFit.SetCurSel(i);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
void CWPipeDrawConfigDlg::SetsureLaySysByLayer(LPCTSTR pszLayer)
|
|
{
|
|
CString sys(_T(""));
|
|
if (!PipelineTools::getSysByLayer(m_pDb, pszLayer, sys))
|
|
{
|
|
acutPrintf(_T("\n查询当前图层系统失败!"));
|
|
return;
|
|
}
|
|
CString sSysTmp;
|
|
m_sCurrSys = sys;
|
|
for (int j = 0; j < m_wndComboSys.GetCount(); j++)
|
|
{
|
|
m_wndComboSys.GetLBText(j, sSysTmp);
|
|
if (m_sCurrSys.CompareNoCase(sSysTmp) == 0)
|
|
{
|
|
m_wndComboSys.SetCurSel(j);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
void CWPipeDrawConfigDlg::OnBnClickedRadioConnectType(UINT idCtl)
|
|
{
|
|
UpdateData();
|
|
|
|
bool bInitList = false;
|
|
CString sODNo = _T("");
|
|
|
|
//塑料管
|
|
if (IsPlasticsMat(0, sODNo))
|
|
{
|
|
if (m_nConnectType < 1 || m_nConnectType > 2)
|
|
AfxMessageBox(_T("当前是塑料管,只能选择承插或螺纹连接!"));
|
|
|
|
InitPipeList(5000, sODNo);
|
|
m_nConnectType = 1;
|
|
bInitList = true;
|
|
}
|
|
|
|
//衬塑管
|
|
if (IsGSFMaterial(sODNo))
|
|
{
|
|
m_bFlangNoBom = 1;
|
|
if (m_nConnectType != 3)
|
|
AfxMessageBox(_T("当前是衬塑管,只能选择法兰连接!"));
|
|
|
|
InitPipeList(5000, sODNo);
|
|
m_nConnectType = 3;
|
|
bInitList = true;
|
|
}
|
|
|
|
if (IsSRPEMaterial(sODNo))
|
|
{
|
|
m_bFlangNoBom = 0;
|
|
InitPipeList(5000, sODNo);
|
|
if (m_nConnectType == 2)//不可为螺纹
|
|
m_nConnectType = 1;
|
|
bInitList = true;
|
|
}
|
|
|
|
//其他材质
|
|
if (!bInitList)
|
|
{
|
|
sODNo = _T("");
|
|
InitPipeList(5000, sODNo);
|
|
}
|
|
|
|
//如果是法兰管,设置垫片(如果没有)
|
|
if (m_nConnectType == 3 || m_nConnectType == 5)//法兰
|
|
{
|
|
SetFEGSInf();
|
|
}
|
|
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
void CWPipeDrawConfigDlg::SetFEGSInf()
|
|
{
|
|
//弹出垫片设置
|
|
int nSel = m_wndPressList.GetCurSel();
|
|
if (nSel == -1)
|
|
{
|
|
nSel = 0;
|
|
}
|
|
|
|
//if (m_wndSpecList.GetCount() == 0)
|
|
// return;
|
|
//m_wndSpecList.GetText(nSel, m_sLevel);
|
|
|
|
nSel = m_wndPressList.GetCurSel();
|
|
if (nSel == -1)
|
|
{
|
|
AfxMessageBox(_T("请选择项目设计压力!"));
|
|
return;
|
|
}
|
|
|
|
CString sText,sLevel = _T("");//m_sLevel
|
|
m_wndPressList.GetText(nSel, sText);
|
|
m_dPressure = _ttof(sText);
|
|
|
|
CFLEndFGsDlg flEdGsDlg;
|
|
flEdGsDlg.SetProAndLevel(m_sProject, sLevel);
|
|
flEdGsDlg.SetPrress(m_dPressure);
|
|
flEdGsDlg.SetDN(m_dDn);
|
|
flEdGsDlg.SetTrade(m_nTrade);
|
|
|
|
if (IDOK == flEdGsDlg.DoModal())
|
|
{
|
|
m_sGaskets = _T("");
|
|
m_sEndF1 = _T("");
|
|
m_sEndF2 = _T("");
|
|
|
|
flEdGsDlg.GetFLngEndFace(m_sEndF1, m_sEndF2);
|
|
flEdGsDlg.GetGasketInf(m_sGaskets);
|
|
|
|
m_sFEGSInf.Format(_T("法兰端面: %s:%s 垫片:%s"), m_sEndF1, m_sEndF2, m_sGaskets);
|
|
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
CWnd *pWnd(GetDlgItem(IDC_EDIT1));
|
|
if (pWnd)
|
|
pWnd->EnableWindow(TRUE);
|
|
}
|
|
|
|
//管道材质
|
|
void CWPipeDrawConfigDlg::OnCbnSelchangeCombomaters()
|
|
{
|
|
UpdateData();
|
|
|
|
m_sMaterialFit = m_sMaterial;
|
|
CString sODNo = m_sODSn;
|
|
|
|
UpdateData(FALSE);
|
|
|
|
int nPos = m_sMaterial.Find(_T("@"));
|
|
if (nPos != -1)
|
|
{
|
|
sODNo = m_sMaterial.Mid(nPos + 1);
|
|
InitPipeList(50000, sODNo);
|
|
return;
|
|
}
|
|
|
|
if (IsPlasticsMat(0, sODNo))
|
|
{
|
|
m_nDDir = 1;//外径绘制
|
|
m_nRadSel = 0;
|
|
UpdateData(FALSE);
|
|
//塑料管承插或螺纹
|
|
if (m_nConnectType == 0 || m_nConnectType > 2)
|
|
m_nConnectType = 1;
|
|
|
|
InitPipeList(50000, sODNo);
|
|
|
|
if (IsGSFMaterial(sODNo))
|
|
{
|
|
m_bFlangNoBom = 1;
|
|
m_nRadSel = 0;
|
|
//法兰连接
|
|
if (m_nConnectType != 3)
|
|
{
|
|
m_nConnectType = 3;
|
|
|
|
SetFEGSInf();
|
|
|
|
UpdateData(FALSE);
|
|
}
|
|
}
|
|
}
|
|
else if (IsGSFMaterial(sODNo))//衬塑
|
|
{
|
|
InitPipeList(50000, sODNo);
|
|
m_nRadSel = 0;
|
|
//法兰连接
|
|
if (m_nConnectType != 3 || m_sGaskets.IsEmpty())
|
|
{
|
|
m_nConnectType = 3;
|
|
m_bFlangNoBom = 1;
|
|
|
|
SetFEGSInf();
|
|
|
|
UpdateData(FALSE);
|
|
}
|
|
}
|
|
else if (IsRCPMaterial(sODNo))//水泥管
|
|
{
|
|
InitPipeList(50000, sODNo);
|
|
|
|
//法兰连接
|
|
//m_nRadioOn = 1;//必须按结构长度
|
|
if (m_nConnectType > 1)
|
|
m_nConnectType = 0;
|
|
}
|
|
else if (IsSRPEMaterial(sODNo))
|
|
{
|
|
InitPipeList(50000, sODNo);
|
|
|
|
//法兰连接
|
|
m_nConnectType = 0;
|
|
}
|
|
else
|
|
{
|
|
sODNo = _T("");
|
|
InitPipeList(50000,sODNo);
|
|
}
|
|
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
//管件材质
|
|
void CWPipeDrawConfigDlg::OnCbnSelchangeCombomatersfit()
|
|
{
|
|
UpdateData();
|
|
|
|
CString sODNo = m_sODSn;
|
|
if (IsPlasticsMat(0, sODNo))
|
|
{
|
|
if (m_sMaterialFit.CompareNoCase(m_sMaterial) != 0)
|
|
{
|
|
m_sMaterialFit = m_sMaterial;
|
|
m_nDDir = 1;//外径绘制
|
|
}
|
|
}
|
|
else if(IsGSFMaterial(sODNo))
|
|
{
|
|
if (m_sMaterialFit.CompareNoCase(m_sMaterial) != 0)
|
|
{
|
|
m_sMaterialFit = m_sMaterial;
|
|
}
|
|
}
|
|
else if (IsRCPMaterial(sODNo))//水泥管
|
|
{
|
|
if (m_sMaterialFit.CompareNoCase(m_sMaterial) != 0)
|
|
{
|
|
m_sMaterialFit = m_sMaterial;
|
|
}
|
|
}
|
|
else if (IsSRPEMaterial(sODNo))
|
|
{
|
|
if (m_sMaterialFit.CompareNoCase(m_sMaterial) != 0)
|
|
{
|
|
m_sMaterialFit = m_sMaterial;
|
|
}
|
|
}
|
|
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
//系统
|
|
void CWPipeDrawConfigDlg::OnCbnSelchangeCombosyslay()
|
|
{
|
|
UpdateData();
|
|
|
|
FormatParamSettingAndSpec();
|
|
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
BOOL CWPipeDrawConfigDlg::CreateSysAllLayer(LPCTSTR pszCurrSys)
|
|
{
|
|
CoreTools::getLyByPipeSys(pszCurrSys, true);
|
|
CoreTools::getLyByPipeSys(pszCurrSys, false);
|
|
CoreTools::getLyForPipe(pszCurrSys);
|
|
return TRUE;
|
|
}
|
|
|
|
BOOL CWPipeDrawConfigDlg::IsTDnValid(double dDn, LPCTSTR pszODNo, int& nMaxDN)
|
|
{
|
|
CString sSQL;
|
|
sSQL.Format(_T("select [公称直径] from [AecElbowTData] where [外径系列]='%s' order by [公称直径] desc limit 1"), pszODNo);
|
|
|
|
CStringArray arVals;
|
|
m_pDb->GetSelData(sSQL, arVals);
|
|
|
|
if (!arVals.IsEmpty())
|
|
{
|
|
nMaxDN = _ttoi(arVals.GetAt(0));
|
|
int nDN = (int)(dDn + 0.5);
|
|
|
|
if (nDN <= nMaxDN)
|
|
return TRUE;
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
BOOL CWPipeDrawConfigDlg::QueryFlangOnPipe()
|
|
{
|
|
double dWD, dWh, dThk, dN;
|
|
if (TDbPipeSupport::QueryFlangData(m_pDb
|
|
, m_dDn
|
|
, m_dPressure
|
|
, dWD
|
|
, dWh
|
|
, dThk
|
|
, dN ))//不考虑等级和项目
|
|
{
|
|
m_dInterfaceL = dWh; //法兰管的法兰厚
|
|
m_dInterfaceD = dWD; //法兰管的法兰外径
|
|
return TRUE;
|
|
}
|
|
|
|
CString sTip;
|
|
sTip.Format(_T("没有查询到公称直径 %d 压力 %.1f 的法兰参数"),(int)(m_dDn+0.5),m_dPressure);
|
|
|
|
AfxMessageBox(sTip);
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
void CWPipeDrawConfigDlg::OnBnClickedOk()
|
|
{
|
|
UpdateData();
|
|
|
|
m_nRadioOn = 0;
|
|
|
|
//创建系统图层
|
|
int nCursel = m_wndComboSys.GetCurSel();
|
|
if (nCursel == -1)
|
|
{
|
|
return;
|
|
}
|
|
|
|
//确认创建图层
|
|
m_wndComboSys.GetLBText(nCursel, m_sCurrSys);
|
|
CreateSysAllLayer(m_sCurrSys);
|
|
|
|
PipelineTools::setCurrentLayerSys(m_sCurrSys);
|
|
m_idCurSys = CoreTools::getLyForPipe(m_sCurrSys);
|
|
|
|
//获取分系统信息
|
|
//select layname,pipesys,color,linetype,linewidth
|
|
//LAYKEY LAYNAME PIPESYS SYSTEM COLOR LINETYPE LINEWIDTH
|
|
//11 废水管线中心线 管线中心线 废水 4 Continuous:________ 0
|
|
CStringArray arVals;
|
|
PipelineTools::getPipeSysRecord(m_pDb, m_sCurrSys, arVals);
|
|
if (arVals.GetSize() >= 5)
|
|
{
|
|
m_nColorIndex = _ttoi(arVals.GetAt(2));
|
|
}
|
|
|
|
//管子规格
|
|
POSITION ps = m_wndPipeList.GetFirstSelectedItemPosition();
|
|
if (ps != NULL)
|
|
{
|
|
int nItem = m_wndPipeList.GetNextSelectedItem(ps);
|
|
|
|
m_dDn = _ttof(m_wndPipeList.GetItemText(nItem, 0));
|
|
m_dOD = _ttof(m_wndPipeList.GetItemText(nItem, 1));
|
|
m_dThk = _ttof(m_wndPipeList.GetItemText(nItem, 2));
|
|
m_szShtNo = m_wndPipeList.GetItemText(nItem, 4);
|
|
m_sODSn = m_wndPipeList.GetItemText(nItem, 5);
|
|
m_sStd = m_wndPipeList.GetItemText(nItem, 6);
|
|
}
|
|
else
|
|
{
|
|
AfxMessageBox(_T("请选择管子规格!"));
|
|
return;
|
|
}
|
|
|
|
//螺纹验证
|
|
int nMaxDN = 0;
|
|
if (m_nConnectType == 2 && !IsTDnValid(m_dDn, m_sODSn, nMaxDN))
|
|
{
|
|
CString sTip;
|
|
sTip.Format(_T("数据库中此材质最大螺纹管线公称直径 %d !"), nMaxDN);
|
|
AfxMessageBox(sTip);
|
|
return;
|
|
}
|
|
|
|
int nSel = m_wndElbowradList.GetCurSel();
|
|
if (nSel == -1 /* && m_nRadioOn == 0*/)
|
|
{
|
|
AfxMessageBox(_T("请选择管子弯头曲率半径!"));
|
|
return;
|
|
}
|
|
|
|
//等级,不主要控
|
|
m_sLevel = _T("");
|
|
/*nSel = m_wndSpecList.GetCurSel();
|
|
if (nSel != -1)
|
|
{
|
|
m_wndSpecList.GetText(nSel, m_sLevel);
|
|
}*/
|
|
|
|
//压力
|
|
nSel = m_wndPressList.GetCurSel();
|
|
if (nSel == -1)
|
|
{
|
|
AfxMessageBox(_T("请选择项目设计压力!"));
|
|
return;
|
|
}
|
|
CString sText,sSQL;
|
|
m_wndPressList.GetText(nSel, sText);
|
|
m_dPressure = _ttof(sText);
|
|
|
|
//曲率
|
|
nSel = m_wndElbowradList.GetCurSel();
|
|
if (nSel != -1)
|
|
{
|
|
m_wndElbowradList.GetText(nSel, sText);
|
|
if (sText.CompareNoCase(_BYGB_) == 0)
|
|
{
|
|
m_nRadioOn = TRUE;//按国标结构长度
|
|
m_dRRatio = g_minRadio;//最小
|
|
|
|
//根据ODSN查询数据库 默认曲率
|
|
sSQL.Format(_T("select distinct [弯头曲率] from [AecElbowData] where [外径系列]='%s' order by [弯头曲率]"), m_sODSn);
|
|
CStringArray arRad;
|
|
m_pDb->GetSelData(sSQL, arRad);
|
|
if (arRad.GetSize() > 0)
|
|
{
|
|
m_dRRatio = _ttof(arRad.GetAt(0));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
m_dRRatio = _ttof(sText);
|
|
}
|
|
}
|
|
|
|
//管材
|
|
CString sODNo = m_sODSn;
|
|
if (IsPlasticsMat(0, sODNo))
|
|
{
|
|
//确认
|
|
if (m_sMaterialFit.CompareNoCase(m_sMaterial) != 0)
|
|
{
|
|
AfxMessageBox(_T("塑料管 管件 管道 材质必须相同!"));
|
|
return;
|
|
}
|
|
if (m_nDDir == 0 )
|
|
{
|
|
m_nDDir = 1;
|
|
}
|
|
}
|
|
|
|
//衬塑
|
|
if (IsGSFMaterial(sODNo))
|
|
{
|
|
if (m_nConnectType == 3 || m_nConnectType == 5)
|
|
{
|
|
if (m_sGaskets.IsEmpty())
|
|
{
|
|
AfxMessageBox(_T("垫片信息缺少,衬塑必须选择法兰或沟槽连接的垫片信息!"));
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
AfxMessageBox(_T("衬塑必须选择法兰或沟槽连接!"));
|
|
return;
|
|
}
|
|
}
|
|
|
|
if (IsRCPMaterial(sODNo))//水泥管
|
|
{
|
|
if (m_nConnectType > 1)
|
|
m_nConnectType = 0;
|
|
}
|
|
|
|
if (IsSRPEMaterial(sODNo))
|
|
{
|
|
if (m_nConnectType == 2)
|
|
m_nConnectType = 1;
|
|
}
|
|
|
|
//标高参考
|
|
switch (m_nElSel)
|
|
{
|
|
case 0://中心线
|
|
{
|
|
break;
|
|
}
|
|
case 1: //顶参考基准
|
|
{
|
|
m_dEl -= m_dOD / 2.0;
|
|
break;
|
|
}
|
|
case 2://底参考基准
|
|
{
|
|
m_dEl += m_dOD / 2.0;
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
|
|
// 所有管线标高都以管中心线为基准,所以,在这里还原m_nElSel
|
|
// 这样,双击弹出后,保证标高数据和标高基准数据可以匹配
|
|
m_nElSel = 0;
|
|
|
|
//法兰管
|
|
if (m_nConnectType == 3 ||
|
|
m_nConnectType == 5)//法兰管
|
|
{
|
|
double dMinT = 100;
|
|
struct resbuf rb;
|
|
acedGetVar(_T("INSUNITS"), &rb);
|
|
if (rb.resval.rint == AcDb::kUnitsMeters)
|
|
{
|
|
dMinT /= 1000.0;
|
|
}
|
|
|
|
if ((m_dFPLen - dMinT) < 1.e-6)
|
|
{
|
|
AfxMessageBox(_T(" 法兰管的标准分段长度不合理!"));
|
|
return;
|
|
}
|
|
|
|
//查询法兰管的法兰数据
|
|
if (!QueryFlangOnPipe())
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
|
|
SaveCurrentData();
|
|
|
|
EndDialog(IDOK);
|
|
}
|
|
|
|
void CWPipeDrawConfigDlg::SetFromXDataMap(AecDbObjXDataMap* pXDataMap)
|
|
{
|
|
if (pXDataMap != NULL)
|
|
{
|
|
pXDataMap->GetAt(PIPE_DRAWDIR, m_nDDir); //绘制类型
|
|
|
|
pXDataMap->GetAt(KEY_2DSTYLE, m_nSglorDBL); //单线 双线
|
|
|
|
//双线 单线1 双线 2
|
|
if (m_nSglorDBL == 2)
|
|
m_nSglorDBL = 0;
|
|
else
|
|
m_nSglorDBL = 1;
|
|
|
|
pXDataMap->GetAt(PIPE_RATIO, m_dRRatio);
|
|
pXDataMap->GetAt(KEY_RadRatio, m_nRadioOn);
|
|
|
|
m_nConnectType = 0;
|
|
//pXDataMap->GetAt(KEY_SINGLE,m_nSglorDBL);
|
|
pXDataMap->GetAt(PIPE_CONNECT, m_nConnectType);
|
|
|
|
pXDataMap->GetAt(PIPE_DN, m_dDn);
|
|
|
|
pXDataMap->GetAt(PIPE_OD, m_dOD);
|
|
|
|
pXDataMap->GetAt(PIPE_THICK, m_dThk);
|
|
|
|
pXDataMap->GetAt(PIPE_MATERIAL, m_sMaterial);
|
|
pXDataMap->GetAt(PIPE_MATERIALFT, m_sMaterialFit);
|
|
|
|
pXDataMap->GetAt(PIPE_ELBOWFLG, m_bElbowAngleDraw);
|
|
pXDataMap->GetAt(PIPE_BWELDDOT, m_bDrawWeldDot);
|
|
pXDataMap->GetAt(DOC_PLOTWIDTH, m_dSingleW);
|
|
pXDataMap->GetAt(DOC_WELDDIA, m_dWeldDir);
|
|
|
|
pXDataMap->GetAt(PIPE_ZONE, m_sZoneNo);
|
|
|
|
pXDataMap->GetAt(PIPE_INSTHICK, m_dInsThk);
|
|
|
|
pXDataMap->GetAt(PIPE_NO, m_sPipeNo);
|
|
pXDataMap->GetAt(KEY_NO, m_sSerNo);
|
|
|
|
pXDataMap->GetAt(DOC_INSMATER, m_sInsMtr);
|
|
|
|
pXDataMap->GetAt(PIPE_DESCR, m_sDescr);
|
|
|
|
pXDataMap->GetAt(PIPE_LEVEL, m_sLevel);
|
|
pXDataMap->GetAt(PID_PIPE_DPRESS, m_dPressure);
|
|
|
|
int ap;
|
|
pXDataMap->GetAt(PIPE_EAPP, ap);
|
|
m_app = (WPipe::EApp)ap;
|
|
|
|
pXDataMap->GetAt(PIPE_ODSN, m_sODSn);
|
|
|
|
CString sEndFs;
|
|
pXDataMap->GetAt(PIPE_FLANGF, sEndFs);
|
|
int nLen = sEndFs.GetLength();
|
|
if (nLen > 0)
|
|
{
|
|
m_sEndF1 = sEndFs.Mid(0, nLen / 2);
|
|
m_sEndF2 = sEndFs.Mid(nLen / 2 - 1, nLen / 2);
|
|
}
|
|
pXDataMap->GetAt(PIPE_GASKET, m_sGaskets);
|
|
pXDataMap->GetAt(PIPE_FLANGNOBOM, m_bFlangNoBom);
|
|
|
|
WPipe::PipeParam param;
|
|
memset(¶m, 0, sizeof(WPipe::PipeParam));
|
|
|
|
XDataMapToPipeParam(pXDataMap, ¶m);
|
|
|
|
SetShowParam(¶m);
|
|
}
|
|
}
|
|
|
|
void CWPipeDrawConfigDlg::GetPipeParam(WPipe::PipeParam* pParam) const
|
|
{
|
|
switch (m_nDDir)
|
|
{
|
|
case 0:
|
|
{
|
|
pParam->m_dD = m_dDn;
|
|
pParam->m_eD = WPipe::eDN;
|
|
break;
|
|
}
|
|
case 1:
|
|
{
|
|
pParam->m_dD = m_dOD;
|
|
pParam->m_eD = WPipe::eOD;
|
|
break;
|
|
}
|
|
case 2:
|
|
{
|
|
pParam->m_dD = m_dOD - 2.0 * m_dThk;
|
|
pParam->m_eD = WPipe::eID;
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
pParam->m_dDN = m_dDn;
|
|
pParam->m_dOD = m_dOD;
|
|
pParam->m_dThick = m_dThk;
|
|
pParam->m_dEl = m_dEl;
|
|
pParam->m_dRRatio = m_dRRatio;
|
|
pParam->m_nRadioOn = m_nRadioOn; //m_nRadioOn = 1;//强制为1查询不到计算
|
|
|
|
pParam->nPIPCmd = 0;
|
|
pParam->m_eRed = WPipe::eCen;
|
|
pParam->m_vtECCen.set(0, 0, 0);
|
|
pParam->m_eElBase = WPipe::kCen;
|
|
pParam->m_dInsThk = m_dInsThk;
|
|
pParam->m_nConnectType = m_nConnectType;//连接方式
|
|
pParam->m_nPipeColor = m_nColorIndex;
|
|
|
|
double dFPLen = m_dFPLen;
|
|
|
|
//衬塑
|
|
CString sODNo = m_sODSn;
|
|
if (m_sMaterial.Find(_T("衬塑")) != -1 ||
|
|
m_sMaterial.Find(_T("HG/T 20538")) != -1)
|
|
{
|
|
CStringArray arGastInfs;
|
|
CoreTools::SplitStrintToArray(m_sGaskets, arGastInfs, _T('/'));
|
|
|
|
if (arGastInfs.GetSize() >= 3)
|
|
{
|
|
double dUnits = 1.0;//默认毫米
|
|
if (CoreTools::IsMetersUnit())
|
|
dUnits *= .001;
|
|
|
|
dFPLen += _ttof(arGastInfs.GetAt(2)) * dUnits;
|
|
}
|
|
}
|
|
|
|
if (m_nConnectType == 3 || m_nConnectType == 5)
|
|
{
|
|
pParam->m_dInterfaceL = m_dInterfaceL;
|
|
pParam->m_dInterfaceD = m_dInterfaceD;
|
|
pParam->m_dInterfaceL3 = dFPLen;
|
|
}
|
|
|
|
pParam->m_app = m_app;
|
|
pParam->m_dPress = m_dPressure;
|
|
|
|
_tcscpy(pParam->szPipeno, m_sPipeNo);
|
|
_tcscpy(pParam->szMertial, m_sMaterial);
|
|
_tcscpy(pParam->szMertialFit, m_sMaterialFit);
|
|
_tcscpy(pParam->szZoneNo, m_sZoneNo);
|
|
_tcscpy(pParam->szUnitNo, m_sUnitNo);
|
|
_tcscpy(pParam->szNo, m_sSerNo);
|
|
_tcscpy(pParam->szDescr, m_sDescr);
|
|
_tcscpy(pParam->szSys, m_sCurrSys);
|
|
_tcscpy(pParam->szLevel, m_sLevel);
|
|
|
|
//
|
|
CString sEndF = m_sEndF1 + m_sEndF2;
|
|
_tcscpy(pParam->m_szEndF, sEndF);
|
|
|
|
_tcscpy(pParam->m_szGastInf, m_sGaskets);
|
|
|
|
pParam->m_nInsAndHead = m_nInsAndHead;
|
|
pParam->m_dInsThk = m_dInsThk;
|
|
_tcscpy(pParam->szInsSpec, m_sInsSpec);
|
|
_tcscpy(pParam->szInsMtr, m_sInsMtr);
|
|
_tcscpy(pParam->szInsMateral, m_sInsMaterial);
|
|
_tcscpy(pParam->szInsTag, m_szInsTag);
|
|
_tcscpy(pParam->szInsDim, m_szInsDim);
|
|
_tcscpy(pParam->szMedia, m_szMedia);
|
|
_tcscpy(pParam->szDescr, m_sDescr);
|
|
|
|
_tcscpy(pParam->szTraMtoInfo, m_sTraMtoInfo);
|
|
_tcscpy(pParam->szTraDescr, m_sTraDescr);
|
|
|
|
CString sLineNo;
|
|
sLineNo.Format(_T("%s-%s"), pParam->szMedia, pParam->szNo);
|
|
_tcscpy(pParam->szLineNo, sLineNo);
|
|
_tcscpy(pParam->szODSn, m_sODSn);
|
|
_tcscpy(pParam->szShtNo, m_szShtNo);
|
|
_tcscpy(pParam->szStdNo, m_sStd);
|
|
|
|
pParam->m_bFlangNoBom = m_bFlangNoBom;
|
|
|
|
//从数据库
|
|
//获取项目名称
|
|
|
|
CString sProject(CoreTools::GetCurrentProject());
|
|
|
|
/*
|
|
[项目名称] CHAR(255),
|
|
[等级名称] CHAR(250),
|
|
[类别] CHAR(250),
|
|
[类型] CHAR(250),
|
|
[公称直径] INTEGER,
|
|
[材质] CHAR(50),
|
|
[表号] CHAR(250),
|
|
[标准号] CHAR(250),
|
|
[外径] FLOAT,
|
|
[壁厚] FLOAT,
|
|
[外径系列] CHAR(255),
|
|
[描述] CHAR(255));
|
|
*/
|
|
//如果非市政
|
|
|
|
CString sSQL;
|
|
if (m_nTrade != WPipe::eCivial)
|
|
{
|
|
sSQL.Format(_T("select [项目名称],[等级名称],[类别],[类型],[公称直径],[材质],[表号],[标准号],[外径],[壁厚],[外径系列],[描述] from AecSpecPipe where [公称直径]=%d")
|
|
_T(" and [等级名称]='%s' and [项目名称]='%s'"),
|
|
(int)pParam->m_dDN, pParam->szLevel, sProject);
|
|
|
|
CStringArray arValues;
|
|
m_pDb->GetSelData(sSQL, arValues);
|
|
CString sText, sTemp;
|
|
if (arValues.GetSize() >= 12)
|
|
{
|
|
for (int i = 1; i < arValues.GetSize() - 1; i++)
|
|
{
|
|
sTemp = arValues.GetAt(i);
|
|
if (i == 1)
|
|
{
|
|
sText = sTemp;
|
|
}
|
|
else
|
|
{
|
|
sText += _T("^") + sTemp;
|
|
}
|
|
}
|
|
pParam->m_dOD = _ttof(arValues.GetAt(8));
|
|
_tcscpy(pParam->szMtoInfo, sText);
|
|
|
|
//最后一个是描述,
|
|
_tcscpy(pParam->szDescr, arValues.GetAt(arValues.GetSize() - 1));
|
|
|
|
//壁厚 外径系列 描述
|
|
double dThk = _ttof(arValues.GetAt(arValues.GetSize() - 3));
|
|
if (dThk > 1.e-2)
|
|
pParam->m_dThick = dThk;
|
|
}
|
|
}
|
|
|
|
//英制的记录
|
|
/*CString sInchDN = _T("");
|
|
sSQL.Format(_T("select [英制] from KTDn where [公制]=%d"), (int)(pParam->m_dDN+0.5) );
|
|
m_pDb->GetSelData(sSQL, sInchDN);
|
|
if (!sInchDN.IsEmpty())
|
|
_tcscpy(pParam->szInchDN, sInchDN);
|
|
*/
|
|
|
|
//如果是米单位
|
|
PipeParamConvert2UnitMeters(pParam);
|
|
}
|
|
|
|
void CWPipeDrawConfigDlg::SetShowParam(WPipe::PipeParam* pParam)
|
|
{
|
|
if (pParam != NULL)
|
|
{
|
|
//转换为毫米单位
|
|
WPipe::PipeParam param;
|
|
memset(¶m, 0, sizeof(WPipe::PipeParam));
|
|
memcpy(¶m, pParam, sizeof(WPipe::PipeParam));
|
|
|
|
PipeParamConvert2UnitMmeters(¶m);
|
|
|
|
m_nOnlyDN = (int)(param.m_dDN + 0.5);
|
|
|
|
switch (param.m_eD)
|
|
{
|
|
case WPipe::eDN:
|
|
{
|
|
m_nDDir = 0;
|
|
break;
|
|
}
|
|
case WPipe::eOD:
|
|
{
|
|
m_nDDir = 1;
|
|
break;
|
|
}
|
|
case WPipe::eID:
|
|
{
|
|
m_nDDir = 2;
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
|
|
m_dDn = param.m_dDN;
|
|
m_dOD = param.m_dOD;
|
|
m_dThk = param.m_dThick;
|
|
m_dEl = param.m_dEl;
|
|
m_nElSel = 0;//
|
|
// 所有管线标高都以管中心线为基准,所以,在这里还原m_nElSel
|
|
// 这样,双击弹出后,保证标高数据和标高基准数据可以匹配
|
|
m_dRRatio = param.m_dRRatio;
|
|
m_nRadioOn = param.m_nRadioOn;
|
|
m_dInsThk = param.m_dInsThk;
|
|
m_nConnectType = param.m_nConnectType;
|
|
m_nColorIndex = param.m_nPipeColor;
|
|
m_bFlangNoBom = param.m_bFlangNoBom;
|
|
|
|
if (m_nConnectType == 3 || m_nConnectType == 5)
|
|
{
|
|
m_dInterfaceL = param.m_dInterfaceL;
|
|
m_dInterfaceD = param.m_dInterfaceD;
|
|
m_dFPLen = param.m_dInterfaceL3;
|
|
}
|
|
|
|
m_app = param.m_app;
|
|
m_sPipeNo = param.szPipeno;
|
|
m_sSerNo = param.szNo;
|
|
m_sMaterial = param.szMertial;
|
|
m_sMaterialFit = param.szMertialFit;
|
|
m_sZoneNo = param.szZoneNo;
|
|
m_sUnitNo = param.szUnitNo;
|
|
m_sInsMtr = param.szInsMtr;
|
|
m_sDescr = param.szDescr;
|
|
m_sCurrSys = param.szSys;
|
|
m_sLevel = param.szLevel;
|
|
m_dPressure = param.m_dPress;
|
|
|
|
m_sEndF1 = param.m_szEndF;
|
|
m_sEndF2 = m_sEndF1;
|
|
|
|
//端面 防止双击修改产生的重复叠加
|
|
if (m_pDb != NULL)
|
|
{
|
|
CStringArray arVals;
|
|
CString sSQL = _T("select distinct [端面型式] from AecFace");
|
|
m_pDb->GetSelData(sSQL, arVals);
|
|
|
|
CString sEF;
|
|
for(int ii = 0;ii < arVals.GetSize();ii++)
|
|
{
|
|
sEF = arVals.GetAt(ii);
|
|
if (m_sEndF1.Find(sEF) != -1)
|
|
{
|
|
m_sEndF1 = sEF;
|
|
m_sEndF2 = m_sEndF1;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
m_sGaskets = param.m_szGastInf;
|
|
|
|
m_sInsMtr = param.szInsMtr;
|
|
m_dInsThk = param.m_dInsThk;
|
|
m_nInsAndHead = param.m_nInsAndHead;
|
|
|
|
m_sInsSpec = param.szInsSpec;
|
|
m_sInsMaterial = param.szInsMateral;
|
|
m_szInsTag = param.szInsTag;
|
|
m_szInsDim = param.szInsDim;
|
|
m_szMedia = param.szMedia;
|
|
m_sDescr = param.szDescr;
|
|
m_sODSn = param.szODSn;
|
|
//IsSRPEMaterial(m_sODSn);//Rsure
|
|
m_sStd = param.szStdNo;
|
|
}
|
|
}
|
|
|
|
void CWPipeDrawConfigDlg::LoadLastData()
|
|
{
|
|
if (s_pwndLastData != NULL)
|
|
{
|
|
m_nDDir = s_pwndLastData->m_nDDir;
|
|
m_nRadioOn = s_pwndLastData->m_nRadioOn;
|
|
m_sFEGSInf = s_pwndLastData->m_sFEGSInf;
|
|
m_dFPLen = s_pwndLastData->m_dFPLen;
|
|
m_dEl = s_pwndLastData->m_dEl;
|
|
m_nElSel = s_pwndLastData->m_nElSel;
|
|
m_sSerNo = s_pwndLastData->m_sSerNo;
|
|
m_sZoneNo = s_pwndLastData->m_sZoneNo;
|
|
m_sUnitNo = s_pwndLastData->m_sUnitNo;
|
|
m_sPipeNo = s_pwndLastData->m_sPipeNo;
|
|
m_sDescr = s_pwndLastData->m_sDescr;
|
|
m_sMaterial = s_pwndLastData->m_sMaterial;
|
|
m_sMaterialFit = s_pwndLastData->m_sMaterialFit;
|
|
m_sODSn = s_pwndLastData->m_sODSn;
|
|
m_dDn = s_pwndLastData->m_dDn;
|
|
m_dOD = s_pwndLastData->m_dOD;
|
|
m_dThk = s_pwndLastData->m_dThk;
|
|
m_dRRatio = s_pwndLastData->m_dRRatio;
|
|
m_sProject = s_pwndLastData->m_sProject;
|
|
m_nTrade = s_pwndLastData->m_nTrade;
|
|
m_sLevel = s_pwndLastData->m_sLevel;
|
|
m_dPressure = s_pwndLastData->m_dPressure;
|
|
m_dInterfaceL = s_pwndLastData->m_dInterfaceL;
|
|
m_dInterfaceD = s_pwndLastData->m_dInterfaceD;
|
|
m_bLevelSel = s_pwndLastData->m_bLevelSel;
|
|
m_szShtNo = s_pwndLastData->m_szShtNo;
|
|
m_sTraMtoInfo = s_pwndLastData->m_sTraMtoInfo;
|
|
m_sTraDescr = s_pwndLastData->m_sTraDescr;
|
|
m_sParamSetting = s_pwndLastData->m_sParamSetting;
|
|
m_sEndF1 = s_pwndLastData->m_sEndF1;
|
|
m_sEndF2 = s_pwndLastData->m_sEndF2;
|
|
m_sGaskets = s_pwndLastData->m_sGaskets;
|
|
m_nColorIndex = s_pwndLastData->m_nColorIndex;
|
|
m_nSglorDBL = s_pwndLastData->m_nSglorDBL;
|
|
m_bElbowAngleDraw = s_pwndLastData->m_bElbowAngleDraw;
|
|
m_bDrawWeldDot = s_pwndLastData->m_bDrawWeldDot;
|
|
m_dSingleW = s_pwndLastData->m_dSingleW;
|
|
m_dWeldDir = s_pwndLastData->m_dWeldDir;
|
|
|
|
m_sInsMtr = s_pwndLastData->m_sInsMtr;
|
|
m_dInsThk = s_pwndLastData->m_dInsThk;
|
|
m_nInsAndHead = s_pwndLastData->m_nInsAndHead;
|
|
m_sInsSpec = s_pwndLastData->m_sInsSpec;
|
|
m_szInsTag = s_pwndLastData->m_szInsTag;
|
|
m_sInsMaterial = s_pwndLastData->m_sInsMaterial;
|
|
m_szInsDim = s_pwndLastData->m_szInsDim;
|
|
m_szMedia = s_pwndLastData->m_szMedia;
|
|
m_idCurSys = s_pwndLastData->m_idCurSys;
|
|
}
|
|
}
|
|
|
|
void CWPipeDrawConfigDlg::SaveCurrentData()
|
|
{
|
|
if (s_pwndLastData == NULL)
|
|
{
|
|
s_pwndLastData = new CWPipeDrawConfigDlg;
|
|
}
|
|
|
|
s_pwndLastData->m_nDDir = m_nDDir;
|
|
s_pwndLastData->m_nRadioOn = m_nRadioOn;
|
|
s_pwndLastData->m_sFEGSInf = m_sFEGSInf;
|
|
s_pwndLastData->m_dFPLen = m_dFPLen;
|
|
s_pwndLastData->m_dEl = m_dEl;
|
|
s_pwndLastData->m_nElSel = m_nElSel;
|
|
s_pwndLastData->m_sSerNo = m_sSerNo;
|
|
s_pwndLastData->m_sZoneNo = m_sZoneNo;
|
|
s_pwndLastData->m_sUnitNo = m_sUnitNo;
|
|
s_pwndLastData->m_sPipeNo = m_sPipeNo;
|
|
s_pwndLastData->m_sDescr = m_sDescr;
|
|
s_pwndLastData->m_sMaterial = m_sMaterial;
|
|
s_pwndLastData->m_sMaterialFit = m_sMaterialFit;
|
|
s_pwndLastData->m_sODSn = m_sODSn;
|
|
s_pwndLastData->m_dDn = m_dDn;
|
|
s_pwndLastData->m_dOD = m_dOD;
|
|
s_pwndLastData->m_dThk = m_dThk;
|
|
s_pwndLastData->m_dRRatio = m_dRRatio;
|
|
s_pwndLastData->m_sProject = m_sProject;
|
|
s_pwndLastData->m_nTrade = m_nTrade;
|
|
s_pwndLastData->m_sLevel = m_sLevel;
|
|
s_pwndLastData->m_dPressure = m_dPressure;
|
|
s_pwndLastData->m_dInterfaceL = m_dInterfaceL;
|
|
s_pwndLastData->m_dInterfaceD = m_dInterfaceD;
|
|
s_pwndLastData->m_bLevelSel = m_bLevelSel;
|
|
s_pwndLastData->m_szShtNo = m_szShtNo;
|
|
s_pwndLastData->m_sTraMtoInfo = m_sTraMtoInfo;
|
|
s_pwndLastData->m_sTraDescr = m_sTraDescr;
|
|
s_pwndLastData->m_sParamSetting = m_sParamSetting;
|
|
s_pwndLastData->m_sEndF1 = m_sEndF1;
|
|
s_pwndLastData->m_sEndF2 = m_sEndF2;
|
|
s_pwndLastData->m_sGaskets = m_sGaskets;
|
|
s_pwndLastData->m_nColorIndex = m_nColorIndex;
|
|
s_pwndLastData->m_nSglorDBL = m_nSglorDBL;
|
|
s_pwndLastData->m_bElbowAngleDraw = m_bElbowAngleDraw;
|
|
s_pwndLastData->m_bDrawWeldDot = m_bDrawWeldDot;
|
|
s_pwndLastData->m_dSingleW = m_dSingleW;
|
|
s_pwndLastData->m_dWeldDir = m_dWeldDir;
|
|
|
|
s_pwndLastData->m_sInsMtr = m_sInsMtr;
|
|
s_pwndLastData->m_dInsThk = m_dInsThk;
|
|
s_pwndLastData->m_nInsAndHead = m_nInsAndHead;
|
|
s_pwndLastData->m_sInsSpec = m_sInsSpec;
|
|
s_pwndLastData->m_szInsTag = m_szInsTag;
|
|
s_pwndLastData->m_sInsMaterial = m_sInsMaterial;
|
|
s_pwndLastData->m_szInsDim = m_szInsDim;
|
|
s_pwndLastData->m_szMedia = m_szMedia;
|
|
s_pwndLastData->m_idCurSys = m_idCurSys;
|
|
}
|
|
|
|
void CWPipeDrawConfigDlg::pipeSysSetting()
|
|
{
|
|
CString dbPath = FilePath::GetSysDir();
|
|
dbPath += _T("\\Plumbing.db");
|
|
|
|
CUIISQLiteServer ADOServer;
|
|
if (!ADOServer.InitADOServer(dbPath))
|
|
{
|
|
AfxMessageBox(_T("数据库驱动加载数据库Plumbing.db失败!"));
|
|
return;
|
|
}
|
|
|
|
CStringArray arSyses;
|
|
PipelineTools::setLayerSys(&ADOServer, arSyses);
|
|
}
|
|
|
|
//介质
|
|
void CWPipeDrawConfigDlg::OnBnClickedButton3()
|
|
{
|
|
UpdateData();
|
|
|
|
//int nSel = m_wndSpecList.GetCurSel();
|
|
//if (nSel != -1)
|
|
// m_wndSpecList.GetText(nSel, m_sLevel);
|
|
|
|
CString sText;
|
|
int nSel = m_wndPressList.GetCurSel();
|
|
if (nSel != -1)
|
|
{
|
|
m_wndPressList.GetText(nSel, sText);
|
|
m_dPressure = _ttof(sText);
|
|
}
|
|
|
|
nSel = m_wndComboSys.GetCurSel();
|
|
if (nSel != -1)
|
|
m_wndComboSys.GetLBText(nSel, m_sCurrSys);
|
|
|
|
nSel = m_wndElbowradList.GetCurSel();
|
|
if (nSel != -1)
|
|
{
|
|
m_wndElbowradList.GetText(nSel, sText);
|
|
m_dRRatio = _ttof(sText);
|
|
}
|
|
|
|
KTMediumDlg dlg;
|
|
dlg.SetADOServer(m_pDb);
|
|
|
|
WPipe::PipeParam param;
|
|
GetPipeParam(¶m);
|
|
|
|
dlg.SetPipeParam(¶m);
|
|
if (IDOK == dlg.DoModal())
|
|
{
|
|
m_szMedia = param.szMedia;
|
|
m_sLevel = param.szLevel;
|
|
m_sDescr = param.szDescr;
|
|
|
|
/*
|
|
int nIndex = m_wndSpecList.FindString(0, m_sLevel);
|
|
if (nIndex != -1)
|
|
{
|
|
m_wndSpecList.SetCurSel(nIndex);
|
|
}*/
|
|
|
|
FormatParamSettingAndSpec();
|
|
|
|
UpdateData(FALSE);
|
|
}
|
|
}
|