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

193 lines
3.7 KiB
C++

#include "stdafx.h"
#include "CLJCKDlg.h"
#include "AecDb3dRoadAxisLine.h"
#include "CCableRouting.h"
IMPLEMENT_DYNAMIC(CLJCKDlg, CDialog)
CLJCKDlg::CLJCKDlg(CWnd *pParent /*=NULL*/)
: CDialog(CLJCKDlg::IDD, pParent)
{
m_nPos = 0;
m_bIsVisible = true;
m_pPathSel = NULL;
m_nCur = 1;
m_nCount = 0;
m_dLen = 0;
m_nIDEvent = 0;
}
CLJCKDlg::~CLJCKDlg()
{
}
void CLJCKDlg::DoDataExchange(CDataExchange *pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, m_nCur);
DDX_Text(pDX, IDC_EDIT2, m_nCount);
DDX_Text(pDX, IDC_EDIT3, m_dLen);
}
BEGIN_MESSAGE_MAP(CLJCKDlg, CDialog)
ON_BN_CLICKED(IDOK, &CLJCKDlg::OnBnClickedOk)
ON_BN_CLICKED(IDCANCEL, &CLJCKDlg::OnBnClickedCancel)
ON_WM_TIMER()
ON_WM_DESTROY()
ON_BN_CLICKED(IDC_BUTTON1, &CLJCKDlg::OnBnClickedButton1)
END_MESSAGE_MAP()
void CLJCKDlg::SetarAllPath(AcArray<CableRoutePath *> &ar3dRdAxLinesAll)
{
m_ar3dRdAxLinesAll.append(ar3dRdAxLinesAll);
m_nPos = 0;
m_nCount = m_ar3dRdAxLinesAll.length();
m_nCur = 1;
}
void CLJCKDlg::SetFrAndTo(LPCTSTR pszFrEqu, LPCTSTR pszToEqu)
{
_tcscpy(m_szFrEqu, pszFrEqu);
_tcscpy(m_szToEqu, pszToEqu);
}
BOOL CLJCKDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_nIDEvent = SetTimer(1, 300, NULL);
m_nCur = m_nPos + 1;
if (m_nPos > -1 && m_nPos < m_ar3dRdAxLinesAll.length())
{
CableRoutePath *pPath = m_ar3dRdAxLinesAll.at(m_nPos);
if (pPath != NULL)
{
m_dLen = ((int)(pPath->length() * 100)) / 100.0;
}
}
UpdateData(FALSE);
return TRUE;
}
void CLJCKDlg::OnBnClickedOk()
{
//上次,隐藏当前
ShowPath(false);
m_nPos -= 1;
if (m_nPos < 0) m_nPos = 0;
m_nCur = m_nPos + 1;
if (m_nPos > -1 && m_nPos < m_ar3dRdAxLinesAll.length())
{
CableRoutePath *pPath = m_ar3dRdAxLinesAll.at(m_nPos);
if (pPath != NULL)
{
m_dLen = ((int)(pPath->length() * 100)) / 100.0;
}
}
UpdateData(FALSE);
}
void CLJCKDlg::OnBnClickedCancel()
{
//下次,隐藏当前
ShowPath(false);
m_nPos += 1;
if (m_nPos >= m_ar3dRdAxLinesAll.length())
m_nPos = m_ar3dRdAxLinesAll.length() - 1;
m_nCur = m_nPos + 1;
if (m_nPos > -1 && m_nPos < m_ar3dRdAxLinesAll.length())
{
CableRoutePath *pPath = m_ar3dRdAxLinesAll.at(m_nPos);
if (pPath != NULL)
{
m_dLen = ((int)(pPath->length() * 100)) / 100.0;
}
}
UpdateData(FALSE);
}
void CLJCKDlg::OnTimer(UINT_PTR nIDEvent)
{
ShowPath(m_bIsVisible);
m_bIsVisible = !m_bIsVisible;
CDialog::OnTimer(nIDEvent);
}
void CLJCKDlg::ShowPath(bool bIsShow)
{
if (m_nPos > -1 && m_nPos < m_ar3dRdAxLinesAll.length())
{
AcDbEntity *pEnt = NULL;
CableRoutePath *pPath = m_ar3dRdAxLinesAll.at(m_nPos);
if (pPath != NULL)
{
AcAxDocLock lock;
AcDbObjectId id = pPath->GetRoadAxLineId();
if (!id.isValid())
{
pPath->Add2ModelSpace(m_szFrEqu, m_szToEqu);
id = pPath->GetRoadAxLineId();
if (Acad::eOk == acdbOpenAcDbEntity(pEnt, id, AcDb::kForWrite))
{
pEnt->setVisibility(AcDb::kVisible);
pEnt->close();
}
}
else
{
if (Acad::eOk == acdbOpenAcDbEntity(pEnt, id, AcDb::kForWrite))
{
pEnt->setVisibility(bIsShow ? AcDb::kVisible : AcDb::kInvisible);
pEnt->close();
}
}
acedUpdateDisplay();
actrTransactionManager->flushGraphics();
}
}
}
void CLJCKDlg::OnDestroy()
{
KillTimer(m_nIDEvent);
CDialog::OnDestroy();
//清除所有的AecDb3dRoadAxisLine
AcAxDocLock lock;
for (int i = 0;i < m_ar3dRdAxLinesAll.length();i++)
{
CableRoutePath *pPath = m_ar3dRdAxLinesAll.at(i);
if (pPath != NULL)
{
pPath->EraseRoadAxLine();
}
}
}
void CLJCKDlg::OnBnClickedButton1()
{
if (m_nPos > -1 && m_nPos < m_ar3dRdAxLinesAll.length())
{
m_pPathSel = m_ar3dRdAxLinesAll.at(m_nPos);
m_ar3dRdAxLinesAll.removeAt(m_nPos);
}
EndDialog(IDOK);
}