Files
envi-code/SourceCode/Code2026/ElecCmd/CDLCKDLG.cpp
T
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

280 lines
6.2 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);
}