#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(); }