122 lines
2.3 KiB
C++
122 lines
2.3 KiB
C++
#include "stdafx.h"
|
|
#include "resource.h"
|
|
#include "CXLFSJDDlg.h"
|
|
#include "EarThwormDef.h"
|
|
|
|
|
|
// CXLFSJDDlg dialog
|
|
|
|
IMPLEMENT_DYNAMIC(CXLFSJDDlg, CDialog)
|
|
|
|
CXLFSJDDlg::CXLFSJDDlg(CWnd* pParent /*=nullptr*/)
|
|
: CDialog(IDD_XLFS_JD_DLG, pParent)
|
|
, m_bFree(false)
|
|
{
|
|
|
|
}
|
|
|
|
CXLFSJDDlg::~CXLFSJDDlg()
|
|
{
|
|
}
|
|
|
|
void CXLFSJDDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CXLFSJDDlg, CDialog)
|
|
ON_BN_CLICKED(IDC_BUTTON1, &CXLFSJDDlg::OnBnClickedButton1)
|
|
ON_BN_CLICKED(IDC_BUTTON4, &CXLFSJDDlg::OnBnClickedButton4)
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
// CXLFSJDDlg message handlers
|
|
|
|
|
|
void CXLFSJDDlg::OnBnClickedButton1()
|
|
{
|
|
EnableWindow(FALSE);
|
|
ShowWindow(SW_HIDE);
|
|
CWnd* pFrame = acedGetAcadFrame();
|
|
pFrame->EnableWindow(TRUE);
|
|
pFrame->SetFocus();
|
|
|
|
bool bSucess(true);
|
|
|
|
m_arPtsPath.removeAll();
|
|
AcAxDocLock lock;
|
|
ads_point pt;
|
|
ads_name ent;
|
|
int nRes = acedEntSel(_T("\n请选择路径pline或3dpline线:"), ent, pt);
|
|
if (nRes == RTNORM)
|
|
{
|
|
AcDbObjectId id;
|
|
acdbGetObjectId(id, ent);
|
|
|
|
CString sText;
|
|
AcDbEntity* pEnt = NULL;
|
|
if (Acad::eOk == acdbOpenAcDbEntity(pEnt, id, AcDb::kForRead))
|
|
{
|
|
AcDbPolyline* pPl = AcDbPolyline::cast(pEnt);
|
|
AcDb3dPolyline* pPl3d = AcDb3dPolyline::cast(pEnt);
|
|
AcGePoint3d ptGe;
|
|
|
|
if (pPl != NULL)
|
|
{
|
|
int nNum = pPl->numVerts();
|
|
for (int i = 0; i < nNum; i++)
|
|
{
|
|
pPl->getPointAt(i, ptGe);
|
|
m_arPtsPath.append(ptGe);
|
|
}
|
|
}
|
|
else if (pPl3d != NULL)
|
|
{
|
|
AcDbObjectIterator* pIt = pPl3d->vertexIterator();
|
|
if (pIt != NULL)
|
|
{
|
|
int nFoundAt = -1;
|
|
for (pIt->start(); !pIt->done(); pIt->step())
|
|
{
|
|
AcDb3dPolylineVertex* pVertx = NULL;
|
|
if (Acad::eOk == pPl3d->openVertex(pVertx, pIt->objectId(), AcDb::kForRead))
|
|
{
|
|
ptGe = pVertx->position();
|
|
if (!m_arPtsPath.find(ptGe, nFoundAt))
|
|
{
|
|
m_arPtsPath.append(ptGe);
|
|
}
|
|
pVertx->close();
|
|
}
|
|
}
|
|
DELETE_PTR(pIt);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
acutPrintf(_T("\n选择的曲线不是pline或3dpline线!"));
|
|
bSucess = false;
|
|
}
|
|
pEnt->close();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
bSucess = false;
|
|
}
|
|
pFrame->EnableWindow(FALSE);
|
|
m_bFree = true;
|
|
if (bSucess)
|
|
CDialog::OnOK();
|
|
else
|
|
CDialog::OnCancel();
|
|
}
|
|
|
|
|
|
void CXLFSJDDlg::OnBnClickedButton4()
|
|
{
|
|
m_bFree = false;
|
|
CDialog::OnOK();
|
|
}
|