193 lines
3.6 KiB
C++
193 lines
3.6 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);
|
|
}
|