Files
envi-code/SourceCode/Code2026/Dimension/VerticalSectionFeedDlg.cpp
T
2026-09-28 15:28:50 +08:00

1237 lines
37 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include "stdafx.h"
#include "AcDbObjectPtr.h"
#include "globalFunc.h"
#include "ElevationCalc.h"
#include "DbVerticalSectionFeed.h"
#include "DbWell.h"
#include "DbStake.h"
#include "VerticalSectionFeedDlg.h"
#include "WellCalcModifyEleDlg.h"
#include "PickEntSet.h"
#include "layerdef.h"
extern BOOL SearchOutdoorWell(Entity ent, Entity entEnd, SSearchPipeList *pListAll, PickSet &ssAll, BOOL bFeedSys);
//extern void DrawVerticalSectionFeed(DList<TFeedWellData> &lstWellSys, int iScaleX, int iScaleY, double nGridScale, double nDeepStart);
extern void DrawVerticalSectionFeed(DList<TFeedWellData> &lstWellSys, int iScaleX, int iScaleY, double nGridScale, double nDeepStart, bool bDimEle, bool bDimDist, const std::map<TPipeSys::SysType,bool> &data);
extern void SetPipeLabelType(CDbPipe *pPipe);
//***************************************************************************************************
// 编辑给水纵断
//***************************************************************************************************
int EditVerticalSectionFeed(AcDbObjectId id)
{
if (!id)
return RTERROR;
CTemporaryResourceOverride vTemp;
CVerticalSectionFeedDlg dlg(1);
// zxl 2013.12.5 add
std::map<TPipeSys::SysType, bool> data;
data[TPipeSys::kFeedWater] = false;
data[TPipeSys::kDirtWater] = false;
data[TPipeSys::kUselessWater] = false;
data[TPipeSys::kRainWater] = false;
data[TPipeSys::kUsedWater] = false;
data[TPipeSys::kFireFighting] = false;
data[TPipeSys::kOther] = false;
// DList<TFeedWellData> lstWellSys;
OPENOBJ_BEGIN(id, AcDb::kForRead, CDbVerticalSectionFeed, pVS);
if (pVS) {
dlg.m_bDimEle = pVS->IsDimEle();
dlg.m_bDimDist = pVS->IsDimDist();
dlg.m_csSheetHead = pVS->GetSheetHead(); // zxl 2012.08.20 add
pVS->GetWellDatas(dlg.m_lstFeedWellSys);
dlg.m_iX = pVS->GetScaleX();
dlg.m_iY = pVS->GetScaleY();
if (fabs(pVS->GetGridScale() - 0.5) < 0.01)
dlg.m_iGridScale = 0;
else if (fabs(pVS->GetGridScale() - 1) < 0.01)
dlg.m_iGridScale = 1;
else if (fabs(pVS->GetGridScale() - 2) < 0.01)
dlg.m_iGridScale = 2;
else if (fabs(pVS->GetGridScale()) < 0.01)
dlg.m_iGridScale = 3;
// zxl 2013.12.5 add
std::map<TPipeSys::SysType, bool>::iterator it;
for (it = data.begin(); it != data.end(); it++)
{
(*it).second = pVS->IsShowCrossPipe(it->first);
}
}
OPENOBJ_END();
// dlg.GetFeedWellListData(lstWellSys, dlg.m_lstFeedWellSys);
OPENOBJ_BEGIN(dlg.m_lstFeedWellSys[0]->m_ID, AcDb::kForRead, AecXDbWell, pWell);
if (!pWell) {
g_Option::instance().adsout << _T("\n平面图信息已经丢失!请确认平面图和纵断面图在一张DWG中。");
return RTERROR;
}
OPENOBJ_END();
dlg.SetShowPipeData(data);// zxl 2013.12.5 add
if (dlg.DoModal() == IDOK) {
// lstWellSys.Reset();
// dlg.GetRainWellListData(lstWellSys, dlg.m_lstFeedWellSys);
dlg.GetShowPipeData(data);// zxl 2013.12.5 add
OPENOBJ_BEGIN(id, AcDb::kForWrite, CDbVerticalSectionFeed, pVS);
if (pVS) {
if (dlg.m_iGridScale == 0)
pVS->SetGridScale(0.5);
else if (dlg.m_iGridScale == 1)
pVS->SetGridScale(1);
else if (dlg.m_iGridScale == 2)
pVS->SetGridScale(2);
else if (dlg.m_iGridScale == 3)
pVS->SetGridScale(0);
pVS->SetWellDatas(dlg.m_lstFeedWellSys);
pVS->SetScaleX(dlg.m_iX);
pVS->SetScaleY(dlg.m_iY);
pVS->Calc();
// zxl 2013.12.5 add
pVS->SetDimEle(dlg.m_bDimEle ? true : false);
pVS->SetDimDist(dlg.m_bDimDist ? true : false);
std::map<TPipeSys::SysType, bool>::iterator it;
for (it = data.begin(); it != data.end(); it++)
{
pVS->SetShowCrossPipe(it->first, it->second);
}
}
OPENOBJ_END();
}
return 1;
}
//***************************************************************************************************
// 给水纵断
//***************************************************************************************************
void VerticalSectionFeed(Entity entStartWell)
{
Entity entEndWell;
RBList rbMask(RTDXF0, _T("AEC_ZT_WELL"), 8, LAY_WELL_FEED, NULL);
GlobalFunc::SelectEntity(_T("\n请选择终止井:<自动搜索>"), entEndWell, rbMask);
SSearchPipeList *pListAll = new SSearchPipeList();
PickSet ssAll(SS_FREE);
ssAll += entStartWell;
if (!SearchOutdoorWell(entStartWell, entEndWell, pListAll, ssAll, TRUE)) {
delete pListAll;
return;
}
if (ssAll.Length() < 3) {
AfxMessageBox(_T("系统数据不全, 请检查管线是否标注管径, 管线流动方向是否不一致!"));
delete pListAll;
return;
}
actrTransactionManager->flushGraphics(); //acad 刷新
ssAll.Redraw(3);
long len = ssAll.Length();
TCHAR szTmp[256];
int rett = ads_getstring(NULL, _T("\n需要计算的管网系统已高亮显示:<计算>"), szTmp);
if (rett == RTCAN) {
ssAll.Redraw(4);
delete pListAll;
return;
}
CTemporaryResourceOverride vTemp;
CVerticalSectionFeedDlg dlg(0);
double dDeep(1);
if (fabs(pListAll->m_nStartPress) < 0.0001) {//没有进行过计算
ads_getreal(_T("\n请输入覆土厚度<1米>:"), &dDeep);
}
else
dDeep = 0;
BOOL bRet = dlg.GetFeedWellListData(pListAll, dlg.m_lstFeedWellSys);
if (!bRet) {
AfxMessageBox(_T("2管线相交,系统要求必须有井或节点!"));
delete pListAll; //删除链头
ssAll.Redraw(4);
return;
}
delete pListAll; //删除链头
dlg.GetWellEleInfo(dlg.m_lstFeedWellSys, dDeep);
dlg.m_ssAll += ssAll;
dlg.DoModal();
ssAll.Redraw(4);
return;
}
/////////////////////////////////////////////////////////////////////////////
// CVerticalSectionFeedDlg dialog
const UINT nMenuId = 100; // zxl 2013.12.5 add
const UINT nMenuTypeId = 1000; // zxl 2013.12.5 add
int CVerticalSectionFeedDlg::m_iLengthType = 0;// zxl 2013.12.5 add
CVerticalSectionFeedDlg::CVerticalSectionFeedDlg(int mode, CWnd* pParent /*=NULL*/)
: CDialog(CVerticalSectionFeedDlg::IDD, pParent), m_ssAll(SS_FREE)
{
//{{AFX_DATA_INIT(CVerticalSectionFeedDlg)
m_iGridScale = 0;
m_csX = _T("100");
m_csY = _T("50");
m_csText = _T("覆土厚度(m)");
m_iType = 1;
m_csSheetHead = _T("");
//}}AFX_DATA_INIT
m_iOpenMode = mode;
// zxl 2013.12.5 add
m_bDimEle = FALSE;
m_bDimDist = FALSE;
InitMapData();
m_pMenu = NULL;
m_pMenuLength = NULL;
}
void CVerticalSectionFeedDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CVerticalSectionFeedDlg)
DDX_CBIndex(pDX, IDC_COMBO_GRID, m_iGridScale);
DDX_CBString(pDX, IDC_COMBO_X, m_csX);
DDX_CBString(pDX, IDC_COMBO_Y, m_csY);
DDX_Text(pDX, IDC_STATIC_TEXT, m_csText);
DDX_Radio(pDX, IDC_RADIO_TYPE, m_iType);
DDX_Check(pDX, IDC_CHECK_DIMELE, m_bDimEle);
DDX_Check(pDX, IDC_CHECK_DIMDIST, m_bDimDist);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CVerticalSectionFeedDlg, CDialog)
//{{AFX_MSG_MAP(CVerticalSectionFeedDlg)
//ON_BN_CLICKED(IDC_BUTTON_TODWG, OnButtonTodwg)
ON_BN_CLICKED(IDC_RADIO_TYPE, OnRadioType)
ON_BN_CLICKED(IDC_RADIO_TYPE2, OnRadioType2)
ON_BN_CLICKED(IDC_BUTTON_MODIFYELE, OnButtonModifyele)
ON_BN_CLICKED(IDC_BUTTON_SHOW, OnButtonShow)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CVerticalSectionFeedDlg message handlers
BOOL CVerticalSectionFeedDlg::OnInitDialog()
{
CDialog::OnInitDialog();
if (m_iOpenMode == 1) {//编辑对话框
CWnd *pWnd2 = GetDlgItem(IDOK);
pWnd2->SetWindowText(_T("更新"));
}
// m_csText = "覆土厚度(m)";
// UpdateData(FALSE);
m_grid.Clear();
m_grid.Create(this, IDC_LIST_PIPE);
m_grid.AppendCol(_T("起点"), 40);
m_grid.AppendCol(_T("终点"), 40);
m_grid.AppendCol(_T("管长m"), 66);
m_grid.AppendCol(_T("管径mm"), 66);
m_grid.AppendCol(_T("起点"), 60);
m_grid.AppendCol(_T("终点"), 60);
m_grid.AppendCol(_T("起点"), 60);
m_grid.AppendCol(_T("终点"), 60);
COLORREF color = RGB(255, 0, 0);
m_grid.GetCol(3).SetTextColor(color);
// m_grid.GetCol(4).SetTextColor(color);
// m_grid.GetCol(5).SetTextColor(color);
m_grid.GetCol(6).SetTextColor(color);
m_grid.GetCol(7).SetTextColor(color);
m_grid.GetCol(0).SetReadOnly();
m_grid.GetCol(1).SetReadOnly();
m_grid.GetCol(2).SetReadOnly();
m_grid.GetCol(4).SetReadOnly();
m_grid.GetCol(5).SetReadOnly();
m_grid.FitLastCol();
m_grid.SetNoAppendButton(TRUE);
m_grid.SetNoDefaultMenu(true);
UpdateGrid();
if (m_iOpenMode == 1) {//编辑对话框
m_csX.Format(_T("%d"), m_iX);
m_csY.Format(_T("%d"), m_iY);
UpdateData(FALSE);
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CVerticalSectionFeedDlg::OnRadioType()
{
UpdateData(TRUE);
m_csText = "管中标高(m)";
UpdateData(FALSE);
UpdateGrid();
}
void CVerticalSectionFeedDlg::OnRadioType2()
{
UpdateData(TRUE);
m_csText = "覆土厚度(m)";
UpdateData(FALSE);
UpdateGrid();
}
void CVerticalSectionFeedDlg::GetWellEleInfo(DList<TFeedWellData> &lstWellSys, double dDeep)
{
for (int i = 1; i < lstWellSys.Length(); i++) {
if (lstWellSys[i]->m_bIsWell) { //井
CString csName1 = lstWellSys[i - 2]->m_csName;
CString csName2 = lstWellSys[i]->m_csName;
if (csName1 == _T("") || csName2 == _T("")) {
break;
}
CString csName = csName1 + csName2;
if (dDeep > 0.001) {
double dDn = (double)lstWellSys[i - 1]->m_iDn / 2000.0;
double dFrontEle = lstWellSys[i]->m_nUpEle - dDeep - dDn;
lstWellSys[i]->m_nFrondDownEle = dFrontEle;
}
else {
AcDbObjectId id = lstWellSys[i]->m_ID;
OPENOBJ_BEGIN(id, AcDb::kForWrite, AecXDbWell, pEquip);
if (pEquip) {
int num = pEquip->GetInterfaceNum();
for (int m = 0; m < num; m++) {
CPipeInterface iFace;
pEquip->GetInterface(m, iFace);
AcDbObjectId idPipe = iFace.m_idPipe;
CString csPipeName;
OPENOBJ_BEGIN(idPipe, AcDb::kForRead, CDbPipe, pPipe);
if (pPipe) {
csPipeName = pPipe->GetSysLabel();
}
OPENOBJ_END();
CString csLabel = pEquip->GetISysLabel(m);
if (csPipeName == csName)
lstWellSys[i]->m_nFrondDownEle = _tstof(csLabel);
}
}
OPENOBJ_END();
}
}
else {//得到管线的详细信息
int len = lstWellSys[i]->m_lstID.Length();
lstWellSys[i]->m_iDn = 0;
for (int j = 0; j < len; j++) {
AcDbObjectId idPipe = *lstWellSys[i]->m_lstID[j];
OPENOBJ_BEGIN(idPipe, AcDb::kForRead, CDbPipe, pPipe);
if (pPipe) {
int iDn = (int)pPipe->GetDnDiameter();
lstWellSys[i]->m_iDn = iDn;
double dPipeLen = pPipe->Length();
lstWellSys[i]->m_nLength += dPipeLen;
}
OPENOBJ_END();
}
// if(!GlobalFunc::DocGetMeterUnitDraw())
// lstWellSys[i]->m_nLength = lstWellSys[i]->m_nLength/1000;
}
}
for (i = 0; i < lstWellSys.Length() - 1; i++) {
if (lstWellSys[i]->m_bIsWell) { //井
CString csName1 = lstWellSys[i]->m_csName;
CString csName2 = lstWellSys[i + 2]->m_csName;
if (csName1 == _T("") || csName2 == _T("")) {
break;
}
CString csName = csName1 + csName2;
if (dDeep > 0.001) {
double dDn = (double)lstWellSys[i + 1]->m_iDn / 2000.0;
double dFrontEle = lstWellSys[i]->m_nUpEle - dDeep - dDn;
lstWellSys[i]->m_nDownEle = dFrontEle;
}
else {
AcDbObjectId id = lstWellSys[i]->m_ID;
OPENOBJ_BEGIN(id, AcDb::kForWrite, AecXDbWell, pEquip);
if (pEquip) {
int num = pEquip->GetInterfaceNum();
for (int m = 0; m < num; m++) {
CPipeInterface iFace;
pEquip->GetInterface(m, iFace);
AcDbObjectId idPipe = iFace.m_idPipe;
CString csPipeName;
OPENOBJ_BEGIN(idPipe, AcDb::kForRead, CDbPipe, pPipe);
if (pPipe) {
csPipeName = pPipe->GetSysLabel();
}
OPENOBJ_END();
CString csLabel = pEquip->GetISysLabel(m);
if (csPipeName == csName)
lstWellSys[i]->m_nDownEle = _tstof(csLabel);
}
}
OPENOBJ_END();
}
}
}
}
// 已知管线系统链表pListAll, 返回给水系统链表lstWellSys, 如果 dDeep>0, 则作为默认覆土厚度
BOOL CVerticalSectionFeedDlg::GetFeedWellListData(SSearchPipeList *pListAll, DList<TFeedWellData> &lstWellSys)
{
BOOL bRet = TRUE;
while (1) {
TFeedWellData *pNewList = new TFeedWellData();
if (pListAll->m_iType == 3) { //井
pNewList->m_bIsWell = TRUE;
AcDbObjectId id = pListAll->m_ID;
ads_name ent;
acdbGetAdsName(ent, id);
CString csWellRadius = GlobalFunc::ReadXdata(ent, _T("TG-WELL-RADIUS"));
pNewList->m_nWellRadius = _tstof(csWellRadius) / 2.0; //转化为半径
if (pNewList->m_nWellRadius < 0.1)
pNewList->m_nWellRadius = 600;
pNewList->m_nSpare = 150;//沉沙井
pNewList->m_ID = id;
pNewList->m_csName = pListAll->m_csName;
pNewList->m_nUpEle = pListAll->m_nDang; //井地面标高
pNewList->m_nDownEle = pListAll->m_nStartPress; //跌水井底标高
pNewList->m_nFrondDownEle = 0; //跌水井底标高
// if(dDeep > 0.0001){
// pNewList->m_nDownEle = pNewList->m_nUpEle - dDeep;
// pNewList->m_nFrondDownEle = pNewList->m_nDownEle;
// }
CString csGroundEle = GlobalFunc::ReadXdata(ent, _T("TG-WELL-GroundEle"));
pNewList->m_nGroundEle = _tstof(csGroundEle);
if (csGroundEle == "")
pNewList->m_nGroundEle = pNewList->m_nUpEle;
}
else if (pListAll->m_iType == 0) { //管
// pNewList->m_iDn = pListAll->m_iDn;
// pNewList->m_nLength = pListAll->m_nLength;
// if(!GlobalFunc::DocGetMeterUnitDraw())
pNewList->m_nLength = 0;
pNewList->m_bIsWell = FALSE;
AcDbSoftPointerId id = pListAll->m_ID;
pNewList->m_ID = id;// zxl 2013.12.5 add
pNewList->m_lstID.Append(new AcDbSoftPointerId(id));
if (pListAll->m_lstNode.Length() > 1)
return FALSE;
else if (pListAll->m_lstNode.Length() == 0)
break;
SSearchPipeList *pList = pListAll->m_lstNode[0];
while (pList->m_iType == -1) {//继续得到下段管线
if (pList->m_lstNode.Length() > 1)
return FALSE;
else if (pList->m_lstNode.Length() == 0)
return FALSE;
pList = pList->m_lstNode[0];
if (pList->m_iType == 0) {
AcDbSoftPointerId id2 = pList->m_ID;
pListAll = pList;
pNewList->m_lstID.Append(new AcDbSoftPointerId(id2));
if (pList->m_lstNode.Length() > 1)
return FALSE;
else if (pList->m_lstNode.Length() == 0)
return FALSE;
pList = pList->m_lstNode[0];
}
else
break;
}
}
lstWellSys.Append(pNewList);
long len = pListAll->m_lstNode.Length();
if (len > 1)
return FALSE;
else if (len == 0)
break;
pListAll = pListAll->m_lstNode[0];
}
return bRet;
}
void CVerticalSectionFeedDlg::UpdateGrid()
{
m_grid.Clear();
int idx = 0;
for (int i = 0; i < m_lstFeedWellSys.Length() - 1; i++) {
if (m_lstFeedWellSys[i]->m_bIsWell) { //井
if (i == m_lstFeedWellSys.Length() - 2)
break;
CString csName1 = m_lstFeedWellSys[i]->m_csName;
CString csName2 = m_lstFeedWellSys[i + 2]->m_csName;
double dDn = m_lstFeedWellSys[i + 1]->m_iDn;
if (csName1 == _T("") || csName2 == _T("")) {
MessageBox(_T("请检查井是否都编号。"));
break;
}
m_grid.AppendRow();
m_grid.GetCell(idx, 0).SetText(csName1);
m_grid.GetCell(idx, 1).SetText(csName2);
double nEle = m_lstFeedWellSys[i]->m_nUpEle;
double nDownEle = m_lstFeedWellSys[i]->m_nDownEle;
if (m_iType == 1) {
nDownEle = nEle - nDownEle - dDn / 2000.0;
}
CString csWellUpEle, csDeep, csDownEle, csWellUpEle2, csDeep2, csDownEle2;
csDownEle.Format(_T("%.3f"), nDownEle);
csWellUpEle.Format(_T("%.3f"), nEle);
nEle = m_lstFeedWellSys[i + 2]->m_nUpEle;
nDownEle = m_lstFeedWellSys[i + 2]->m_nFrondDownEle;
if (m_iType == 1) {
nDownEle = nEle - nDownEle - dDn / 2000.0;
}
csDownEle2.Format(_T("%.3f"), nDownEle);
csWellUpEle2.Format(_T("%.3f"), nEle);
m_grid.GetCell(idx, 4).SetText(csWellUpEle);
m_grid.GetCell(idx, 5).SetText(csWellUpEle2);
m_grid.GetCell(idx, 6).SetText(csDownEle);
m_grid.GetCell(idx, 7).SetText(csDownEle2);
}
else { //管
if (i == m_lstFeedWellSys.Length() - 1)
continue;
int iDn = m_lstFeedWellSys[i]->m_iDn;
CString csDn, csPipeLen;
if (iDn > 0)
csDn.Format(_T("%d"), iDn);
csPipeLen.Format(_T("%.2f"), m_lstFeedWellSys[i]->m_nLength);
m_grid.GetCell(idx, 2).SetText(csPipeLen);
m_grid.GetCell(idx, 3).SetText(csDn);
idx++;
}
}
}
void CVerticalSectionFeedDlg::OnOK()
{
UpdateData(TRUE);
double dDeep(0);
for (m_grid.MoveToFirst(); !m_grid.IsOut(); m_grid.MoveToNext()) {
WDGridRow *pRow = m_grid.CurRow();
CString csName1 = (LPCTSTR)(*pRow)[0].GetText();
CString csName2 = (LPCTSTR)(*pRow)[1].GetText();
CString csName;
CString csDn = (LPCTSTR)(*pRow)[3].GetText();
csName = csName1 + csName2;
if (csName == _T(""))
break;
CString csUpEle = (LPCTSTR)(*pRow)[4].GetText();
CString csDownEle = (LPCTSTR)(*pRow)[6].GetText();
CString csUpEle2 = (LPCTSTR)(*pRow)[5].GetText();
CString csDownEle2 = (LPCTSTR)(*pRow)[7].GetText();
double dDownEle1 = _tstof(csDownEle);
double dDownEle2 = _tstof(csDownEle2);
double dUpEle1 = _tstof(csUpEle);
double dUpEle2 = _tstof(csUpEle2);
if (m_iType == 1) {//把覆土厚度换算为管中标高
dDownEle1 = dUpEle1 - dDownEle1 - _tstof(csDn) / 2000.0;
dDownEle2 = dUpEle2 - dDownEle2 - _tstof(csDn) / 2000.0;
}
for (int i = 0; i < m_lstFeedWellSys.Length(); i++) {
if (!m_lstFeedWellSys[i]->m_bIsWell) {
CString csNameF = m_lstFeedWellSys[i - 1]->m_csName;
CString csNameB = m_lstFeedWellSys[i + 1]->m_csName;
if (csName == csNameF + csNameB) {
m_lstFeedWellSys[i]->m_iDn = _ttoi(csDn);
for (int m = 0; m < m_lstFeedWellSys[i]->m_lstID.Length(); m++) {
OPENOBJ_BEGIN(*m_lstFeedWellSys[i]->m_lstID[m], AcDb::kForWrite, CDbPipe, pPipe);
if (pPipe) {
pPipe->SetSysLabel(csName);
}
OPENOBJ_END();
}
}
}
else {
m_lstFeedWellSys[i]->m_bIsDropWell = TRUE;
if (m_lstFeedWellSys[i]->m_csName == csName1) {
m_lstFeedWellSys[i]->m_nUpEle = dUpEle1;
m_lstFeedWellSys[i]->m_nDownEle = dDownEle1;
}
else if (m_lstFeedWellSys[i]->m_csName == csName2) {
m_lstFeedWellSys[i]->m_nUpEle = dUpEle2;
m_lstFeedWellSys[i]->m_nFrondDownEle = dDownEle2;
if (i == m_lstFeedWellSys.Length() - 1)
m_lstFeedWellSys[i]->m_nDownEle = dDownEle2;
}
}
}
}
OnButtonTodwg();
m_iX = _ttoi(m_csX);
m_iY = _ttoi(m_csY);
ResetWellStake();// zxl 2012.08.20 add
if (m_iOpenMode == 1) {
CDialog::OnOK();
return;
}
if (m_lstFeedWellSys.Length() < 2)
return;
if (m_iX < 1 || m_iY < 1)
return;
dDeep = m_lstFeedWellSys[0]->m_nUpEle - m_lstFeedWellSys[0]->m_nDownEle;
double nGridScale(0);
if (m_iGridScale == 0)
nGridScale = 0.5;
else if (m_iGridScale == 1)
nGridScale = 1;
else if (m_iGridScale == 2)
nGridScale = 2;
else if (m_iGridScale == 3)
nGridScale = 0;
CDialog::OnOK();
// DList<TWellData> lstWellSys;
// GetRainWellListData(lstWellSys, m_lstFeedWellSys);
// zxl 2013.12.5 modify
//DrawVerticalSectionFeed(m_lstFeedWellSys, m_iX, m_iY, nGridScale, dDeep);
std::map<TPipeSys::SysType, bool> data;
GetShowPipeData(data);
DrawVerticalSectionFeed(m_lstFeedWellSys, m_iX, m_iY, nGridScale, dDeep, m_bDimEle ? true : false, m_bDimDist ? true : false, data);
}
void CVerticalSectionFeedDlg::OnButtonTodwg()
{
UpdateData(TRUE);
if (m_lstFeedWellSys.Length() < 3)
return;
GlobalFunc::HideDialog(this, TRUE);
for (int i = 0; i < m_lstFeedWellSys.Length(); i++) {
if (m_lstFeedWellSys[i]->m_bIsWell) { //井
AcDbObjectId id = m_lstFeedWellSys[i]->m_ID;
XPoint ptLoc;
CString csEleLow, csEleUp;
csEleLow.Format(_T("%.2f"), m_lstFeedWellSys[i]->m_nDownEle);
csEleUp.Format(_T("%.2f"), m_lstFeedWellSys[i]->m_nUpEle);
ads_name ent;
acdbGetAdsName(ent, id);
GlobalFunc::WriteXdata(ent, _T("TG-WELL-GroundEle"), XString(_T("%.3f"), m_lstFeedWellSys[i]->m_nGroundEle));
// cet 2012.6.6 add 更新井半径
CString strWellRadius;
strWellRadius.Format(_T("%f"), m_lstFeedWellSys[i]->m_nWellRadius * 2);
GlobalFunc::WriteXdata(ent, _T("TG-WELL-RADIUS"), strWellRadius);
OPENOBJ_BEGIN(id, AcDb::kForWrite, AecXDbWell, pEquip);
if (pEquip) {
pEquip->SetDropWell(TRUE);
double nPipeDownEle = m_lstFeedWellSys[i]->m_nFrondDownEle;
double nPipeDownEle2 = m_lstFeedWellSys[i]->m_nDownEle;
if (i > 1) { //设置前管道 管底标高
int lenPipe = m_lstFeedWellSys[i - 1]->m_lstID.Length();
AcDbObjectId idPipe = *m_lstFeedWellSys[i - 1]->m_lstID[lenPipe - 1];
pEquip->SetPipeEndEle(idPipe, XString(_T("%.3f"), m_lstFeedWellSys[i]->m_nFrondDownEle));
}
if (i < m_lstFeedWellSys.Length() - 1) { //设置后管道 管底标高
AcDbObjectId idPipe = *m_lstFeedWellSys[i + 1]->m_lstID[0];
pEquip->SetPipeEndEle(idPipe, XString(_T("%.3f"), m_lstFeedWellSys[i]->m_nDownEle));
}
ptLoc = pEquip->GetLocation();
//搜索这个井其他连接管,最低标高才是井标高
int num = pEquip->GetInterfaceNum();
double nEleOther = m_lstFeedWellSys[i]->m_nDownEle;
for (int m = 0; m < num; m++) {
CPipeInterface iFace;
pEquip->GetInterface(m, iFace);
CString csLabel = pEquip->GetISysLabel(m);
if (csLabel != _T("") && nEleOther - _tstof(csLabel) > 0.001)
nEleOther = _tstof(csLabel);
}
if (fabs(nEleOther - m_lstFeedWellSys[i]->m_nDownEle) < 0.001)
pEquip->SetWellEleDown(m_lstFeedWellSys[i]->m_nDownEle);
pEquip->SetWellEleUp(m_lstFeedWellSys[i]->m_nUpEle);
}
OPENOBJ_END();
}
else {
int iDn = m_lstFeedWellSys[i]->m_iDn;
double nEleDown = m_lstFeedWellSys[i - 1]->m_nDownEle;
double nEleDown2 = m_lstFeedWellSys[i + 1]->m_nFrondDownEle;
double dPipeAllLen = m_lstFeedWellSys[i]->m_nLength;
double dI = (nEleDown - nEleDown2) / dPipeAllLen;
double dCurEle = nEleDown;
AcDbObjectIdArray idArray;
for (int m = 0; m < m_lstFeedWellSys[i]->m_lstID.Length(); m++) {
ads_name ent;
BOOL bDrawLabel = FALSE;// zxl 2012.12.26 add 记录初始设置
acdbGetAdsName(ent, *m_lstFeedWellSys[i]->m_lstID[m]);
OPENOBJ_BEGIN(ent, AcDb::kForWrite, CDbPipe, pPipe);
if (pPipe) {
pPipe->SetDnDiameter(iDn);
double dPipeLen = pPipe->Length();
// if(!GlobalFunc::DocGetMeterUnitDraw())
// dPipeLen = dPipeLen/1000;
double dLastEnd = dCurEle - dI * dPipeLen;
XPoint pt1(pPipe->GetStartPoint()), pt2(pPipe->GetEndPoint());
if (GlobalFunc::DocGetMeterUnitDraw())
{//米
if (pPipe->GetFlowDir() == TPipeSys::kFromStart) {
pt1.z = dCurEle;
pt2.z = dLastEnd;
}
else {
pt2.z = dCurEle;
pt1.z = dLastEnd;
}
}
else
{
if (pPipe->GetFlowDir() == TPipeSys::kFromStart) {
pt1.z = dCurEle * 1000;
pt2.z = dLastEnd * 1000;
}
else {
pt2.z = dCurEle * 1000;
pt1.z = dLastEnd * 1000;
}
}
// if(pPipe->GetFlowDir() == TPipeSys::kFromStart){
// pt1.z = dCurEle*1000;
// pt2.z = dLastEnd*1000;
// }
// else{
// pt2.z = dCurEle*1000;
// pt1.z = dLastEnd*1000;
// }
pPipe->SetStartPoint(pt1);
pPipe->SetEndPoint(pt2);
// cet 2011.8.30 modify
// pPipe->SetSpare((double)g_iDimPipeGradientType);
if (!pPipe->IsDrawLabel())
{
SetPipeLabelType(pPipe);
}
bDrawLabel = pPipe->IsDrawLabel();// zxl 2012.12.26 add
dCurEle = dLastEnd;
//////////////////////////////////////////////////////////////////
//还要考虑支管的标高也要同时改变 sr 2008-7-8
AcDbObjectId idNode1 = pPipe->GetNode(0);
AcDbObjectId idNode2 = pPipe->GetNode(1);
AppendIdArray(idArray, idNode1);
AppendIdArray(idArray, idNode2);
XPoint pt3, pt4;
pt3 = pt1;
pt3.z = 0;
pt4 = pt2;
pt4.z = 0;
//先把节点附件的标高改过来
//OPENOBJ_BEGIN(idNode1, AcDb::kForWrite, CDbPipeFitting, pNode);
//if (pNode) {
// XPoint ptLoc = pNode->GetLocation();
// ptLoc.z = 0;
// if (ptLoc == pt3)
// pNode->SetLocation(pt1);
// else if (ptLoc == pt4)
// pNode->SetLocation(pt2);
//}
//OPENOBJ_END();
//OPENOBJ_BEGIN(idNode2, AcDb::kForWrite, CDbPipeFitting, pNode);
//if (pNode) {
// XPoint ptLoc = pNode->GetLocation();
// ptLoc.z = 0;
// if (ptLoc == pt3)
// pNode->SetLocation(pt1);
// else if (ptLoc == pt4)
// pNode->SetLocation(pt2);
//}
//OPENOBJ_END();
}
OPENOBJ_END();
// zxl 2012.12.25 modify
//DoDimPipeDn(ent, iDn, _T("自动"), g_nPipeDnHeight, FALSE);
GlobalFunc::DoDimPipeDn(ent, iDn, _T("自动"), g_Option::instance().g_nPipeDnHeight, FALSE, TRUE);
OPENOBJ_BEGIN(ent, AcDb::kForWrite, CDbPipe, pPipe);
if (pPipe)
{
pPipe->EnableDrawLabel(bDrawLabel);
}
OPENOBJ_END();
}
//处理节点里面的支管标高, 如果节点所连接管线端点标高不等于节点标高,就把它改过来
for (int j = 0; j < idArray.length(); j++) {
AcDbObjectId idTmp = idArray[j];
//OPENOBJ_BEGIN(idTmp, AcDb::kForRead, CDbPipeFitting, pNode);
//if (pNode) {
// int num = pNode->GetInterfaceNum();
// XPoint ptLoc = pNode->GetLocation();
// XPoint ptLoc2 = ptLoc;
// ptLoc2.z = 0;
// for (int k = 0; k < num; k++) {
// CPipeInterface iFace;
// pNode->GetInterface(k, iFace);
// AcDbObjectId nextPipeId = iFace.m_idPipe;
// OPENOBJ_BEGIN(nextPipeId, AcDb::kForRead, CDbPipe, pPipe);
// if (pPipe) {
// XPoint ptS = pPipe->StartPoint();
// XPoint ptE = pPipe->EndPoint();
// if (ptS == ptLoc || ptE == ptLoc)
// continue;
// ptS.z = 0;
// ptE.z = 0;
// if (pPipe->upgradeOpen() == Acad::eOk) {
// if (ptS == ptLoc2)
// pPipe->SetStartPoint(ptLoc);
// else if (ptE == ptLoc2)
// pPipe->SetEndPoint(ptLoc);
// pPipe->downgradeOpen();
// }
// }
// OPENOBJ_END();
// }
//}
//OPENOBJ_END();
}
}
}
actrTransactionManager->flushGraphics(); //acad 刷新
GlobalFunc::UpdateMultDim();
// ads_getstring(NULL, _T("\n按任意键返回对话框:<返回>"), szTmp);
GlobalFunc::HideDialog(this, FALSE);
}
BOOL CVerticalSectionFeedDlg::AppendIdArray(AcDbObjectIdArray &idArray, AcDbObjectId id)
{
BOOL bFlag = FALSE;
//OPENOBJ_BEGIN(id, AcDb::kForRead, CDbPipeFitting, pNode);
//if (pNode) {
// if (pNode->GetInterfaceNum() > 2)
// bFlag = TRUE;
//}
//OPENOBJ_END();
if (!bFlag)
return FALSE;
int len = idArray.length();
for (int i = 0; i < len; i++) {
AcDbObjectId idTmp = idArray[i];
if (idTmp == id)
return FALSE;
}
idArray.append(id);
return TRUE;
}
void CVerticalSectionFeedDlg::OnButtonModifyele()
{
CTemporaryResourceOverride vTemp;
CWellCalcModifyEleDlg dlg(1);
for (int i = 0; i < m_lstFeedWellSys.Length(); i++) {
TFeedWellData *pList = new TFeedWellData();
pList->m_bIsWell = m_lstFeedWellSys[i]->m_bIsWell;
pList->m_nGroundEle = m_lstFeedWellSys[i]->m_nGroundEle;
pList->m_bIsDropWell = m_lstFeedWellSys[i]->m_bIsDropWell;;
pList->m_csName = m_lstFeedWellSys[i]->m_csName;
pList->m_nUpEle = m_lstFeedWellSys[i]->m_nUpEle;
pList->m_nDownEle = m_lstFeedWellSys[i]->m_nDownEle;
pList->m_nWellRadius = m_lstFeedWellSys[i]->m_nWellRadius;
pList->m_nSpare = m_lstFeedWellSys[i]->m_nSpare;
dlg.m_lstFeedWellSys.Append(pList);
}
if (dlg.DoModal() == IDOK) {
for (int i = 0; i < m_lstFeedWellSys.Length(); i++) {
m_lstFeedWellSys[i]->m_nUpEle = dlg.m_lstFeedWellSys[i]->m_nUpEle;
m_lstFeedWellSys[i]->m_nWellRadius = dlg.m_lstFeedWellSys[i]->m_nWellRadius;
m_lstFeedWellSys[i]->m_nGroundEle = dlg.m_lstFeedWellSys[i]->m_nGroundEle;
m_lstFeedWellSys[i]->m_nSpare = dlg.m_lstFeedWellSys[i]->m_nSpare;
}
}
if (m_iType == 1) {//如果是覆土厚度,则根据新井面标高,重新计算井低标高
for (m_grid.MoveToFirst(); !m_grid.IsOut(); m_grid.MoveToNext()) {
WDGridRow *pRow = m_grid.CurRow();
CString csName1 = (LPCTSTR)(*pRow)[0].GetText();
CString csName2 = (LPCTSTR)(*pRow)[1].GetText();
CString csName;
CString csDn = (LPCTSTR)(*pRow)[3].GetText();
csName = csName1 + csName2;
if (csName == _T(""))
break;
CString csDownEle1 = (LPCTSTR)(*pRow)[6].GetText();
CString csDownEle2 = (LPCTSTR)(*pRow)[7].GetText();
double dDownEle1 = _tstof(csDownEle1);
double dDownEle2 = _tstof(csDownEle2);
for (int i = 0; i < m_lstFeedWellSys.Length(); i++) {
if (m_lstFeedWellSys[i]->m_bIsWell) {
if (m_lstFeedWellSys[i]->m_csName == csName1) {//把覆土厚度换算为管中标高
dDownEle1 = m_lstFeedWellSys[i]->m_nUpEle - dDownEle1 - _tstof(csDn) / 2000.0;
m_lstFeedWellSys[i]->m_nDownEle = dDownEle1;
}
else if (m_lstFeedWellSys[i]->m_csName == csName2) {
dDownEle2 = m_lstFeedWellSys[i]->m_nUpEle - dDownEle2 - _tstof(csDn) / 2000.0;
m_lstFeedWellSys[i]->m_nFrondDownEle = dDownEle2;
// if(i == m_lstFeedWellSys.Length()-1)
// m_lstFeedWellSys[i]->m_nDownEle = dDownEle2;
}
}
}
// dDownEle1 = dUpEle1 - dDownEle1 - _tstof(csDn)/2000.0;
// dDownEle2 = dUpEle2 - dDownEle2 - _tstof(csDn)/2000.0;
}
}
UpdateGrid();
}
//std::vector 的回调函数
extern bool GreaterByParm(TPtOnStake item1, TPtOnStake item2);
//对桩进行排序
extern BOOL SortStakePoints(AcArray<TPtOnStake> &arStake, AcDbCurve * pCurve);
//已知桩号数字,返回标注内容, 如:820 返回K0+825
extern CString GetStakeName(double dTextValue, CString sStakePrefix);
//更新井的桩号 zxl 2012.08.20 add
void CVerticalSectionFeedDlg::ResetWellStake()
{
RBList rbMask(RTDXF0, _T("AEC)ZT_STAKE"), NULL);
RBList rbMask2(RTDXF0, _T("LINE,ARC,LWPOLYLINE"), NULL);
PickSet ss(SS_FREE);
ss.Get(_T("X"), NULL, NULL, rbMask);
long dd = ss.Length();
if (ss.Length() < 2) //本图根本就没有桩号
return;
if (m_iOpenMode == 1) {
if (m_csSheetHead.Find(_T("桩号")) < 0)
return;
}
else
{
if (g_Option::instance().g_csVerticalSectionHeadFeed.Find(_T("桩号")) < 0)
return;
}
//1. 得到桩号所经过的路径曲线
CString csStakeHead = _T("K");
Entity entCurve;
for (int i = 0; i < m_lstFeedWellSys.Length(); i++) {
if (m_lstFeedWellSys[i]->m_bIsWell) { //井
AcDbObjectId id = m_lstFeedWellSys[i]->m_ID;
XPoint ptWell, ptStake;
OPENOBJ_BEGIN(id, AcDb::kForRead, CDbEquipment, pEquip);
if (pEquip) {
ptWell = pEquip->GetLocation();
ptWell.z = 0;
}
OPENOBJ_END();
//得到该井最近的1桩号
double dDist = -1;
Entity entStake;
for (long j = 0; j < ss.Length(); j++)
{
Entity ent = ss[j];
OPENOBJ_BEGIN(ent, AcDb::kForRead, CDbStake, pEquip);
if (pEquip) {
pEquip->GetStakeBeforeChar(csStakeHead);
XPoint pt = pEquip->GetLocation();
pt.z = 0;
double dDistTmp = ads_distance(pt, ptWell);
if (dDist < 0 || dDist > dDistTmp)
{
dDist = dDistTmp;
ptStake = pt;
entStake = ent;
}
}
OPENOBJ_END();
}
PickSet ssCurve(SS_FREE);
GlobalFunc::AssureInCurrentView_New(ptStake, ptStake);
GlobalFunc::GetPointPickSet(ptStake, ssCurve, rbMask2);
long len3 = ssCurve.Length();
if (ssCurve.Length() == 1)
{
entCurve = ssCurve[0L];
break;
}
else if (ssCurve.Length() == 2)
{
TCHAR szLay1[256];
TCHAR szLay2[256];
Entity ent1 = ssCurve[0L];
Entity ent2 = ssCurve[1L];
ent1.GetData(8, szLay1);
ent2.GetData(8, szLay2);
if (_tcsicmp(szLay1, _T("TWT_STAKE")) == 0)
entCurve = ent2;
if (_tcsicmp(szLay2, _T("TWT_STAKE")) == 0)
entCurve = ent1;
}
}
}
if (!entCurve)
return;
//2. 得到通过该曲线所有的桩号,并把他们放到桩号容器中arStake
AcArray<TPtOnStake> arStake2;
PickSet ssStake(SS_FREE);
GetCurveFPick(entCurve, ssStake, rbMask);
int len = ssStake.Length();
for (long m = 0; m < len; m++)
{
Entity ent = ssStake[m];
OPENOBJ_BEGIN(ent, AcDb::kForRead, CDbStake, pEquip);
if (pEquip) {
XPoint pt = pEquip->GetLocation();
pt.z = 0;
AcDbObjectId id = pEquip->objectId();
TPtOnStake ptOnStake;
ptOnStake.m_ptGeOn = pt;
ptOnStake.m_dVal = pEquip->GetStakeValue();
arStake2.append(ptOnStake);
}
OPENOBJ_END();
}
//3. 对容器中的桩号,按曲线进行排序(倒序)
OPENOBJ_BEGIN(entCurve, AcDb::kForRead, AcDbCurve, pCurve);
if (pCurve)
{
SortStakePoints(arStake2, pCurve);
//4. 求每个井的桩号(先投影到曲线上,然后根据前后2桩号,差值求桩号)
for (i = 0; i < m_lstFeedWellSys.Length(); i++) {
if (m_lstFeedWellSys[i]->m_bIsWell) { //井
AcDbObjectId id = m_lstFeedWellSys[i]->m_ID;
XPoint ptWell, ptStake;
OPENOBJ_BEGIN(id, AcDb::kForRead, CDbEquipment, pEquip);
if (pEquip) {
ptWell = pEquip->GetLocation();
ptWell.z = 0;
}
OPENOBJ_END();
pCurve->getClosestPointTo(ptWell, ptWell, Adesk::kTrue);
double dParmWell(0);
pCurve->getParamAtPoint(ptWell, dParmWell);
int iIdx1(-1), iIdx2(-1);
for (int n = 0; n < arStake2.length(); n++)
{
if ((dParmWell - arStake2.at(n).m_dParm) > -0.001)
{
iIdx1 = n;
break;
}
}
iIdx2 = iIdx1 - 1;
if (iIdx1 > -1 && iIdx2 > -1 && iIdx1 < arStake2.length())
{
double dVal1 = arStake2.at(iIdx1).m_dVal;
double dVal2 = arStake2.at(iIdx2).m_dVal;
double dValRet = GlobalFunc::GetValBetween2(dVal1, dVal2, arStake2.at(iIdx1).m_dParm, arStake2.at(iIdx2).m_dParm, dParmWell);
CString csText = GetStakeName(dValRet, csStakeHead);
// 求出来的桩号写入井的扩展数据,自定义绘制的时候会自动取
ads_name entWell;
acdbGetAdsName(entWell, id);
GlobalFunc::WriteXdata(entWell, _T("TWT-STAKEVALUE"), csText);
}
}
}
}
OPENOBJ_END();
}
void CVerticalSectionFeedDlg::GetCurveFPick(Entity ent, PickSet &ss, RBList &rbMask)
{
if (ent.Is(_T("LINE"))) {
XLine line(ent);
GlobalFunc::AssureInCurrentView_New(line.StartPoint(), line.EndPoint());
line.TransUCS(RBGroups(0), RBGroups(1)); // 把 UCS 转为 WCS
RBList rbPoint = ads_buildlist(RT3DPOINT, &line.StartPoint(), RT3DPOINT, &line.EndPoint(), NULL);
ss.Get(_T("F"), rbPoint, NULL, rbMask);
}
else if (ent.Is(_T("ARC"))) {
XArc arc(ent);
XCurveSegment seg;
seg = arc;
XPoly2D xPline;
seg.AsPoly2D(xPline);
XPoint pt1, pt2;
pt1 = *xPline[0];
xPline.Length();
pt2 = *xPline[xPline.Length() - 1];
GlobalFunc::AssureInCurrentView_New(pt1, pt2);
xPline.TransUCS(RBGroups(0), RBGroups(1)); // 把 UCS 转为 WCS
RBList rbPoint = xPline.Polygon();
ss.Get(_T("F"), rbPoint, NULL, rbMask);
}
else {
XPoly2D xPline(ent);
XPoint pt1, pt2;
pt1 = *xPline[0];
xPline.Length();
pt2 = *xPline[xPline.Length() - 1];
GlobalFunc::AssureInCurrentView_New(pt1, pt2);
xPline.TransUCS(RBGroups(0), RBGroups(1)); // 把 UCS 转为 WCS
RBList rbPoint = xPline.Polygon();
ss.Get(_T("F"), rbPoint, NULL, rbMask);
}
}
void CVerticalSectionFeedDlg::OnButtonShow()
{
CWnd *pWnd = GetDlgItem(IDC_BUTTON_SHOW);
if (pWnd == NULL)
{
return;
}
CRect rc;
pWnd->GetWindowRect(rc);
if (m_pMenu == NULL)
{
m_pMenu = new CMenu;
m_pMenu->CreatePopupMenu();
}
else
{
m_pMenu->DestroyMenu();
m_pMenu->CreatePopupMenu();
}
m_pMenu->AppendMenu(m_mapCheck[nMenuId + 1] ? MF_CHECKED : MF_UNCHECKED, nMenuId + 1, _T("给水管"));
m_pMenu->AppendMenu(m_mapCheck[nMenuId + 2] ? MF_CHECKED : MF_UNCHECKED, nMenuId + 2, _T("污水管"));
m_pMenu->AppendMenu(m_mapCheck[nMenuId + 3] ? MF_CHECKED : MF_UNCHECKED, nMenuId + 3, _T("废水管"));
m_pMenu->AppendMenu(m_mapCheck[nMenuId + 4] ? MF_CHECKED : MF_UNCHECKED, nMenuId + 4, _T("雨水管"));
m_pMenu->AppendMenu(m_mapCheck[nMenuId + 5] ? MF_CHECKED : MF_UNCHECKED, nMenuId + 5, _T("中水管"));
m_pMenu->AppendMenu(m_mapCheck[nMenuId + 6] ? MF_CHECKED : MF_UNCHECKED, nMenuId + 6, _T("消防管"));
m_pMenu->AppendMenu(m_mapCheck[nMenuId + 7] ? MF_CHECKED : MF_UNCHECKED, nMenuId + 7, _T("其他管"));
m_pMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_VERTICAL,
rc.left, rc.bottom, this, &rc);
}
BOOL CVerticalSectionFeedDlg::OnCommand(WPARAM wParam, LPARAM lParam)
{
UINT nID = LOWORD(wParam);
if ((nID > nMenuId + 7 || nID < nMenuId + 1) && (nID > nMenuTypeId + 3 || nID < nMenuTypeId + 1))
{
return CDialog::OnCommand(wParam, lParam);
}
if (m_pMenu != NULL && (nID < nMenuId + 8 && nID > nMenuId))
{
m_mapCheck[nID] = !m_mapCheck[nID];
}
if (m_pMenuLength != NULL && (nID < nMenuTypeId + 4 && nID > nMenuTypeId))
{
m_iLengthType = nID - nMenuTypeId - 1;
}
return CDialog::OnCommand(wParam, lParam);
}
void CVerticalSectionFeedDlg::InitMapData()
{
m_mapCheck.insert(std::make_pair(nMenuId + 1, true));
m_mapCheck.insert(std::make_pair(nMenuId + 2, true));
m_mapCheck.insert(std::make_pair(nMenuId + 3, true));
m_mapCheck.insert(std::make_pair(nMenuId + 4, true));
m_mapCheck.insert(std::make_pair(nMenuId + 5, true));
m_mapCheck.insert(std::make_pair(nMenuId + 6, true));
m_mapCheck.insert(std::make_pair(nMenuId + 7, true));
}
void CVerticalSectionFeedDlg::GetShowPipeData(std::map<TPipeSys::SysType, bool> &data)
{
data.clear();
data[TPipeSys::kFeedWater] = m_mapCheck[nMenuId + 1];
data[TPipeSys::kDirtWater] = m_mapCheck[nMenuId + 2];
data[TPipeSys::kUselessWater] = m_mapCheck[nMenuId + 3];
data[TPipeSys::kRainWater] = m_mapCheck[nMenuId + 4];
data[TPipeSys::kUsedWater] = m_mapCheck[nMenuId + 5];
data[TPipeSys::kFireFighting] = m_mapCheck[nMenuId + 6];
data[TPipeSys::kOther] = m_mapCheck[nMenuId + 7];
}
void CVerticalSectionFeedDlg::SetShowPipeData(std::map<TPipeSys::SysType, bool> &data)
{
m_mapCheck[nMenuId + 1] = data[TPipeSys::kFeedWater];
m_mapCheck[nMenuId + 2] = data[TPipeSys::kDirtWater];
m_mapCheck[nMenuId + 3] = data[TPipeSys::kUselessWater];
m_mapCheck[nMenuId + 4] = data[TPipeSys::kRainWater];
m_mapCheck[nMenuId + 5] = data[TPipeSys::kUsedWater];
m_mapCheck[nMenuId + 6] = data[TPipeSys::kFireFighting];
m_mapCheck[nMenuId + 7] = data[TPipeSys::kOther];
}