#include "stdafx.h" #include "AcDbObjectPtr.h" #include "globalfunc.h" #include "DeleteLableDlg.h" #include "DbPipeLabel.h" #include "DbWell.h" #include "Dbpipe.h" #include "layerdef.h" #include "PickEntSet.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif //删除标注命令 void EraseDim() { CTemporaryResourceOverride vTemp; CDeleteLableDlg delLableDlg; if (!IsWindow(delLableDlg.m_hWnd)) delLableDlg.Create(IDD_DELETELABLEDLG,NULL); delLableDlg.ShowWindow(SW_SHOW); RBList rbMask = ads_buildlist( -4, _T(""), // zxl 2013.10.16 modify // -4, _T(""), -4, _T(""), -4, _T(""), -4, _T(""), -4, _T(""), -4, _T(""), -4, _T(""), -4, _T(""), -4, _T(""), -4, _T(""), -4, _T(""), -4, _T(""), -4, _T(""), // zxl 2012.11.06 add 支持双线水管 管径标注的删除 -4, _T("or>"), NULL); PickSet ss(SS_FREE); while(1) { if (GlobalFunc::SelectEntities(_T("\n请选择要删除的标注:<退出>"), ss, rbMask) != RTNORM) break; delLableDlg.UpdateData(); long len = ss.Length(); AcDbObjectId idPipe; CString sPipeText,sPipeR; //判断实体类型删除相应的实体 for(long i=0;iEnableDrawLabel(FALSE); } OPENOBJ_END() } } else if(ent.Is(_T("ATS_DOUBLELINEPIPE"))) // zxl 2012.11.06 add 支持双线水管 管径标注的删除 { if (delLableDlg.m_bPipeRadius) { //OPENOBJ_BEGIN(ent, AcDb::kForWrite, TDbDoubleLinePipe, pPipe) //if(pPipe != NULL) //{ // pPipe->EnableDrawLabel(FALSE); //} //OPENOBJ_END() } } else if (ent.Is(_T("AEC_ZT_PIPETEXT"))) { BOOL bErase = FALSE; OPENOBJ_BEGIN(ent, AcDb::kForWrite, CDbPipeText, pPipeText) if(pPipeText != NULL) { idPipe = pPipeText->GetPipeId(); sPipeText = pPipeText->GetText(); OPENOBJ_BEGIN(idPipe, AcDb::kForRead, CDbPipe, pPipe) if (pPipe != NULL) { sPipeR.Format(_T("%.0f"),pPipe->GetDnDiameter()); if (sPipeText.Find(sPipeR) != -1) { if (delLableDlg.m_bPipeRadius) bErase = TRUE; } else { if (delLableDlg.m_bPipeText) bErase = TRUE; } } OPENOBJ_END() } OPENOBJ_END() if (bErase) ent.Erase(); } else if (ent.Is(_T("ATS_PIPEMULTDIM"))) { if (delLableDlg.m_bPipeRadius) ent.Erase(); } else if (ent.Is(_T("ATS_ARROW"))) { if (delLableDlg.m_bPipeGrade) ent.Erase(); } else if (ent.Is(_T("ATS_ELEVATION"))) { if (delLableDlg.m_bLevelLable) ent.Erase(); } else if (ent.Is(_T("AEC_ZT_WELLDIM"))) { if (delLableDlg.m_bWellBottom) ent.Erase(); } else if (ent.Is(_T("AEC_ZT_PIPELABEL"))) { if (delLableDlg.m_bPipeRadius) ent.Erase(); } else if (ent.Is(_T("ATS_TEXT"))) { if (delLableDlg.m_bPipeLen) ent.Erase(); } else if (ent.Is(_T("TEXT"))) { if (delLableDlg.m_bCaculateLable) ent.Erase(); } else if (ent.Is(_T("ATS_DIMENSION2")) || ent.Is(_T("ATS_DIMENSION")) || ent.Is(_T("DIMENSION"))) { if (delLableDlg.m_bDimensionLable) ent.Erase(); } else if (ent.Is(_T("AEC_ZT_WELL"))) { if (delLableDlg.m_bWellLable) { OPENOBJ_BEGIN(ent, AcDb::kForWrite, AecXDbWell, pWell) if(pWell != NULL) { pWell->EnableDrawLabel(FALSE); } OPENOBJ_END() } } } } delLableDlg.DestroyWindow(); } BOOL CDeleteLableDlg::m_bLevelLable = FALSE; BOOL CDeleteLableDlg::m_bPipeGrade = FALSE; BOOL CDeleteLableDlg::m_bPipeRadius = FALSE; BOOL CDeleteLableDlg::m_bPipeText = FALSE; BOOL CDeleteLableDlg::m_bWellBottom = FALSE; BOOL CDeleteLableDlg::m_bPipeLen = FALSE; BOOL CDeleteLableDlg::m_bCaculateLable = FALSE; BOOL CDeleteLableDlg::m_bDimensionLable = FALSE; BOOL CDeleteLableDlg::m_bWellLable = FALSE; BOOL CDeleteLableDlg::m_bAll = FALSE; CDeleteLableDlg::CDeleteLableDlg(CWnd* pParent /*=NULL*/) : CDialog(CDeleteLableDlg::IDD, pParent) { //{{AFX_DATA_INIT(CDeleteLableDlg) //}}AFX_DATA_INIT } void CDeleteLableDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CDeleteLableDlg) DDX_Check(pDX, IDC_CHECKLEVELLABLE, m_bLevelLable); DDX_Check(pDX, IDC_CHECKPIPEGRADE, m_bPipeGrade); DDX_Check(pDX, IDC_CHECKPIPERADIUS, m_bPipeRadius); DDX_Check(pDX, IDC_CHECKPIPETEXT, m_bPipeText); DDX_Check(pDX, IDC_CHECKWELLBOTTOM, m_bWellBottom); DDX_Check(pDX, IDC_CHECKPIPELEN, m_bPipeLen); DDX_Check(pDX, IDC_CHECKCACULATE, m_bCaculateLable); DDX_Check(pDX, IDC_CHECKDIMENSION, m_bDimensionLable); DDX_Check(pDX, IDC_CHECKWELL, m_bWellLable); DDX_Check(pDX, IDC_CHECK_ALL, m_bAll); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CDeleteLableDlg, CDialog) //{{AFX_MSG_MAP(CDeleteLableDlg) ON_WM_CLOSE() ON_BN_CLICKED(IDC_CHECK_ALL, OnCheckAll) //}}AFX_MSG_MAP ON_MESSAGE(WM_ACAD_KEEPFOCUS, onAcadKeepFocus) END_MESSAGE_MAP() LONG_PTR CDeleteLableDlg::onAcadKeepFocus(UINT_PTR, LONG_PTR) { CPoint pt; GetCursorPos(&pt); CRect rc; GetWindowRect(&rc); return (rc.PtInRect(pt) ? TRUE : FALSE); } void CDeleteLableDlg::OnOK() { m_bLevelLable = TRUE; m_bPipeGrade = TRUE; m_bPipeRadius = TRUE; m_bPipeText = TRUE; m_bWellBottom = TRUE; m_bPipeLen = TRUE; m_bCaculateLable = TRUE; m_bDimensionLable = TRUE; m_bWellLable = TRUE; UpdateData(FALSE); } void CDeleteLableDlg::OnClose() { CDialog::OnClose(); acedPostCommand(_T("\33\33")); } void CDeleteLableDlg::OnCheckAll() { UpdateData(); if(m_bAll) { m_bLevelLable = TRUE; m_bPipeGrade = TRUE; m_bPipeRadius = TRUE; m_bPipeText = TRUE; m_bWellBottom = TRUE; m_bPipeLen = TRUE; m_bCaculateLable = TRUE; m_bDimensionLable = TRUE; m_bWellLable = TRUE; } else { m_bLevelLable = FALSE; m_bPipeGrade = FALSE; m_bPipeRadius = FALSE; m_bPipeText = FALSE; m_bWellBottom = FALSE; m_bPipeLen = FALSE; m_bCaculateLable = FALSE; m_bDimensionLable = FALSE; m_bWellLable = FALSE; } UpdateData(FALSE); }