// 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;iIsVertical()){ 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 &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 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]); } }