271 lines
6.8 KiB
C++
271 lines
6.8 KiB
C++
#include "stdafx.h"
|
|
#include "shs_outdoor.h"
|
|
#include "DeleteLableDlg.h"
|
|
#include "DbPipeLabel.h"
|
|
#include "DbWell.h"
|
|
#include "DbDoubleLinePipe.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("ATS_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("ATS_WELLDIM"), -4, _T("and>"),
|
|
-4, _T("<and"), RTDXF0, _T("ATS_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("ATS_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("ATS_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 (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("ATS_PIPE")))
|
|
{
|
|
if (delLableDlg.m_bPipeRadius)
|
|
{
|
|
OPENOBJ_BEGIN(ent, AcDb::kForWrite, TDbPipe, 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("ATS_PIPETEXT")))
|
|
{
|
|
BOOL bErase = FALSE;
|
|
OPENOBJ_BEGIN(ent, AcDb::kForWrite, TDbPipeText, pPipeText)
|
|
if(pPipeText != NULL)
|
|
{
|
|
idPipe = pPipeText->GetPipeId();
|
|
sPipeText = pPipeText->GetText();
|
|
OPENOBJ_BEGIN(idPipe, AcDb::kForRead, TDbPipe, 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("ATS_WELLDIM")))
|
|
{
|
|
if (delLableDlg.m_bWellBottom)
|
|
ent.Erase();
|
|
}
|
|
else if (ent.Is(_T("ATS_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("ATS_WELL")))
|
|
{
|
|
if (delLableDlg.m_bWellLable)
|
|
{
|
|
OPENOBJ_BEGIN(ent, AcDb::kForWrite, TDbWell, 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);
|
|
}
|