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

107 lines
2.3 KiB
C++

#include "stdafx.h"
#include "SelectBlkDlg.h"
#include "coretools.h"
IMPLEMENT_DYNAMIC(CSelectBlkDlg, CDialog)
CSelectBlkDlg::CSelectBlkDlg(LPCTSTR pszDWG
, LPCTSTR pszFilter
, LPCTSTR pszSelItem
, CWnd* pParent)
: CDialog(IDD_SELECT_BLK, pParent)
, m_sDwgPath(pszDWG)
, m_sFilter(pszFilter)
, m_pDb(NULL)
, m_sInitSel(_T(""))
{
m_pDb = new AcDbDatabase(false);
if (m_pDb->readDwgFile(pszDWG, AcDbDatabase::kForReadAndAllShare) == Acad::eOk)
CoreTools::enumBlockByDWG(m_pDb, m_blockNames, m_sFilter, &m_blockIds);
else
DELETE_PTR(m_pDb);
if (pszSelItem)
m_sInitSel = pszSelItem;
}
CSelectBlkDlg::~CSelectBlkDlg() { DELETE_PTR(m_pDb); }
void CSelectBlkDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_LIST1, m_wndListBox);
}
BOOL CSelectBlkDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_wndViewCtrl.SubclassDlgItem(IDC_PREVIEW_PIC, this);
CString str(_T(""));
for (size_t i(0); i < m_blockNames.size(); ++i)
{
m_wndListBox.AddString(m_blockNames[i]);
}
int idx = m_wndListBox.FindString(0, m_sInitSel);
if (idx != -1)
{
m_wndListBox.SetCurSel(idx);
}
else
{
if (!m_blockNames.empty())
m_wndListBox.SetCurSel(0);
}
OnLbnSelchangeList1();
return TRUE;
}
BEGIN_MESSAGE_MAP(CSelectBlkDlg, CDialog)
ON_BN_CLICKED(IDOK, &CSelectBlkDlg::OnBnClickedOk)
ON_LBN_SELCHANGE(IDC_LIST1, &CSelectBlkDlg::OnLbnSelchangeList1)
END_MESSAGE_MAP()
void CSelectBlkDlg::OnBnClickedOk()
{
CDialog::OnOK();
UpdateData(TRUE);
int idx = m_wndListBox.GetCurSel();
if (idx < m_blockNames.size() && idx >= 0)
{
m_sSelectBlkName = m_blockNames[idx];
}
}
void CSelectBlkDlg::OnLbnSelchangeList1()
{
int idx = m_wndListBox.GetCurSel();
if (idx >= m_blockIds.length() && idx < 0) return;
if (!m_blockIds[idx].isValid()) return;
AcDbBlockReference *pRef = new AcDbBlockReference();
pRef->setBlockTableRecord(m_blockIds[idx]);
pRef->setPosition(AcGePoint3d::kOrigin);
pRef->setRotation(0.0);
AcDbExtents ext;
pRef->getGeomExtents(ext);
pRef->setScaleFactors(AcGeScale3d(.8));
m_wndViewCtrl.clearAll();
m_wndViewCtrl.init(true);
m_wndViewCtrl.SetOrbitFlag(OBF_ZOOM);
m_wndViewCtrl.InitFromCurrentView2D(ext, true);
m_wndViewCtrl.Add(pRef);
m_wndViewCtrl.view()->invalidate();
m_wndViewCtrl.Invalidate();
m_wndViewCtrl.RedrawWindow();
}