280 lines
6.1 KiB
C++
280 lines
6.1 KiB
C++
|
|
#include "stdafx.h"
|
|
#include "CDLCKDLG.h"
|
|
#include "earthwormdef.h"
|
|
#include "AecDbObjXDataMap.h"
|
|
|
|
IMPLEMENT_DYNAMIC(CDLCKDLG, CDialog)
|
|
|
|
CDLCKDLG::CDLCKDLG(CWnd* pParent /*=NULL*/)
|
|
: CDialog(IDD_DLCK_DLG, pParent)
|
|
{
|
|
}
|
|
|
|
CDLCKDLG::~CDLCKDLG()
|
|
{
|
|
}
|
|
|
|
void CDLCKDLG::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
DDX_Control(pDX, IDC_LIST1, m_wndListCables);
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CDLCKDLG, CDialog)
|
|
ON_MESSAGE(WM_ACAD_KEEPFOCUS, &CDLCKDLG::onAcadKeepFocus)
|
|
ON_BN_CLICKED(IDOK, &CDLCKDLG::OnBnClickedOk)
|
|
ON_BN_CLICKED(IDCANCEL, &CDLCKDLG::OnBnClickedCancel)
|
|
ON_BN_CLICKED(IDC_BUTTON1, &CDLCKDLG::OnBnClickedButton1)
|
|
ON_BN_CLICKED(IDC_BUTTON2, &CDLCKDLG::OnBnClickedButton2)
|
|
ON_WM_CLOSE()
|
|
END_MESSAGE_MAP()
|
|
|
|
LONG_PTR CDLCKDLG::onAcadKeepFocus(UINT_PTR, LONG_PTR)
|
|
{
|
|
POINT pt;
|
|
::GetCursorPos(&pt);
|
|
CRect rect;
|
|
GetWindowRect(&rect);
|
|
if (!(rect.PtInRect(pt)))
|
|
{
|
|
return FALSE;
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
BOOL CDLCKDLG::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
CBitmap bmp;
|
|
if (!bmp.LoadBitmap(IDB_BITMAPI))
|
|
{
|
|
AfxMessageBox(_T("Can't load bitmap: %x\n"), IDB_BITMAPI);
|
|
ASSERT(FALSE);
|
|
return FALSE;
|
|
}
|
|
|
|
BITMAP bmpObj;
|
|
bmp.GetBitmap(&bmpObj);
|
|
|
|
UINT nFlags = ILC_COLOR24 | ILC_MASK;
|
|
|
|
m_imageList.Create(16, bmpObj.bmHeight, nFlags, 0, 0);
|
|
m_imageList.Add(&bmp, RGB(255, 0, 0));
|
|
|
|
m_wndListCables.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_SINGLEROW);
|
|
m_wndListCables.SetImageList(&m_imageList, LVSIL_SMALL);
|
|
|
|
m_wndListCables.InsertColumn(0, _T("序号"), LVCFMT_LEFT, 120, 120);
|
|
m_wndListCables.InsertColumn(1, _T("电缆规格"), LVCFMT_LEFT, 140, 120);
|
|
m_wndListCables.InsertColumn(2, _T("截面"), LVCFMT_LEFT, 120, 120);
|
|
m_wndListCables.InsertColumn(3, _T("外径"), LVCFMT_LEFT, 120, 120);
|
|
m_wndListCables.InsertColumn(4, _T("系统"), LVCFMT_LEFT, 160, 120);
|
|
m_wndListCables.InsertColumn(5, _T("句柄"), LVCFMT_LEFT, 120, 120);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CDLCKDLG::ShowAllCables()
|
|
{
|
|
m_wndListCables.DeleteAllItems();
|
|
struct resbuf *pRb = acutBuildList(RTDXF0, _T("AEC_ROADAXISLINE"), 0);
|
|
|
|
ads_name ss, ent;
|
|
int nRes = acedSSGet(_T("X"), NULL, NULL, pRb, ss);
|
|
acutRelRb(pRb);
|
|
|
|
Adesk::Int32 nLen = 0;
|
|
if (nRes == RTNORM)
|
|
{
|
|
acedSSLength(ss, &nLen);
|
|
|
|
AcAxDocLock lock;
|
|
TCHAR szHd[17];
|
|
AcDbObjectId id;
|
|
AecDbObjXDataMap xData;
|
|
CString sNo, sTemp;
|
|
int nNo = 1, nItem = -1;
|
|
for (int i = 0; i < nLen; i++)
|
|
{
|
|
acedSSName(ss, i, ent);
|
|
acdbGetObjectId(id, ent);
|
|
|
|
//确认时电缆路径
|
|
xData.Empty();
|
|
if (xData.Read(id, KEY_APP))
|
|
{
|
|
/*
|
|
* m_wndListCables.InsertColumn(0, _T("序号"), LVCFMT_LEFT, 120, 120);
|
|
m_wndListCables.InsertColumn(1, _T("电缆规格"), LVCFMT_LEFT, 140, 120);
|
|
m_wndListCables.InsertColumn(2, _T("截面"), LVCFMT_LEFT, 120, 120);
|
|
m_wndListCables.InsertColumn(3, _T("外径"), LVCFMT_LEFT, 120, 120);
|
|
m_wndListCables.InsertColumn(4, _T("系统"), LVCFMT_LEFT, 160, 120);
|
|
m_wndListCables.InsertColumn(5, _T("句柄"), LVCFMT_LEFT, 120, 120);
|
|
*/
|
|
sNo.Format(_T("%d"),nNo);
|
|
nItem = m_wndListCables.InsertItem(nNo, sNo, 0);
|
|
|
|
sTemp = _T("");
|
|
xData.GetAt(KEY_SPEC, sTemp);
|
|
m_wndListCables.SetItemText(nItem, 1, sTemp);
|
|
|
|
sTemp = _T("");
|
|
xData.GetAt(KEY_SECNAME, sTemp);
|
|
m_wndListCables.SetItemText(nItem, 2, sTemp);
|
|
|
|
sTemp = _T("");
|
|
xData.GetAt(PIPE_OD, sTemp);
|
|
m_wndListCables.SetItemText(nItem, 3, sTemp);
|
|
|
|
sTemp = _T("");
|
|
xData.GetAt(KEY_SYS, sTemp);
|
|
m_wndListCables.SetItemText(nItem, 4, sTemp);
|
|
|
|
id.handle().getIntoAsciiBuffer(szHd);
|
|
m_wndListCables.SetItemText(nItem, 5, szHd);
|
|
|
|
nNo += 1;
|
|
}
|
|
}
|
|
acedSSFree(ss);
|
|
}
|
|
}
|
|
|
|
void CDLCKDLG::OnBnClickedOk()
|
|
{
|
|
AcDbObjectId id;
|
|
CString sHd;
|
|
POSITION ps = m_wndListCables.GetFirstSelectedItemPosition();
|
|
if (ps != NULL)
|
|
{
|
|
AcAxDocLock lock;
|
|
|
|
int nItem = m_wndListCables.GetNextSelectedItem(ps);
|
|
if (nItem != -1)
|
|
{
|
|
sHd = m_wndListCables.GetItemText(nItem, 5);
|
|
|
|
AcDbHandle hd(sHd);
|
|
if (Acad::eOk == acdbCurDwg()->getAcDbObjectId(id, false, hd))
|
|
{
|
|
AcDbEntity *pEnt = NULL;
|
|
if (Acad::eOk == acdbOpenAcDbEntity(pEnt, id, AcDb::kForWrite))
|
|
{
|
|
pEnt->setVisibility(AcDb::kVisible);
|
|
pEnt->close();
|
|
}
|
|
}
|
|
}
|
|
|
|
//其他全部隐藏
|
|
for (int i = 0; i < m_wndListCables.GetItemCount(); i++)
|
|
{
|
|
if (i == nItem)
|
|
continue;
|
|
|
|
sHd = m_wndListCables.GetItemText(i, 5);
|
|
|
|
AcDbHandle hd(sHd);
|
|
if (Acad::eOk == acdbCurDwg()->getAcDbObjectId(id, false, hd))
|
|
{
|
|
AcAxDocLock lock;
|
|
|
|
AcDbEntity *pEnt = NULL;
|
|
if (Acad::eOk == acdbOpenAcDbEntity(pEnt, id, AcDb::kForWrite))
|
|
{
|
|
pEnt->setVisibility(AcDb::kInvisible);
|
|
pEnt->close();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CDLCKDLG::OnBnClickedCancel()
|
|
{
|
|
CString sHd;
|
|
POSITION ps = m_wndListCables.GetFirstSelectedItemPosition();
|
|
if (ps != NULL)
|
|
{
|
|
int nItem = m_wndListCables.GetNextSelectedItem(ps);
|
|
if (nItem != -1)
|
|
{
|
|
sHd = m_wndListCables.GetItemText(nItem, 5);
|
|
|
|
AcDbObjectId id;
|
|
AcDbHandle hd(sHd);
|
|
if (Acad::eOk == acdbCurDwg()->getAcDbObjectId(id, false, hd))
|
|
{
|
|
AcAxDocLock lock;
|
|
|
|
AcDbEntity *pEnt = NULL;
|
|
if (Acad::eOk == acdbOpenAcDbEntity(pEnt, id, AcDb::kForWrite))
|
|
{
|
|
pEnt->setVisibility(AcDb::kInvisible);
|
|
pEnt->close();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//全显
|
|
void CDLCKDLG::OnBnClickedButton1()
|
|
{
|
|
CString sHd;
|
|
AcDbObjectId id;
|
|
AcAxDocLock lock;
|
|
|
|
for (int i = 0;i < m_wndListCables.GetItemCount();i++)
|
|
{
|
|
sHd = m_wndListCables.GetItemText(i, 5);
|
|
|
|
AcDbHandle hd(sHd);
|
|
if (Acad::eOk == acdbCurDwg()->getAcDbObjectId(id, false, hd))
|
|
{
|
|
AcAxDocLock lock;
|
|
|
|
AcDbEntity *pEnt = NULL;
|
|
if (Acad::eOk == acdbOpenAcDbEntity(pEnt, id, AcDb::kForWrite))
|
|
{
|
|
pEnt->setVisibility(AcDb::kInvisible);
|
|
pEnt->close();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//全隐
|
|
void CDLCKDLG::OnBnClickedButton2()
|
|
{
|
|
CString sHd;
|
|
AcDbObjectId id;
|
|
AcAxDocLock lock;
|
|
|
|
for (int i = 0; i < m_wndListCables.GetItemCount(); i++)
|
|
{
|
|
sHd = m_wndListCables.GetItemText(i, 5);
|
|
|
|
AcDbHandle hd(sHd);
|
|
if (Acad::eOk == acdbCurDwg()->getAcDbObjectId(id, false, hd))
|
|
{
|
|
AcAxDocLock lock;
|
|
|
|
AcDbEntity *pEnt = NULL;
|
|
if (Acad::eOk == acdbOpenAcDbEntity(pEnt, id, AcDb::kForWrite))
|
|
{
|
|
pEnt->setVisibility(AcDb::kVisible);
|
|
pEnt->close();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
void CDLCKDLG::OnClose()
|
|
{
|
|
ShowWindow(SW_HIDE);
|
|
}
|