#include "stdafx.h" #include "DJGXDlg.h" #include "uiiado.h" #include "PipelineTools.h" #include "KTInsulateMainDlg.h" #include "AecPipeSupport.h" #include "CoreTools.h" #include "KTModelLayoutXData.h" #include "SpecIndexDlg.h" const LPCTSTR g_pszAecSpecPipe[] = {_T("公称直径"),_T("外径"),_T("壁厚"),_T("类型"),_T("端面"),_T("材质"),_T("表号"),_T("标准号"),_T("外径系列"),_T("描述"),_T("制造类型"),_T("元件代码"),NULL}; const int g_nColWidths[] = { 90, 60, 60, 120, 60, 180, 80, 180, 80, 180, 80, 140, 0}; const LPCTSTR g_pszAecPipeSpecIndex[] = {_T("介质"),_T("介质代号"),_T("最大口径"),_T("设计温度"),_T("设计压力"),_T("法兰等级"),_T("材质"),_T("腐蚀裕度"),NULL}; const int g_nColWidths2[] = { 200, 80, 80, 80, 80, 80, 140, 80, 0}; extern void DLLIMPEXP XDataMapToPipeParam(const AecDbObjXDataMap *pXDataMapSrc, WPipe::PipeParam *pParamL); extern void DLLIMPEXP PipeParamConvert2UnitMeters(WPipe::PipeParam *pParam); extern void DLLIMPEXP PipeParamConvert2UnitMmeters(WPipe::PipeParam *pParam); double g_minRadio = 1.0; IMPLEMENT_DYNAMIC(CDJGXDlg, CDialog) CDJGXDlg::CDJGXDlg(CWnd* pParent /*=NULL*/) : CDialog(CDJGXDlg::IDD, pParent) , m_nElSel(0) , m_dEl(1000) , m_nDDir(0) , m_sSerNo(_T("1000")) , m_sZoneNo(_T("A")) , m_sPipeNo(_T("")) , m_dFPLen(10000) , m_sParamSetting(_T("")) , m_sUnit(_T("00")) { m_nConnectType = 0; m_pDb = NULL; m_sCurrSys = _T(""); m_bLockEl = FALSE; m_bFilled = false; memset(&m_pipeParam,0,sizeof(WPipe::PipeParam)); } CDJGXDlg::~CDJGXDlg() { } void CDJGXDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_COMBO2, m_wndProCombo); DDX_Control(pDX, IDC_COMBO1, m_wndSpecCombo); DDX_Control(pDX, IDC_COMBO4, m_wndRadioCombo); DDX_Control(pDX, IDC_LIST2, m_wndPipeSpecList); DDX_Control(pDX, IDC_LIST1, m_wndPipeSpecIdxList); DDX_Radio(pDX, IDC_RADIO3, m_nElSel); DDX_Text(pDX, IDC_EDIT5, m_dEl); DDX_Radio(pDX, IDC_RADIO1, m_nDDir); DDX_Text(pDX, IDC_EDIT1, m_sSerNo); DDX_Text(pDX, IDC_EDIT2, m_sZoneNo); DDX_Text(pDX, IDC_EDIT3, m_sPipeNo); DDX_Text(pDX, IDC_EDIT4, m_dFPLen); DDX_Control(pDX, IDC_COMBO3, m_wndComboSys); DDX_Text(pDX, IDC_EDIT6, m_sParamSetting); DDX_Text(pDX, IDC_EDIT7, m_sUnit); DDX_Control(pDX, IDC_EDIT5, m_wndEditEl); } BEGIN_MESSAGE_MAP(CDJGXDlg, CDialog) ON_BN_CLICKED(IDOK, &CDJGXDlg::OnBnClickedOk) ON_CBN_SELCHANGE(IDC_COMBO2, &CDJGXDlg::OnCbnSelchangeCombo2) ON_CBN_SELCHANGE(IDC_COMBO1, &CDJGXDlg::OnCbnSelchangeCombo1) ON_BN_CLICKED(IDC_BUTTON2, &CDJGXDlg::OnBnClickedButton2) ON_BN_CLICKED(IDC_BUTTON3, &CDJGXDlg::OnBnClickedButton3) ON_BN_CLICKED(IDC_BTADDSPECIDX,&CDJGXDlg::OnBnClickedAddSpecIdx) ON_EN_CHANGE(IDC_EDIT2, &CDJGXDlg::OnEnChangeEdit2) ON_EN_CHANGE(IDC_EDIT7, &CDJGXDlg::OnEnChangeEdit2) ON_CBN_SELCHANGE(IDC_COMBOSYSLAY, &CDJGXDlg::OnCbnSelchangeComboSys) ON_NOTIFY(NM_CLICK, IDC_LIST1, &CDJGXDlg::OnNMClickList1) END_MESSAGE_MAP() BOOL CDJGXDlg::OnInitDialog() { CDialog::OnInitDialog(); InitListCtrlStyle(); ShowProSpec(); ShowRadio(); InitLayerSys(); return TRUE; } BOOL CDJGXDlg::InitListCtrlStyle() { CBitmap bmp; if (!bmp.LoadBitmap(IDB_BMPSPEC)) { AfxMessageBox(_T("Can't load bitmap: %x\n"), IDB_BMPSPEC); ASSERT(FALSE); return FALSE; } BITMAP bmpObj; bmp.GetBitmap(&bmpObj); UINT nFlags = ILC_COLOR24 | ILC_MASK; m_imageList.Create(16, bmpObj.bmHeight, nFlags, 0, 0); m_imageList.Add(&bmp, RGB(255, 0, 0)); m_wndPipeSpecList.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_SINGLEROW); m_wndPipeSpecList.SetImageList(&m_imageList, LVSIL_SMALL); m_wndPipeSpecIdxList.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_SINGLEROW); m_wndPipeSpecIdxList.SetImageList(&m_imageList, LVSIL_SMALL); int n = 0; while(g_nColWidths[n] > 0) { m_wndPipeSpecList.InsertColumn(n,g_pszAecSpecPipe[n],LVCFMT_LEFT,g_nColWidths[n]); n++; } n = 0; while(g_nColWidths2[n] > 0) { m_wndPipeSpecIdxList.InsertColumn(n,g_pszAecPipeSpecIndex[n],LVCFMT_LEFT,g_nColWidths2[n]); n++; } m_wndEditEl.EnableWindow(!m_bLockEl); return TRUE; } void CDJGXDlg::SetOnlyByDN(int nDN) { } bool CDJGXDlg::ShowProSpec() { AecDbObjXDataMap xDataMap; if (!KTModelLayoutXData::ReadModelXData(KT_PIPEINIT, xDataMap)) { acedAlert(_T("\n系统未初始化!请执行设置带单下初始设置!")); return false; } CString sPro; xDataMap.GetAt(DOC_PIDPROJECT, sPro); CString sSQL; sSQL.Format(_T("select distinct [项目名称] from [AecSpecname]")); CStringArray arVals; m_pDb->GetSelData(sSQL,arVals); for(int i = 0;i < arVals.GetSize();i++) { m_wndProCombo.AddString(arVals.GetAt(i)); } int nSel = 0; if ((nSel = m_wndProCombo.FindString(0, sPro)) != -1) { m_wndProCombo.SetCurSel(nSel); } else { m_wndProCombo.SetCurSel(0); sPro = arVals.GetAt(0); } arVals.RemoveAll(); sSQL.Format(_T("select distinct [等级名称] from [AecSpecname] where [项目名称]='%s'"),sPro); m_pDb->GetSelData(sSQL,arVals); for(int n = 0;n < arVals.GetSize();n++) { m_wndSpecCombo.AddString(arVals.GetAt(n)); } nSel = -1; if (m_bFilled) { if ((nSel = m_wndSpecCombo.FindString(0, m_pipeParam.szLevel)) == -1) { } } CString sSpec; if (nSel != -1) { m_wndSpecCombo.SetCurSel(nSel); sSpec = arVals.GetAt(nSel); } else { sSQL.Format(_T("select [项目名称],[等级名称] from [AecSpecname] where [等级名称]='%s'"), m_pipeParam.szLevel); arVals.RemoveAll(); m_pDb->GetSelData(sSQL, arVals); if (arVals.GetSize() >= 2) { sPro = arVals.GetAt(0); sSpec = arVals.GetAt(1); int nPro = m_wndProCombo.FindString(0, sPro); if (nPro != -1) { m_wndProCombo.SetCurSel(nPro); OnCbnSelchangeCombo2(); return true; } } } if (nSel == -1 && m_wndSpecCombo.GetCount() > 0) { m_wndSpecCombo.SetCurSel(0); m_wndSpecCombo.GetLBText(0, sSpec); } ShowPipeSpecList(sPro,sSpec); return true; } bool CDJGXDlg::InitLayerSys() { //显示当前图层系统 CStringArray arSyses; for (int i = 0;i < m_wndPipeSpecIdxList.GetItemCount();i++) { //介质 arSyses.Add(m_wndPipeSpecIdxList.GetItemText(i, 0)); if (i == 0) { m_sCurrSys = m_wndPipeSpecIdxList.GetItemText(i, 0); } } m_wndComboSys.ResetContent(); CString sTemp; 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); //获取分系统信息 //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_pipeParam.m_nPipeColor = _ttoi(arVals.GetAt(2)); } m_idCurSys = CoreTools::getLyForPipe(m_sCurrSys); OnCbnSelchangeComboSys(); return true; } void CDJGXDlg::OnCbnSelchangeComboSys() { UpdateData(); FormatParamSettingAndSpec(); UpdateData(FALSE); } void CDJGXDlg::OnCbnSelchangeCombo2() { int nCur = m_wndProCombo.GetCurSel(); if (nCur != -1) { CString sPro; m_wndProCombo.GetLBText(nCur,sPro); m_wndSpecCombo.ResetContent(); CStringArray arVals; CString sSQL; sSQL.Format(_T("select distinct [等级名称] from [AecSpecname] where [项目名称]='%s'"),sPro); m_pDb->GetSelData(sSQL,arVals); for(int n = 0;n < arVals.GetSize();n++) { m_wndSpecCombo.AddString(arVals.GetAt(n)); } m_wndSpecCombo.SetCurSel(0); CString sSpec = arVals.GetAt(0); ShowPipeSpecList(sPro,sSpec); } } void CDJGXDlg::OnCbnSelchangeCombo1() { int nCur = m_wndProCombo.GetCurSel(); if (nCur != -1) { CString sPro; m_wndProCombo.GetLBText(nCur,sPro); nCur = m_wndSpecCombo.GetCurSel(); if (nCur != -1) { CString sSpec; m_wndSpecCombo.GetLBText(nCur,sSpec); ShowPipeSpecList(sPro,sSpec); } } } bool CDJGXDlg::ShowPipeSpecList(CString& sPro,CString& sSpec) { m_wndPipeSpecList.DeleteAllItems(); m_wndPipeSpecIdxList.DeleteAllItems(); CString sFields = _T(""); int n = 0; while(g_nColWidths[n] > 0) { sFields += _T("["); sFields += g_pszAecSpecPipe[n]; sFields += _T("],"); n++; } sFields.TrimRight(_T(',')); CString sSQL,sDN; sSQL.Format(_T("select %s from [AecSpecPipe] where [项目名称]='%s' and [等级名称]='%s' and [短代码]='PIP' order by [公称直径]"),sFields,sPro,sSpec); CUIIValueTable valueTable; m_pDb->GetSelData(sSQL,valueTable); int nSel = 0; CStringArray arVals; for(int i = 0;i < valueTable.GetTableLogicSize();i++) { arVals.RemoveAll(); valueTable.GetValueRecord(i,arVals); //DN sDN = arVals.GetAt(0); m_wndPipeSpecList.InsertItem(i,sDN,0); if (m_bFilled) { if (_ttoi(sDN) == m_pipeParam.m_dDN) nSel = i; } for(int n = 1;n < arVals.GetSize();n++) { m_wndPipeSpecList.SetItemText(i,n,arVals.GetAt(n)); } } m_wndPipeSpecList.SetItemState(nSel,LVIS_SELECTED,LVIS_SELECTED); n = 0; sFields = _T(""); while(g_nColWidths2[n] > 0) { sFields += _T("["); sFields += g_pszAecPipeSpecIndex[n]; sFields += _T("],"); n++; } sFields.TrimRight(_T(',')); /* [等级号] VARCHAR(50), [介质] VARCHAR(256), [介质代号] VARCHAR(256), [最大口径] INTEGER, [设计温度] INTEGER, [设计压力] FLOAT, [法兰等级] VARCHAR(50), [材质] varchar(256), [腐蚀裕度] float); */ sSQL.Format(_T("select %s from [AecPipeSpecIndex] where [等级号]='%s'"),sFields,sSpec); valueTable.RemoveAll(TRUE); m_pDb->GetSelData(sSQL,valueTable); CString sMedia; nSel = 0; for(int i = 0;i < valueTable.GetTableLogicSize();i++) { arVals.RemoveAll(); valueTable.GetValueRecord(i,arVals); sMedia = arVals.GetAt(0); m_wndPipeSpecIdxList.InsertItem(i,sMedia,0); if (m_bFilled) { if (sMedia.CompareNoCase(m_pipeParam.szSys) == 0) nSel = i; } for(int n = 1;n < arVals.GetSize();n++) { m_wndPipeSpecIdxList.SetItemText(i,n,arVals.GetAt(n)); } } m_wndPipeSpecIdxList.SetItemState(nSel,LVIS_SELECTED,LVIS_SELECTED); ShowPipeSpecLayer(); InitLayerSys(); return true; } //8-200 之间 int randint_range(int n, int m) {//产生n~m间的随机数(包括m和n) double base = ((double)rand()) / RAND_MAX; int res = n + (base * (double)(m - n + 1)); return res; } void CDJGXDlg::ShowPipeSpecLayer() { int nColor = -1; CString sName,sLayer,sDimTxt,sSQL,sFields,sSys; /* [LAYKEY] varchar(50), [LAYNAME] varchar(50), [PIPESYS] varchar(50), [SYSTEM] varchar(50), [COLOR] varchar(50), [LINETYPE] varchar(50), [LINEWIDTH] varchar(50), [DIMKEY] varchar(50), [MATERIAL] varchar(50)); */ sFields = _T("LAYKEY,LAYNAME,PIPESYS,[SYSTEM],COLOR,LINETYPE,LINEWIDTH,DIMKEY,MATERIAL"); int nRes = 0; for (int i = 0;i < m_wndPipeSpecIdxList.GetItemCount();i++) { /* [介质] VARCHAR(256), [介质代号] VARCHAR(256), [最大口径] INTEGER, [设计温度] INTEGER, [设计压力] FLOAT, [法兰等级] VARCHAR(50), [材质] varchar(256), [腐蚀裕度] float); */ sName = m_wndPipeSpecIdxList.GetItemText(i, 0); //[介质] sDimTxt = m_wndPipeSpecIdxList.GetItemText(i, 1);//[介质代号] if (i == 0) m_sCurrSys = sSys; sLayer.Format(_T("%s边线"),sName); sSQL.Format(_T("select * from [WConfig_CN] where [LAYNAME]='%s'"),sLayer); if ( m_pDb->IsSelEmpty(sSQL)) { /* [LAYKEY] varchar(50), [LAYNAME] varchar(50), [PIPESYS] varchar(50), [SYSTEM] varchar(50), [COLOR] varchar(50), [LINETYPE] varchar(50), [LINEWIDTH] varchar(50), [DIMKEY] varchar(50), [MATERIAL] varchar(50)); */ nColor = randint_range(8, 200); //边线 sSys = _T("管线外边线"); sSQL.Format(_T("insert into [WConfig_CN] (%s) values ('%d','%s','%s','%s','%d','%s','%s','%s','%s' )"), sFields,nColor, sLayer, sSys, sName,nColor,_T("Continuous"),_T("0.0"), sDimTxt,sDimTxt); nRes = m_pDb->ExecuteSQL(sSQL); //中心线 nColor = randint_range(1, 7); sLayer.Format(_T("%s中心线"), sName); sSys = _T("管线中心线"); sSQL.Format(_T("insert into [WConfig_CN] (%s) values ('%d','%s','%s','%s','%d','%s','%s','%s','%s' )"), sFields,nColor, sLayer, sSys, sName, nColor, _T("CENTER2"), _T("0.0"), sDimTxt, sDimTxt); nRes = m_pDb->ExecuteSQL(sSQL); } } } bool CDJGXDlg::ShowRadio() { CString sSQL; sSQL.Format(_T("select [曲率半径] from [AecElbowradius] order by [曲率半径]")); CStringArray arVals; m_pDb->GetSelData(sSQL,arVals); for(int i = 0;i < arVals.GetSize();i++) { m_wndRadioCombo.AddString(arVals.GetAt(i)); } m_wndRadioCombo.SetCurSel(2); return true; } static void TextToApp(WPipe::PipeParam& pparam, const CString& sText) { //BE 坡口焊 //BW 对焊 //MNPT //MGE //SW 承插 //PE 平端 //SCRD 螺纹 //SAWH 螺旋埋弧焊 //TE 螺纹端 //ISNS 内螺纹,暗杆 //ISRS 内螺纹, 明杆 //FLGD 法兰型 pparam.m_app = WPipe::eButtweld; pparam.m_nConnectType = 0;//焊接 if (sText.CompareNoCase(_T("SW") ) == 0) { pparam.m_app = WPipe::eSanitary; pparam.m_nConnectType = 1;//承插 } else if(sText.CompareNoCase(_T("SCRD") ) == 0 || sText.CompareNoCase(_T("SAWH")) == 0 || sText.CompareNoCase(_T("TE")) == 0 || sText.CompareNoCase(_T("ISNS")) == 0 || sText.CompareNoCase(_T("ISRS")) == 0) { pparam.m_app = WPipe::eVictaulic; pparam.m_nConnectType = 2;//螺纹 } else if(sText.CompareNoCase(_T("FLGD") ) == 0 || sText.CompareNoCase(_T("FG")) == 0) { pparam.m_app = WPipe::eFlange; pparam.m_nConnectType = 3;//法兰 } } static BOOL IsGSFMaterial(CString& sMaterial,CString &sODNo) { //目前只能按照材质判断 if (sMaterial.Find(_T("衬塑")) != -1 || sMaterial.Find(_T("HG/T 20538")) != -1) { sODNo = _T("GSF"); return TRUE; } return FALSE; } static bool IsPlasticsMat(CString &sMaterial, 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 (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"); return true; } } return false; } static BOOL IsSRPEMaterial(CString &sMaterial, CString &sODNo) { //目前只能按照材质判断 if (sMaterial.Find(_T("钢骨架")) != -1 || sMaterial.Find(_T("CJ/T 123")) != -1) { sODNo = _T("SRPE"); return TRUE; } return FALSE; } void CDJGXDlg::QueryFlangOnPipe() { if (m_pipeParam.m_nConnectType == 3 || m_pipeParam.m_nConnectType == 5) { double dWD = 0, dWh = 0, dThk = 0, dN = 0; if (TDbPipeSupport::QueryFlangData(m_pDb , m_pipeParam.m_dDN , m_pipeParam.m_dPress , dWD , dWh , dThk , dN , CoreTools::GetCurrentProject() , m_pipeParam.szLevel)) { m_pipeParam.m_dInterfaceL = dWh; m_pipeParam.m_dInterfaceD = dWD; } } else if (m_pipeParam.m_nConnectType == 1)//承插 { // } else if (m_pipeParam.m_nConnectType == 2)//螺纹 { // } } void CDJGXDlg::OnBnClickedOk() { UpdateData(); m_bFilled = false; FillPipeParam(); CDialog::OnOK(); } void CDJGXDlg::FillPipeParam() { memset(&m_pipeParam,0,sizeof(WPipe::PipeParam)); CStringArray arVals; int nItem = -1; POSITION ps = m_wndPipeSpecList.GetFirstSelectedItemPosition(); if (ps != NULL) { nItem = m_wndPipeSpecList.GetNextSelectedItem(ps); if (nItem == -1) { AfxMessageBox(_T("请选择公称直径行!")); return; } } //SQL查询条件 //[公称直径]=%d and [等级名称]='%s' and [项目]='%s' CString sWhere,sPro; int nSel = m_wndProCombo.GetCurSel(); if (nSel != -1) { m_wndProCombo.GetLBText(nSel, sPro); } //等级 CString sSpec; int nCur = m_wndSpecCombo.GetCurSel(); if (nCur != -1) { m_wndSpecCombo.GetLBText(nCur,sSpec); _tcscpy(m_pipeParam.szLevel,sSpec); } //公称 CString sText,sSQL; sText = m_wndPipeSpecList.GetItemText(nItem,0); m_pipeParam.m_dDN = _ttof(sText); m_pipeParam.m_dD = m_pipeParam.m_dDN; sWhere.Format(_T("[公称直径]=%d and [等级名称]='%s' and [项目名称]='%s'"),(int)(m_pipeParam.m_dDN+0.5),m_pipeParam.szLevel,sPro); //外径 sText = m_wndPipeSpecList.GetItemText(nItem,1); m_pipeParam.m_dOD = _ttof(sText); //壁厚 sText = m_wndPipeSpecList.GetItemText(nItem,2); m_pipeParam.m_dThick = _ttof(sText); switch(m_nDDir) { case 0: { m_pipeParam.m_dD = m_pipeParam.m_dDN; m_pipeParam.m_eD = WPipe::eDN; break; } case 1: { m_pipeParam.m_dD = m_pipeParam.m_dOD; m_pipeParam.m_eD = WPipe::eOD; break; } case 2: { m_pipeParam.m_dD = m_pipeParam.m_dOD - 2.0 * m_pipeParam.m_dThick; m_pipeParam.m_eD = WPipe::eID; break; } default: break; } //标高 switch(m_nElSel) { case 0://中心线 { break; } case 1: //顶参考基准 { m_dEl -= m_pipeParam.m_dOD / 2.0; break; } case 2://底参考基准 { m_dEl += m_pipeParam.m_dOD / 2.0; break; } } m_pipeParam.m_dEl = m_dEl; //曲率半径 m_pipeParam.m_dRRatio = 3.0;//默认 m_pipeParam.m_nRadioOn = 0;//按曲率 nSel = m_wndRadioCombo.GetCurSel(); if (nSel != -1) { m_wndRadioCombo.GetLBText(nSel, sText); m_pipeParam.m_dRRatio = _ttof(sText); } //管道类型 //根据端面确定 焊接 承插 螺纹 法兰 卡箍 m_pipeParam.m_app = WPipe::eButtweld; TextToApp(m_pipeParam, m_wndPipeSpecList.GetItemText(nItem, 4)); //法兰端面 _tcscpy(m_pipeParam.m_szEndF, _T("PE")); sSQL.Format(_T("select distinct [端面] from [AecSpecFlange] where %s"), sWhere); arVals.RemoveAll(); m_pDb->GetSelData(sSQL, arVals); if (arVals.GetSize() > 0) { _tcscpy(m_pipeParam.m_szEndF, arVals.GetAt(0)); } //垫片信息 --> //[材质],[压力],[垫片厚度],[描述] sSQL.Format(_T("select distinct [材质],[压力],[垫片厚度],[描述] from [AecSpecGasket] where %s"), sWhere); arVals.RemoveAll(); m_pDb->GetSelData(sSQL, arVals); if (arVals.GetSize() >= 4) { CString sGaskets; for (int ii = 0; ii < arVals.GetSize(); ii++) { sGaskets += arVals.GetAt(ii); if (ii < arVals.GetSize() - 1) sGaskets += _T('/'); } _tcscpy(m_pipeParam.m_szGastInf, sGaskets); m_pipeParam.m_dPress = _ttof(arVals.GetAt(1));//取垫片压力 } //法兰管分段长度 m_pipeParam.m_dInterfaceL3 = m_dFPLen; //查询变径 由使用过程查询 //管号 _tcscpy(m_pipeParam.szPipeno, m_sPipeNo); //管道材质 sText = m_wndPipeSpecList.GetItemText(nItem, 5); _tcscpy(m_pipeParam.szMertial, (LPCTSTR)sText); //管件材质 sSQL.Format(_T("select distinct [材质] from [AecSpecFit] where [公称直径]=%d and [类别]='管件' and [等级名称]='%s'"), (int)(m_pipeParam.m_dDN + 0.5), m_pipeParam.szLevel); arVals.RemoveAll(); m_pDb->GetSelData(sSQL, arVals); if (arVals.GetSize() > 0) { _tcscpy(m_pipeParam.szMertialFit, arVals.GetAt(0)); } CString sODNo = _T(""); sODNo = m_wndPipeSpecList.GetItemText(nItem,8); //确认是衬塑管,衬塑管法兰连接 if (IsGSFMaterial(sText,sODNo)) { //sODNo = _T("GSF"); m_pipeParam.m_nRadioOn = 1;//必须按结构长度 m_pipeParam.m_eD = WPipe::eDN;//DN m_pipeParam.m_nConnectType = 3;//必须法兰 m_pipeParam.m_dRRatio = 1.5;//默认 } else if (IsPlasticsMat(sText, sODNo)) { m_pipeParam.m_nRadioOn = 1;//必须按结构长度 m_pipeParam.m_eD = WPipe::eOD;//DN m_pipeParam.m_nConnectType = 1;//必须承插 } else if (IsSRPEMaterial(sText, sODNo)) { } _tcscpy(m_pipeParam.szODSn, sODNo); //区号 _tcscpy(m_pipeParam.szZoneNo, m_sZoneNo); _tcscpy(m_pipeParam.szUnitNo, m_sUnit); int nItem2 = 0; ps = m_wndPipeSpecIdxList.GetFirstSelectedItemPosition(); if (ps != NULL) { nItem2 = m_wndPipeSpecIdxList.GetNextSelectedItem(ps); if (nItem2 == -1) { AfxMessageBox(_T("请选择管道等级索引!")); return; } } //表号 sText = m_wndPipeSpecList.GetItemText(nItem, 6); _tcscpy(m_pipeParam.szShtNo, sText); //描述 sText = m_wndPipeSpecList.GetItemText(nItem, 9); _tcscpy(m_pipeParam.szDescr, sText); //介质 代号 sText = m_wndPipeSpecIdxList.GetItemText(nItem2, 1); _tcscpy(m_pipeParam.szMedia, sText); //上面已经取了垫片压了, //再次确认转为法兰压力, if (m_pipeParam.m_dPress < 1.e-2) { sSQL.Format(_T("select distinct [压力] from [AecSpecFlange] where %s"), sWhere); arVals.RemoveAll(); m_pDb->GetSelData(sSQL,arVals); if (arVals.GetSize() > 0) { m_pipeParam.m_dPress = _ttof(arVals.GetAt(0)); } } //压力 if (m_pipeParam.m_dPress < 1.e-3) { sText = m_wndPipeSpecIdxList.GetItemText(nItem2, 5); sText.TrimLeft(_T("PN")); m_pipeParam.m_dPress = _ttof(sText); } //系统 //确认创建图层 int nCursel = m_wndComboSys.GetCurSel(); if (nCursel == -1) { AfxMessageBox(_T("请选择绘制管线的系统!")); return; } m_wndComboSys.GetLBText(nCursel,m_sCurrSys); //创建图层 外,中 CoreTools::getLyByPipeSys(m_sCurrSys, true); CoreTools::getLyByPipeSys(m_sCurrSys, false); CoreTools::getLyForPipe(m_sCurrSys); //获取分系统信息 //select layname,pipesys,color,linetype,linewidth //LAYKEY LAYNAME PIPESYS SYSTEM COLOR LINETYPE LINEWIDTH //11 废水管线中心线 管线中心线 废水 4 Continuous:________ 0 arVals.RemoveAll(); PipelineTools::getPipeSysRecord(m_pDb, m_sCurrSys, arVals); if (arVals.GetSize() >= 5) { m_pipeParam.m_nPipeColor = _ttoi(arVals.GetAt(2)); } _tcscpy(m_pipeParam.szSys,m_sCurrSys); m_idCurSys = CoreTools::getLyForPipe(m_sCurrSys); //保温伴热 //查询接口 信息 QueryFlangOnPipe(); m_bFilled = true; } //保温伴热 void CDJGXDlg::OnBnClickedButton2() { UpdateData(); KTInsulateMainDlg dlg; dlg.SetADOServer(m_pDb); WPipe::PipeParam param; memset(¶m,0,sizeof(WPipe::PipeParam)); FillPipeParam(); GetPipeParam(¶m); dlg.SetPipeParam(¶m); if (IDOK == dlg.DoModal()) { _tcscpy(m_pipeParam.szInsMtr,param.szInsMtr); m_pipeParam.m_dInsThk = param.m_dInsThk; m_pipeParam.m_nInsAndHead = param.m_nInsAndHead; _tcscpy(m_pipeParam.szInsSpec,param.szInsSpec); _tcscpy(m_pipeParam.szInsMateral,param.szInsMateral); _tcscpy(m_pipeParam.szInsTag,param.szInsTag); _tcscpy(m_pipeParam.szInsDim,param.szInsDim); _tcscpy(m_pipeParam.szTraMtoInfo,param.szTraMtoInfo); FormatParamSettingAndSpec(); UpdateData(FALSE); } } void CDJGXDlg::FormatParamSettingAndSpec() { //介质压力 CString sZone, sDN, sPP, sNo, sGrade; CString sText; sText.Format(_T("%s"), m_pipeParam.szMedia); sPP = sText; m_sParamSetting = sText + _T("-"); sText.Format(_T("%s"), m_pipeParam.szLevel); sGrade = sText; m_sParamSetting += sText + _T("-"); sText.Format(_T("%d"), (int)m_pipeParam.m_dDN); sDN = sText; m_sParamSetting += sText + _T("-"); sText.Format(_T("%.1f"), m_pipeParam.m_dRRatio); m_sParamSetting += sText + _T("-"); sText.Format(_T("%s"), m_pipeParam.szInsMtr); sText.TrimRight(_T('-')); if (!sText.IsEmpty()) { m_sParamSetting += sText + _T("-"); } sText.Format(_T("%.1f"), m_pipeParam.m_dInsThk); //参数=介质-等级-DN-曲率-保温-保温厚度 m_sParamSetting += sText; CString sAdd; if ( _tcslen(m_pipeParam.szInsMtr) > 0 ) sAdd = _T("保温"); if ( _tcslen(m_pipeParam.szTraMtoInfo) > 0 ) sAdd += _T("伴热"); //管线号= 区号-单元号-顺序号-DN-等级-保温伴热 m_sPipeNo.Format(_T("%s-%s-%s-%s-%s-%s"), m_sZoneNo,m_sUnit, m_sSerNo,sDN,sGrade, sAdd); m_sPipeNo.TrimRight(_T('-')); } //分系统设置 void CDJGXDlg::OnBnClickedButton3() { 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 CDJGXDlg::OnBnClickedAddSpecIdx() { //等级 CString sSpec,sSQL,sPro; int nCur = m_wndSpecCombo.GetCurSel(); if (nCur != -1) { m_wndSpecCombo.GetLBText(nCur, sSpec); } else { AfxMessageBox(_T("请选择等级!")); return; } int nPro = m_wndProCombo.GetCurSel(); if (nPro != -1) { m_wndProCombo.GetLBText(nPro, sPro); } else { AfxMessageBox(_T("请选择项目!")); return; } CSpecIndexDlg dlg; if (m_wndPipeSpecIdxList.GetItemCount() > 0) { dlg.m_sMaterial = m_wndPipeSpecIdxList.GetItemText(0, 6); dlg.m_nMaxD = _ttoi(m_wndPipeSpecIdxList.GetItemText(0,2)); dlg.m_sFlgPN = m_wndPipeSpecIdxList.GetItemText(0, 5); } dlg.m_pDb = m_pDb; if (IDOK == dlg.DoModal()) { //[等级号] VARCHAR(50), //[介质] VARCHAR(256), //[介质代号] VARCHAR(256), //[最大口径] INTEGER, //[设计温度] INTEGER, //[设计压力] FLOAT, //[法兰等级] VARCHAR(50), //[材质] varchar(256), //[腐蚀裕度] float); sSQL.Format(_T("insert into [AecPipeSpecIndex] ([等级号],[介质],[介质代号],[最大口径],[设计温度],[设计压力],[法兰等级],[材质],[腐蚀裕度])\ values ('%s','%s','%s',%d,%d,%.2f,'%s','%s',%.1f)"), sSpec, dlg.m_sMedia, dlg.m_sMediaCode, dlg.m_nMaxD, dlg.m_nTmp, dlg.m_dPress, dlg.m_sFlgPN, dlg.m_sMaterial, dlg.m_dFsYd); if (m_pDb->ExecuteSQL(sSQL)) { ShowPipeSpecList(sPro, sSpec); } } } void CDJGXDlg::SetFromXDataMap(AecDbObjXDataMap *pXDataMap) { if (pXDataMap != NULL) { pXDataMap->GetAt(PIPE_ZONE, m_sZoneNo); pXDataMap->GetAt(KEY_NO, m_sSerNo); //*-*-*-*-*- pXDataMap->GetAt(PIPE_NO, m_sPipeNo); //管线号= 区号-单元号-顺序号-DN-等级-保温伴热 CStringArray arTxts; CoreTools::SplitString(m_sPipeNo, _T('-'), arTxts); if (arTxts.GetSize() > 2) m_sUnit = arTxts.GetAt(1); WPipe::PipeParam param; memset(¶m, 0, sizeof(WPipe::PipeParam)); XDataMapToPipeParam(pXDataMap, ¶m); SetShowParam(¶m); } } void CDJGXDlg::SetShowParam(WPipe::PipeParam* pParam) { if (pParam != NULL) { memcpy(&m_pipeParam,pParam,sizeof(WPipe::PipeParam)); m_bFilled = true; m_dEl = pParam->m_dEl; } } bool CDJGXDlg::GetPipeParam(WPipe::PipeParam* pParam) const { if (pParam != NULL) { memcpy(pParam,&m_pipeParam,sizeof(WPipe::PipeParam)); pParam->nPIPCmd = 1; //如果是米单位 PipeParamConvert2UnitMeters(pParam); } return m_bFilled; } void CDJGXDlg::OnEnChangeEdit2() { UpdateData(); FillPipeParam(); FormatParamSettingAndSpec(); UpdateData(FALSE); } void CDJGXDlg::OnNMClickList1(NMHDR *pNMHDR, LRESULT *pResult) { LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast(pNMHDR); if ( pNMItemActivate->iItem != -1 ) { CString sText; CString sMedia = m_wndPipeSpecIdxList.GetItemText(pNMItemActivate->iItem,0); for(int i = 0;i < m_wndComboSys.GetCount();i++) { m_wndComboSys.GetLBText(i,sText); if (sMedia.Find(sText) != -1) { m_wndComboSys.SetCurSel(i); break; } } UpdateData(); FillPipeParam(); FormatParamSettingAndSpec(); UpdateData(FALSE); } *pResult = 0; }