366 lines
11 KiB
C++
366 lines
11 KiB
C++
// PipeVMultDrawDlg.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "PipeVMultDrawDlg.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
|
|
|
|
TGridMultiPipe::TGridMultiPipe()
|
|
{
|
|
AppendCol(_T("管线"), 70);
|
|
AppendCol(_T("距基点距离"),65);
|
|
AppendCol(_T("标高(米)"));
|
|
SetColPosFix();
|
|
SetColFixLength();
|
|
SetNoPaste();
|
|
FitLastCol();
|
|
GetCol(0).SetComboSel();
|
|
}
|
|
|
|
void TGridMultiPipe::OnCellComboString(WDGridCell&cell,CComboBox&combo)
|
|
{
|
|
if(cell.GetColIndex()==0){
|
|
/* cet 2011.12.9 modify
|
|
combo.AddString(_T("给水"));
|
|
combo.AddString(_T("热给水"));
|
|
combo.AddString(_T("热回水"));
|
|
combo.AddString(_T("污水"));
|
|
combo.AddString(_T("废水"));
|
|
combo.AddString(_T("中水"));
|
|
combo.AddString(_T("消防"));
|
|
combo.AddString(_T("喷淋"));
|
|
combo.AddString(g_csPipeName[0]);
|
|
combo.AddString(g_csPipeName[1]);
|
|
combo.AddString(g_csPipeName[2]);
|
|
combo.AddString(g_csPipeName[3]);
|
|
combo.AddString(g_csPipeName[4]);
|
|
combo.AddString(_T("其它"));
|
|
*/
|
|
std::vector<CString>::iterator it;
|
|
int nIndex = 0;
|
|
for (it = m_vecPipeName.begin(); it != m_vecPipeName.end(); it++)
|
|
{
|
|
combo.InsertString(nIndex, *it);
|
|
++nIndex;
|
|
}
|
|
}
|
|
}
|
|
|
|
void TGridMultiPipe::SetPipeName(const std::vector<CString> &data)
|
|
{
|
|
m_vecPipeName = data;
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CPipeVMultDrawDlg dialog
|
|
extern void GetLayerPipeName(std::map<CString, CString> &mapLayerPipeName);
|
|
|
|
CPipeVMultDrawDlg::CPipeVMultDrawDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CPipeVMultDrawDlg::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CPipeVMultDrawDlg)
|
|
// NOTE: the ClassWizard will add member initialization here
|
|
//}}AFX_DATA_INIT
|
|
m_bIsSuperposable = TRUE;
|
|
}
|
|
|
|
|
|
void CPipeVMultDrawDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CPipeVMultDrawDlg)
|
|
// NOTE: the ClassWizard will add DDX and DDV calls here
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CPipeVMultDrawDlg, CDialog)
|
|
//{{AFX_MSG_MAP(CPipeVMultDrawDlg)
|
|
ON_BN_CLICKED(IDC_BUTTON_ADD, OnButtonAdd)
|
|
ON_BN_CLICKED(IDC_BUTTON_DEL, OnButtonDel)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CPipeVMultDrawDlg message handlers
|
|
|
|
BOOL CPipeVMultDrawDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
// cet 2011.12.9 add
|
|
InitLayerPipeName();
|
|
|
|
m_grid.Clear();
|
|
m_grid.Create(this, IDC_LIST_PIPE);
|
|
m_grid.FitLastCol();
|
|
LoadLast();
|
|
|
|
// m_grid.AppendRow();
|
|
// m_grid.GetCell(0, 0).SetText(_T("给水"));
|
|
// m_grid.GetCell(0, 1).SetText(_T("0"));
|
|
// m_grid.GetCell(0, 2).SetText(_T("0"));
|
|
m_grid.SetNoAppendButton(TRUE);
|
|
m_grid.SetNoDefaultMenu(true);
|
|
|
|
std::vector<CString> vecPipeName;
|
|
GetPipeName(vecPipeName);
|
|
m_grid.SetPipeName(vecPipeName);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
void CPipeVMultDrawDlg::OnButtonAdd()
|
|
{
|
|
m_grid.AppendRow();
|
|
int idx = m_grid.GetRowNum();
|
|
m_grid.GetCell(idx-1, 0).SetText(_T("给水"));
|
|
m_grid.GetCell(idx-1, 1).SetText(_T("200"));
|
|
m_grid.GetCell(idx-1, 2).SetText(_T("0"));
|
|
}
|
|
|
|
void CPipeVMultDrawDlg::OnButtonDel()
|
|
{
|
|
long idx = m_grid.GetCurRowIndex();
|
|
if(idx < 0){
|
|
MessageBox(_T("没有选中的行!请点击表格左侧的行标!"));
|
|
return;
|
|
}
|
|
m_grid.DelRow(idx);
|
|
}
|
|
|
|
void CPipeVMultDrawDlg::OnOK()
|
|
{
|
|
for(m_grid.MoveToFirst(); !m_grid.IsOut(); m_grid.MoveToNext()){
|
|
WDGridRow *pRow = m_grid.CurRow();
|
|
CString csPipe = (*pRow)[0].GetText().cs();
|
|
CString csDist = (*pRow)[1].GetText().cs();
|
|
CString csEle = (*pRow)[2].GetText().cs();
|
|
double nDist = _tstof(csDist);
|
|
if(nDist > 0.001 || m_grid.GetRowNum() < 2){
|
|
m_bIsSuperposable = FALSE;
|
|
break;
|
|
}
|
|
}
|
|
Save();
|
|
CDialog::OnOK();
|
|
}
|
|
|
|
void CPipeVMultDrawDlg::Save()
|
|
{
|
|
TCHAR strTmpPath[256] = _T("");
|
|
GetTempPath(255, strTmpPath);
|
|
_tcscat(strTmpPath, _T("MultPipe.his"));
|
|
|
|
FILE *fp = fopen(_AS(strTmpPath), "w");
|
|
if(!fp)
|
|
return;
|
|
for(m_grid.MoveToFirst(); !m_grid.IsOut(); m_grid.MoveToNext()){
|
|
WDGridRow *pRow = m_grid.CurRow();
|
|
CString csPipe = (*pRow)[0].GetText().cs();
|
|
// zxl 2013.04.17 add 改记忆名字为记忆图层
|
|
std::map<CString, CString>::iterator it;
|
|
CString sLayer;
|
|
for (it = m_mapLayerPipeName.begin(); it != m_mapLayerPipeName.end(); it++)
|
|
{
|
|
if (it->second.Compare(csPipe) == 0)
|
|
{
|
|
sLayer = it->first;
|
|
}
|
|
}
|
|
if (sLayer.IsEmpty())
|
|
{
|
|
continue;
|
|
}
|
|
csPipe = sLayer;
|
|
|
|
CString csDist = (*pRow)[1].GetText().cs();
|
|
CString csEle = (*pRow)[2].GetText().cs();
|
|
CString csTmp3 = csPipe+_T(" ")+csDist+_T(" ")+csEle + _T("\n");
|
|
fputs(_AS(csTmp3), fp);
|
|
|
|
}
|
|
fclose(fp);
|
|
}
|
|
|
|
|
|
void CPipeVMultDrawDlg::LoadLast()
|
|
{
|
|
XStringList lstHis;
|
|
TCHAR strTmpPath[100] = _T("");
|
|
GetTempPath(100, strTmpPath);
|
|
_tcscat(strTmpPath, _T("MultPipe.his"));
|
|
|
|
FILE *fp=fopen(_AS(strTmpPath), "r");
|
|
if(!fp){
|
|
m_grid.AppendRow();
|
|
m_grid.GetCell(0, 0).SetText(_T("给水"));
|
|
m_grid.GetCell(0, 1).SetText(_T("0"));
|
|
m_grid.GetCell(0, 2).SetText(_T("0"));
|
|
return;
|
|
}
|
|
while(!feof(fp)) {
|
|
char sBuf[256]="";
|
|
fgets(sBuf, 255, fp);
|
|
CString csTmp = sBuf;
|
|
csTmp.TrimRight();
|
|
if(csTmp != _T(""))
|
|
lstHis.Append(tstrnew(csTmp));
|
|
}
|
|
fclose(fp);
|
|
|
|
int len = lstHis.Length();
|
|
//zxl 2013.04.17 del
|
|
// if(len < 1){
|
|
// m_grid.AppendRow();
|
|
// m_grid.GetCell(0, 0).SetText(_T("给水"));
|
|
// m_grid.GetCell(0, 1).SetText(_T("0"));
|
|
// m_grid.GetCell(0, 2).SetText(_T("0"));
|
|
// return;
|
|
// }
|
|
|
|
for(int i=0;i<len;i++){
|
|
CString csTmp = lstHis[i];
|
|
|
|
TCHAR cName[256]=_T(""), eName[256]=_T(""), sColor[256]=_T("");
|
|
CT_strnth(csTmp, 1, cName);
|
|
CT_strnth(csTmp, 2, eName);
|
|
CT_strnth(csTmp, 3, sColor);
|
|
|
|
// zxl 2013.04.17 add 改记忆名字为记忆图层
|
|
CString sLayerName = cName;
|
|
sLayerName = m_mapLayerPipeName[sLayerName];
|
|
if (sLayerName.IsEmpty())
|
|
{
|
|
continue;
|
|
}
|
|
|
|
m_grid.AppendRow();
|
|
m_grid.GetCell(i, 0).SetText(sLayerName);
|
|
m_grid.GetCell(i, 1).SetText(eName);
|
|
m_grid.GetCell(i, 2).SetText(sColor);
|
|
}
|
|
// zxl 2013.04.17 add
|
|
if(m_grid.GetRowNum() < 1)
|
|
{
|
|
m_grid.AppendRow();
|
|
m_grid.GetCell(0, 0).SetText(_T("给水"));
|
|
m_grid.GetCell(0, 1).SetText(_T("0"));
|
|
m_grid.GetCell(0, 2).SetText(_T("0"));
|
|
return;
|
|
}
|
|
}
|
|
|
|
void CPipeVMultDrawDlg::InitLayerPipeName()
|
|
{
|
|
// 自定义管线
|
|
GetLayerPipeName(m_mapLayerPipeName);
|
|
m_mapLayerPipeName.insert(std::make_pair(LAY_PIPE_FEED, CString(_T("给水"))));
|
|
m_mapLayerPipeName.insert(std::make_pair(LAY_PIPE_FEED2, CString(_T("给水中区"))));
|
|
m_mapLayerPipeName.insert(std::make_pair(LAY_PIPE_FEED3, CString(_T("给水高区"))));
|
|
m_mapLayerPipeName.insert(std::make_pair(LAY_PIPE_HEADFEED, CString(_T("热给水"))));
|
|
m_mapLayerPipeName.insert(std::make_pair(LAY_PIPE_HEADFEED2, CString(_T("热给水中区"))));
|
|
m_mapLayerPipeName.insert(std::make_pair(LAY_PIPE_HEADFEED3, CString(_T("热给水高区"))));
|
|
m_mapLayerPipeName.insert(std::make_pair(LAY_PIPE_HEADBACK, CString(_T("热回水"))));
|
|
m_mapLayerPipeName.insert(std::make_pair(LAY_PIPE_HEADBACK2, CString(_T("热回水中区"))));
|
|
m_mapLayerPipeName.insert(std::make_pair(LAY_PIPE_HEADBACK3, CString(_T("热回水高区"))));
|
|
m_mapLayerPipeName.insert(std::make_pair(LAY_PIPE_USED, CString(_T("中水"))));
|
|
m_mapLayerPipeName.insert(std::make_pair(LAY_PIPE_USED2, CString(_T("中水中区"))));
|
|
m_mapLayerPipeName.insert(std::make_pair(LAY_PIPE_USED3, CString(_T("中水高区"))));
|
|
m_mapLayerPipeName.insert(std::make_pair(LAY_PIPE_FIRE, CString(_T("消防"))));
|
|
m_mapLayerPipeName.insert(std::make_pair(LAY_PIPE_FIRE2, CString(_T("消防中区"))));
|
|
m_mapLayerPipeName.insert(std::make_pair(LAY_PIPE_FIRE3, CString(_T("消防高区"))));
|
|
m_mapLayerPipeName.insert(std::make_pair(LAY_PIPE_SPRINKLE, CString(_T("喷淋"))));
|
|
m_mapLayerPipeName.insert(std::make_pair(LAY_PIPE_SPRINKLE2, CString(_T("喷淋中区"))));
|
|
m_mapLayerPipeName.insert(std::make_pair(LAY_PIPE_SPRINKLE3, CString(_T("喷淋高区"))));
|
|
m_mapLayerPipeName.insert(std::make_pair(LAY_PIPE_DIRT, CString(_T("污水"))));
|
|
m_mapLayerPipeName.insert(std::make_pair(LAY_PIPE_USELESS, CString(_T("废水"))));
|
|
m_mapLayerPipeName.insert(std::make_pair(LAY_PIPE_RAIN, CString(_T("雨水"))));
|
|
m_mapLayerPipeName.insert(std::make_pair(LAY_PIPE_OTHER, CString(_T("其他"))));
|
|
}
|
|
|
|
int CPipeVMultDrawDlg::GetPipeIdxByPipeName(const CString &sPipeName)
|
|
{
|
|
CString sPipeLayer;
|
|
std::map<CString,CString>::iterator it;
|
|
for (it = m_mapLayerPipeName.begin(); it != m_mapLayerPipeName.end(); it++)
|
|
{
|
|
if (it->second.Compare(sPipeName) == 0)
|
|
{
|
|
sPipeLayer = it->first;
|
|
break;
|
|
}
|
|
}
|
|
if (it == m_mapLayerPipeName.end())
|
|
{
|
|
return -1;
|
|
}
|
|
|
|
CString sLayer[] = { LAY_PIPE_FEED, LAY_PIPE_HEADFEED, LAY_PIPE_HEADBACK, LAY_PIPE_DIRT, LAY_PIPE_USELESS,
|
|
LAY_PIPE_RAIN, LAY_PIPE_USED, LAY_PIPE_FIRE, LAY_PIPE_SPRINKLE, LAY_PIPE_COAGULATE,
|
|
LAY_PIPE_DRINK, LAY_PIPE_PRESSDIRT, LAY_PIPE_PRESSUSELESS, LAY_PIPE_PRESSRAIN, LAY_PIPE_OTHER,
|
|
LAY_PIPE_USER1, LAY_PIPE_USER2, LAY_PIPE_FEED2, LAY_PIPE_FEED3, LAY_PIPE_HEADFEED2,
|
|
LAY_PIPE_HEADFEED3, LAY_PIPE_HEADBACK2, LAY_PIPE_HEADBACK3, LAY_PIPE_FIRE2, LAY_PIPE_FIRE3,
|
|
LAY_PIPE_SPRINKLE2, LAY_PIPE_SPRINKLE3, LAY_PIPE_USED2, LAY_PIPE_USED3, LAY_PIPE_USER3,
|
|
LAY_PIPE_USER4, LAY_PIPE_USER5, LAY_PIPE_USER6, LAY_PIPE_USER7, LAY_PIPE_USER8
|
|
};
|
|
|
|
int nRet = -1;
|
|
for (int i = 0; i < 35; i++)
|
|
{
|
|
if (sLayer[i].Compare(sPipeLayer) == 0)
|
|
{
|
|
nRet = i;
|
|
break;
|
|
}
|
|
}
|
|
return nRet;
|
|
}
|
|
|
|
void CPipeVMultDrawDlg::GetPipeName(std::vector<CString> &vecPipeName)
|
|
{
|
|
vecPipeName.push_back(_T("给水"));
|
|
vecPipeName.push_back(_T("给水中区"));
|
|
vecPipeName.push_back(_T("给水高区"));
|
|
vecPipeName.push_back(_T("热给水"));
|
|
vecPipeName.push_back(_T("热给水中区"));
|
|
vecPipeName.push_back(_T("热给水高区"));
|
|
vecPipeName.push_back(_T("热回水"));
|
|
vecPipeName.push_back(_T("热回水中区"));
|
|
vecPipeName.push_back(_T("热回水高区"));
|
|
vecPipeName.push_back(_T("中水"));
|
|
vecPipeName.push_back(_T("中水中区"));
|
|
vecPipeName.push_back(_T("中水高区"));
|
|
vecPipeName.push_back(_T("消防"));
|
|
vecPipeName.push_back(_T("消防中区"));
|
|
vecPipeName.push_back(_T("消防高区"));
|
|
vecPipeName.push_back(_T("喷淋"));
|
|
vecPipeName.push_back(_T("喷淋中区"));
|
|
vecPipeName.push_back(_T("喷淋高区"));
|
|
vecPipeName.push_back(_T("污水"));
|
|
vecPipeName.push_back(_T("废水"));
|
|
vecPipeName.push_back(_T("雨水"));
|
|
vecPipeName.push_back(m_mapLayerPipeName[LAY_PIPE_COAGULATE]);
|
|
vecPipeName.push_back(m_mapLayerPipeName[LAY_PIPE_DRINK]);
|
|
vecPipeName.push_back(m_mapLayerPipeName[LAY_PIPE_PRESSDIRT]);
|
|
vecPipeName.push_back(m_mapLayerPipeName[LAY_PIPE_PRESSUSELESS]);
|
|
vecPipeName.push_back(m_mapLayerPipeName[LAY_PIPE_PRESSRAIN]);
|
|
vecPipeName.push_back(m_mapLayerPipeName[LAY_PIPE_USER1]);
|
|
vecPipeName.push_back(m_mapLayerPipeName[LAY_PIPE_USER2]);
|
|
vecPipeName.push_back(m_mapLayerPipeName[LAY_PIPE_USER3]);
|
|
vecPipeName.push_back(m_mapLayerPipeName[LAY_PIPE_USER4]);
|
|
vecPipeName.push_back(m_mapLayerPipeName[LAY_PIPE_USER5]);
|
|
vecPipeName.push_back(m_mapLayerPipeName[LAY_PIPE_USER6]);
|
|
vecPipeName.push_back(m_mapLayerPipeName[LAY_PIPE_USER7]);
|
|
vecPipeName.push_back(m_mapLayerPipeName[LAY_PIPE_USER8]);
|
|
vecPipeName.push_back(_T("其他"));
|
|
} |