Files
envi-code/SourceCode/Code2026/tg_shs/shs_TwtKernal/SelVPipeDlg.cpp
T

515 lines
14 KiB
C++
Raw Normal View History

2026-09-28 15:28:50 +08:00
// SelVPipeDlg.cpp : implementation file
//
#include "stdafx.h"
#include "SelVPipeDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// 选择管线
//////////////////////////////////////////////////////////////////////////////////////////////////////////
//extern Entity GetPipeDimByPt(XPoint pt, int idx);
extern Entity GetPipeDimByEnt(Entity ent);
void SelVPipeCmd()
{
g_ssPickFirst.Free();
RBList rbMask(RTDXF0, _T("ATS_PIPE"), 8, GetLayerNames(_T("管")), NULL);
CWnd *pWnd=acedGetAcadFrame();
CSelVPipeDlg dlg(pWnd);
{
CTemporaryResourceOverride vTemp;
dlg.Create(dlg.IDD, pWnd);
}
dlg.ShowWindow(SW_SHOW);
acedGetAcadDwgView()->SetFocus();
PickSet ss(SS_FREE);
PickSet ssSel(SS_FREE);
if(SelectEntities(_T("\n请选择范围:<退出>"), ss, rbMask) != RTNORM){
dlg.DestroyWindow();
return;
}
dlg.UpdateData(TRUE);
dlg.DestroyWindow();
long len = ss.Length();
acedSetStatusBarProgressMeter(_T("准备中..."), 0, len);
for(long i=0;i<len;i++){
acedSetStatusBarProgressMeterPos(i);
Entity ent = ss[i];
TCHAR layer[256];
ent.GetData(8, layer);
BOOL bFlag = FALSE;
if(dlg.m_bFL && (_tcsicmp(layer, LAY_PIPE_USELESS) == 0 || _tcsicmp(layer, LAY_VPIPE_USELESS) == 0))
bFlag = TRUE;
if(dlg.m_bJL && (_tcsicmp(layer, LAY_PIPE_FEED) == 0
|| _tcsicmp(layer, LAY_VPIPE_FEED) == 0
|| _tcsicmp(layer, LAY_VPIPE_FEED2) == 0
|| _tcsicmp(layer, LAY_VPIPE_FEED3) == 0
|| _tcsicmp(layer, LAY_PIPE_FEED3) == 0
|| _tcsicmp(layer, LAY_PIPE_FEED2) == 0))
{
if(dlg.m_bPlaceLow) //低区
{
if(_tcsicmp(layer, LAY_PIPE_FEED) == 0 || _tcsicmp(layer, LAY_VPIPE_FEED) == 0)
bFlag = TRUE;
}
if(dlg.m_bPlaceMid) //中区
{
if(_tcsicmp(layer, LAY_PIPE_FEED2) == 0 || _tcsicmp(layer, LAY_VPIPE_FEED2) == 0)
bFlag = TRUE;
}
if(dlg.m_bPlaceHigh) //高区
{
if(_tcsicmp(layer, LAY_PIPE_FEED3) == 0 || _tcsicmp(layer, LAY_VPIPE_FEED3) == 0)
bFlag = TRUE;
}
}
if(dlg.m_bRHL && (_tcsicmp(layer, LAY_PIPE_HEADBACK) == 0
|| _tcsicmp(layer, LAY_PIPE_HEADBACK2) == 0
|| _tcsicmp(layer, LAY_PIPE_HEADBACK3) == 0
|| _tcsicmp(layer, LAY_VPIPE_HEADBACK) == 0
|| _tcsicmp(layer, LAY_VPIPE_HEADBACK2) == 0
|| _tcsicmp(layer, LAY_VPIPE_HEADBACK3) == 0))
{
if(dlg.m_bPlaceLow) //低区
{
if(_tcsicmp(layer, LAY_PIPE_HEADBACK) == 0 || _tcsicmp(layer, LAY_VPIPE_HEADBACK) == 0)
bFlag = TRUE;
}
if(dlg.m_bPlaceMid) //中区
{
if(_tcsicmp(layer, LAY_PIPE_HEADBACK2) == 0 || _tcsicmp(layer, LAY_VPIPE_HEADBACK2) == 0)
bFlag = TRUE;
}
if(dlg.m_bPlaceHigh) //高区
{
if(_tcsicmp(layer, LAY_PIPE_HEADBACK3) == 0 || _tcsicmp(layer, LAY_VPIPE_HEADBACK3) == 0)
bFlag = TRUE;
}
}
if(dlg.m_bRJL && (_tcsicmp(layer, LAY_PIPE_HEADFEED) == 0
|| _tcsicmp(layer, LAY_PIPE_HEADFEED2) == 0
|| _tcsicmp(layer, LAY_PIPE_HEADFEED3) == 0
|| _tcsicmp(layer, LAY_VPIPE_HEADFEED) == 0
|| _tcsicmp(layer, LAY_VPIPE_HEADFEED2) == 0
|| _tcsicmp(layer, LAY_VPIPE_HEADFEED3) == 0))
{
if(dlg.m_bPlaceLow) //低区
{
if(_tcsicmp(layer, LAY_PIPE_HEADFEED) == 0 || _tcsicmp(layer, LAY_VPIPE_HEADFEED) == 0)
bFlag = TRUE;
}
if(dlg.m_bPlaceMid) //中区
{
if(_tcsicmp(layer, LAY_PIPE_HEADFEED2) == 0 || _tcsicmp(layer, LAY_VPIPE_HEADFEED2) == 0)
bFlag = TRUE;
}
if(dlg.m_bPlaceHigh) //高区
{
if(_tcsicmp(layer, LAY_PIPE_HEADFEED3) == 0 || _tcsicmp(layer, LAY_VPIPE_HEADFEED3) == 0)
bFlag = TRUE;
}
}
if(dlg.m_bWL && (_tcsicmp(layer, LAY_PIPE_DIRT) == 0 || _tcsicmp(layer, LAY_VPIPE_DIRT) == 0))
bFlag = TRUE;
if(dlg.m_bXL && (_tcsicmp(layer, LAY_PIPE_FIRE) == 0
|| _tcsicmp(layer, LAY_PIPE_FIRE2) == 0
|| _tcsicmp(layer, LAY_PIPE_FIRE3) == 0
|| _tcsicmp(layer, LAY_VPIPE_FIRE) == 0
|| _tcsicmp(layer, LAY_VPIPE_FIRE2) == 0
|| _tcsicmp(layer, LAY_VPIPE_FIRE3) == 0))
{
if(dlg.m_bPlaceLow) //低区
{
if(_tcsicmp(layer, LAY_PIPE_FIRE) == 0 || _tcsicmp(layer, LAY_VPIPE_FIRE) == 0)
bFlag = TRUE;
}
if(dlg.m_bPlaceMid) //中区
{
if(_tcsicmp(layer, LAY_PIPE_FIRE2) == 0 || _tcsicmp(layer, LAY_VPIPE_FIRE2) == 0)
bFlag = TRUE;
}
if(dlg.m_bPlaceHigh) //高区
{
if(_tcsicmp(layer, LAY_PIPE_FIRE3) == 0 || _tcsicmp(layer, LAY_VPIPE_FIRE3) == 0)
bFlag = TRUE;
}
}
if(dlg.m_bYL && (_tcsicmp(layer, LAY_PIPE_RAIN) == 0 || _tcsicmp(layer, LAY_VPIPE_RAIN) == 0))
bFlag = TRUE;
if(dlg.m_bZL && (_tcsicmp(layer, LAY_PIPE_USED) == 0
|| _tcsicmp(layer, LAY_PIPE_USED2) == 0
|| _tcsicmp(layer, LAY_PIPE_USED3) == 0
|| _tcsicmp(layer, LAY_VPIPE_USED) == 0
|| _tcsicmp(layer, LAY_VPIPE_USED2) == 0
|| _tcsicmp(layer, LAY_VPIPE_USED3) == 0))
{
if(dlg.m_bPlaceLow) //低区
{
if(_tcsicmp(layer, LAY_PIPE_USED) == 0 || _tcsicmp(layer, LAY_VPIPE_USED) == 0)
bFlag = TRUE;
}
if(dlg.m_bPlaceMid) //中区
{
if(_tcsicmp(layer, LAY_PIPE_USED2) == 0 || _tcsicmp(layer, LAY_VPIPE_USED2) == 0)
bFlag = TRUE;
}
if(dlg.m_bPlaceHigh) //高区
{
if(_tcsicmp(layer, LAY_PIPE_USED3) == 0 || _tcsicmp(layer, LAY_VPIPE_USED3) == 0)
bFlag = TRUE;
}
}
if(dlg.m_bHL && (_tcsicmp(layer, LAY_PIPE_SPRINKLE) == 0
|| _tcsicmp(layer, LAY_PIPE_SPRINKLE2) == 0
|| _tcsicmp(layer, LAY_PIPE_SPRINKLE3) == 0
|| _tcsicmp(layer, LAY_VPIPE_SPRINKLE) == 0
|| _tcsicmp(layer, LAY_VPIPE_SPRINKLE2) == 0
|| _tcsicmp(layer, LAY_VPIPE_SPRINKLE3) == 0))
{
if(dlg.m_bPlaceLow) //低区
{
if(_tcsicmp(layer, LAY_PIPE_SPRINKLE) == 0 || _tcsicmp(layer, LAY_VPIPE_SPRINKLE) == 0)
bFlag = TRUE;
}
if(dlg.m_bPlaceMid) //中区
{
if(_tcsicmp(layer, LAY_PIPE_SPRINKLE2) == 0 || _tcsicmp(layer, LAY_VPIPE_SPRINKLE2) == 0)
bFlag = TRUE;
}
if(dlg.m_bPlaceHigh) //高区
{
if(_tcsicmp(layer, LAY_PIPE_SPRINKLE3) == 0 || _tcsicmp(layer, LAY_VPIPE_SPRINKLE3) == 0)
bFlag = TRUE;
}
}
if(dlg.m_bDrink && (_tcsicmp(layer, LAY_PIPE_DRINK) == 0 || _tcsicmp(layer, LAY_VPIPE_DRINK) == 0))
bFlag = TRUE;
if(dlg.m_bOther && (_tcsicmp(layer, LAY_PIPE_OTHER) == 0 || _tcsicmp(layer, LAY_VPIPE_OTHER) == 0))
bFlag = TRUE;
if(dlg.m_bPressDirt && (_tcsicmp(layer, LAY_PIPE_PRESSDIRT) == 0 || _tcsicmp(layer, LAY_VPIPE_PRESSDIRT) == 0))
bFlag = TRUE;
if(dlg.m_bPressUseless && (_tcsicmp(layer, LAY_PIPE_PRESSUSELESS) == 0 || _tcsicmp(layer, LAY_VPIPE_PRESSUSELESS) == 0))
bFlag = TRUE;
if(dlg.m_bPressRain && (_tcsicmp(layer, LAY_PIPE_PRESSRAIN) == 0 || _tcsicmp(layer, LAY_VPIPE_PRESSRAIN) == 0))
bFlag = TRUE;
if(dlg.m_bCoagulate && (_tcsicmp(layer, LAY_PIPE_COAGULATE) == 0 || _tcsicmp(layer, LAY_VPIPE_COAGULATE) == 0))
bFlag = TRUE;
// cet 2011.12.9 add
if (dlg.m_bSZJS && (_tcsicmp(layer, LAY_PIPE_USER1) == 0 || _tcsicmp(layer, LAY_VPIPE_USER1) == 0))
bFlag = TRUE;
if (dlg.m_bXHJS && (_tcsicmp(layer, LAY_PIPE_USER2) == 0 || _tcsicmp(layer, LAY_VPIPE_USER2) == 0))
bFlag = TRUE;
if (dlg.m_bLQ && (_tcsicmp(layer, LAY_PIPE_USER3) == 0 || _tcsicmp(layer, LAY_VPIPE_USER3) == 0))
bFlag = TRUE;
if (dlg.m_bQTMH && (_tcsicmp(layer, LAY_PIPE_USER4) == 0 || _tcsicmp(layer, LAY_VPIPE_USER4) == 0))
bFlag = TRUE;
if (dlg.m_bZQ && (_tcsicmp(layer, LAY_PIPE_USER5) == 0 || _tcsicmp(layer, LAY_VPIPE_USER5) == 0))
bFlag = TRUE;
if (dlg.m_bYL2 && (_tcsicmp(layer, LAY_PIPE_USER6) == 0 || _tcsicmp(layer, LAY_VPIPE_USER6) == 0))
bFlag = TRUE;
if (dlg.m_bTQ && (_tcsicmp(layer, LAY_PIPE_USER7) == 0 || _tcsicmp(layer, LAY_VPIPE_USER7) == 0))
bFlag = TRUE;
if (dlg.m_bSJ && (_tcsicmp(layer, LAY_PIPE_USER8) == 0 || _tcsicmp(layer, LAY_VPIPE_USER8) == 0))
bFlag = TRUE;
if(!bFlag)
continue;
OPENOBJ_BEGIN(ent, AcDb::kForRead, TDbPipe, pPipe);
if(pPipe){
if(pPipe->IsVertical()){
if(dlg.m_iSel == 0 || dlg.m_iSel == 2)
{
CString csSerial = ReadXdata(ent, _T("PIPE-SERIAL"));
if(csSerial != "") //扣弯
{
ssSel += ent;
if(dlg.m_bDim)
{
Entity entDim = GetPipeDimByEnt(ent);
if(!!entDim)
ssSel += entDim;
}
}
else if(dlg.m_iSel == 2)
ssSel += ent;
}
}
else
{
if(dlg.m_iSel == 1 || dlg.m_iSel == 2)
{
ssSel += ent;
if(dlg.m_bEq)
{
AcDbObjectId nodeId1(NULL), nodeId2(NULL);
nodeId1 = pPipe->GetNode(0);
nodeId2 = pPipe->GetNode(1);
ads_name ent1, ent2;
acdbGetAdsName(ent1, nodeId1);
acdbGetAdsName(ent2, nodeId2);
Entity ent3 = ent1;
Entity ent4 = ent2;
ssSel += ent3;
ssSel += ent4;
}
}
}
}
OPENOBJ_END();
}
acedRestoreStatusBar();
adsout << _T("\n总共选中了") << int(ssSel.Length()) << _T("个") ;
ads_sssetfirst(ssSel, ssSel);
}
/////////////////////////////////////////////////////////////////////////////
// CSelVPipeDlg dialog
extern void GetLayerPipeName(std::map<CString, CString> &mapLayerPipeName);
IMPLEMENT_DYNAMIC(CSelVPipeDlg, CModelessDialog)
CSelVPipeDlg::CSelVPipeDlg(CWnd* pParent /*=NULL*/)
: CModelessDialog(CSelVPipeDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CSelVPipeDlg)
m_bAllLayer = TRUE;
m_bDim = TRUE;
m_bFL = TRUE;
m_bHL = TRUE;
m_bJL = TRUE;
m_bRHL = TRUE;
m_bRJL = TRUE;
m_bWL = TRUE;
m_bXL = TRUE;
m_bYL = TRUE;
m_bZL = TRUE;
m_bDrink = TRUE;
m_bOther = TRUE;
m_bPressDirt = TRUE;
m_bPressRain = TRUE;
m_bPressUseless = TRUE;
m_bCoagulate = TRUE;
m_iSel = 0;
m_bEq = FALSE;
m_bPlaceHigh = TRUE;
m_bPlaceLow = TRUE;
m_bPlaceMid = TRUE;
m_bLQ = TRUE;
m_bQTMH = TRUE;
m_bSJ = TRUE;
m_bTQ = TRUE;
m_bYL2 = TRUE;
m_bZQ = TRUE;
m_bSZJS = TRUE;
m_bXHJS = TRUE;
//}}AFX_DATA_INIT
}
void CSelVPipeDlg::DoDataExchange(CDataExchange* pDX)
{
CModelessDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSelVPipeDlg)
DDX_Check(pDX, IDC_CHECK_LAYER, m_bAllLayer);
DDX_Check(pDX, IDC_CHECK_DIM, m_bDim);
DDX_Check(pDX, IDC_CHECK_FL, m_bFL);
DDX_Check(pDX, IDC_CHECK_HL, m_bHL);
DDX_Check(pDX, IDC_CHECK_JL, m_bJL);
DDX_Check(pDX, IDC_CHECK_RHL, m_bRHL);
DDX_Check(pDX, IDC_CHECK_RJL, m_bRJL);
DDX_Check(pDX, IDC_CHECK_WL, m_bWL);
DDX_Check(pDX, IDC_CHECK_XL, m_bXL);
DDX_Check(pDX, IDC_CHECK_YL, m_bYL);
DDX_Check(pDX, IDC_CHECK_ZL, m_bZL);
DDX_Check(pDX, IDC_CHECK_DRINK, m_bDrink);
DDX_Check(pDX, IDC_CHECK_OTHER, m_bOther);
DDX_Check(pDX, IDC_CHECK_PRESSDIRT, m_bPressDirt);
DDX_Check(pDX, IDC_CHECK_PRESSRAIN, m_bPressRain);
DDX_Check(pDX, IDC_CHECK_PRESSUSELESS, m_bPressUseless);
DDX_Check(pDX, IDC_CHECK_COAGULATE, m_bCoagulate);
DDX_Radio(pDX, IDC_RADIO_TYPE1, m_iSel);
DDX_Check(pDX, IDC_CHECK_EQ, m_bEq);
DDX_Check(pDX, IDC_CHECK_HIGH, m_bPlaceHigh);
DDX_Check(pDX, IDC_CHECK_LOW, m_bPlaceLow);
DDX_Check(pDX, IDC_CHECK_MID, m_bPlaceMid);
DDX_Check(pDX, IDC_CHECK_LQ, m_bLQ);
DDX_Check(pDX, IDC_CHECK_QTMH, m_bQTMH);
DDX_Check(pDX, IDC_CHECK_SJ, m_bSJ);
DDX_Check(pDX, IDC_CHECK_TQ, m_bTQ);
DDX_Check(pDX, IDC_CHECK_YL2, m_bYL2);
DDX_Check(pDX, IDC_CHECK_ZQ, m_bZQ);
DDX_Check(pDX, IDC_CHECK_SZJS, m_bSZJS);
DDX_Check(pDX, IDC_CHECK_XHJS, m_bXHJS);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSelVPipeDlg, CModelessDialog)
//{{AFX_MSG_MAP(CSelVPipeDlg)
ON_WM_CLOSE()
ON_BN_CLICKED(IDC_CHECK_LAYER, OnCheckLayer)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BOOL CSelVPipeDlg::OnInitDialog()
{
CModelessDialog::OnInitDialog();
// cet 2011.12.9 add
InitPipeName();
return TRUE;
}
void CSelVPipeDlg::OnClose()
{
CModelessDialog::OnClose();
acedPostCommand(_T("\33\33"));
}
void CSelVPipeDlg::OnCheckLayer()
{
UpdateData(TRUE);
if(m_bAllLayer){
m_bFL = TRUE;
m_bHL = TRUE;
m_bJL = TRUE;
m_bRHL = TRUE;
m_bRJL = TRUE;
m_bWL = TRUE;
m_bXL = TRUE;
m_bYL = TRUE;
m_bZL = TRUE;
m_bDrink = TRUE;
m_bOther = TRUE;
m_bPressDirt = TRUE;
m_bPressRain = TRUE;
m_bPressUseless = TRUE;
m_bCoagulate = TRUE;
// cet 2011.12.9 add
m_bLQ = TRUE;
m_bQTMH = TRUE;
m_bSJ = TRUE;
m_bTQ = TRUE;
m_bYL2 = TRUE;
m_bZQ = TRUE;
m_bSZJS = TRUE;
m_bXHJS = TRUE;
}
else{
m_bFL = FALSE;
m_bHL = FALSE;
m_bJL = FALSE;
m_bRHL = FALSE;
m_bRJL = FALSE;
m_bWL = FALSE;
m_bXL = FALSE;
m_bYL = FALSE;
m_bZL = FALSE;
m_bDrink = FALSE;
m_bOther = FALSE;
m_bPressDirt = FALSE;
m_bPressRain = FALSE;
m_bPressUseless = FALSE;
m_bCoagulate = FALSE;
// cet 2011.12.9 add
m_bLQ = FALSE;
m_bQTMH = FALSE;
m_bSJ = FALSE;
m_bTQ = FALSE;
m_bYL2 = FALSE;
m_bZQ = FALSE;
m_bSZJS = FALSE;
m_bXHJS = FALSE;
}
UpdateData(FALSE);
}
void CSelVPipeDlg::InitPipeName()
{
std::map<CString,CString> mapPipeName;
GetLayerPipeName(mapPipeName);
CWnd *pWnd = GetDlgItem(IDC_CHECK_COAGULATE);
if (pWnd != NULL)
{
pWnd->SetWindowText(mapPipeName[LAY_PIPE_COAGULATE]);
}
pWnd = GetDlgItem(IDC_CHECK_DRINK);
if (pWnd != NULL)
{
pWnd->SetWindowText(mapPipeName[LAY_PIPE_DRINK]);
}
pWnd = GetDlgItem(IDC_CHECK_PRESSDIRT);
if (pWnd != NULL)
{
pWnd->SetWindowText(mapPipeName[LAY_PIPE_PRESSDIRT]);
}
pWnd = GetDlgItem(IDC_CHECK_PRESSUSELESS);
if (pWnd != NULL)
{
pWnd->SetWindowText(mapPipeName[LAY_PIPE_PRESSUSELESS]);
}
pWnd = GetDlgItem(IDC_CHECK_PRESSRAIN);
if (pWnd != NULL)
{
pWnd->SetWindowText(mapPipeName[LAY_PIPE_PRESSRAIN]);
}
pWnd = GetDlgItem(IDC_CHECK_SZJS);
if (pWnd != NULL)
{
pWnd->SetWindowText(mapPipeName[LAY_PIPE_USER1]);
}
pWnd = GetDlgItem(IDC_CHECK_XHJS);
if (pWnd != NULL)
{
pWnd->SetWindowText(mapPipeName[LAY_PIPE_USER2]);
}
pWnd = GetDlgItem(IDC_CHECK_LQ);
if (pWnd != NULL)
{
pWnd->SetWindowText(mapPipeName[LAY_PIPE_USER3]);
}
pWnd = GetDlgItem(IDC_CHECK_QTMH);
if (pWnd != NULL)
{
pWnd->SetWindowText(mapPipeName[LAY_PIPE_USER4]);
}
pWnd = GetDlgItem(IDC_CHECK_ZQ);
if (pWnd != NULL)
{
pWnd->SetWindowText(mapPipeName[LAY_PIPE_USER5]);
}
pWnd = GetDlgItem(IDC_CHECK_YL2);
if (pWnd != NULL)
{
pWnd->SetWindowText(mapPipeName[LAY_PIPE_USER6]);
}
pWnd = GetDlgItem(IDC_CHECK_TQ);
if (pWnd != NULL)
{
pWnd->SetWindowText(mapPipeName[LAY_PIPE_USER7]);
}
pWnd = GetDlgItem(IDC_CHECK_SJ);
if (pWnd != NULL)
{
pWnd->SetWindowText(mapPipeName[LAY_PIPE_USER8]);
}
}