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

274 lines
6.9 KiB
C++

#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("<or"),
-4, _T("<and"), RTDXF0, _T("AEC_ZT_PIPE"), -4, _T("and>"),
// zxl 2013.10.16 modify
// -4, _T("<and"), RTDXF0, _T("TEXT"), 8, _T("CALC_TEXT"), -4, _T("and>"),
-4, _T("<and"), RTDXF0, _T("TEXT"), 8, LAY_CALC_TEXT, -4, _T("and>"),
-4, _T("<and"), RTDXF0, _T("ATS_TEXT"), 8, _T("TEXT_*"), -4, _T("and>"),
-4, _T("<and"), RTDXF0, _T("AEC_ZT_WELLDIM"), -4, _T("and>"),
-4, _T("<and"), RTDXF0, _T("AEC_ZT_PIPELABEL"), 8, LAY_DIM_TEXT, -4, _T("and>"),
-4, _T("<and"), RTDXF0, _T("ATS_DIMENSION2,DIMENSION,ATS_DIMENSION"), -4, _T("and>"),
-4, _T("<and"), RTDXF0, _T("AEC_ZT_PIPETEXT"), -4, _T("and>"),
-4, _T("<and"), RTDXF0, _T("ATS_DRAWINGINDEX"), -4, _T("and>"),
-4, _T("<and"), RTDXF0, _T("ATS_ARROW"), -4, _T("and>"),
-4, _T("<and"), RTDXF0, _T("ATS_PIPEMULTDIM"), 8, _T("PIPE_DIM"), -4, _T("and>"),
-4, _T("<and"), RTDXF0, _T("ATS_ELEVATION"), 8, _T("TWT_ELEV"), -4, _T("and>"),
-4, _T("<and"), RTDXF0, _T("AEC_ZT_WELL"), -4, _T("and>"),
-4, _T("<and"), RTDXF0, _T("ATS_DOUBLELINEPIPE"), -4, _T("and>"), // 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;i<len;i++)
{
Entity ent = ss[i];
if(ent.Is(_T("AEC_ZT_PIPE")))
{
if (delLableDlg.m_bPipeRadius)
{
OPENOBJ_BEGIN(ent, AcDb::kForWrite, CDbPipe, pPipe)
if(pPipe != NULL)
{
pPipe->EnableDrawLabel(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);
}