Files
envi-code/SourceCode/Code2026/EarthWormCmd/CXLFSJDDlg.cpp
T
2026-09-28 15:28:50 +08:00

122 lines
4.7 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();
}