#include "stdafx.h" #include "KTBlkRecsView.h" #include "KTSetting.h" #include "CHPMCDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif #define WM_VIEWDBLCLKSEL (WM_USER + 0x1200) #define WM_TRUERELOAD (WM_USER + 0x1201) #define WM_ONITEMSEL (WM_USER + 0x1202) extern CAcExtensionModule Pool3dCmdDll; CHPMCDlg::CHPMCDlg(CWnd* pParent /*=NULL*/) : CDialog(IDD_HPMC_DLG, pParent) { m_sRecName2D = _T(""); m_sDwgFile = _T(""); } CHPMCDlg::~CHPMCDlg() { } void CHPMCDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_LIST1, m_wndNameList); } BEGIN_MESSAGE_MAP(CHPMCDlg, CDialog) ON_MESSAGE(WM_ONITEMSEL, OnViewItemSel) ON_BN_CLICKED(IDOK, &CHPMCDlg::OnBnClickedOk) END_MESSAGE_MAP() void CHPMCDlg::SetDwgFile2PreviewRecs(LPCTSTR pszDwgFile) { m_sDwgFile = pszDwgFile; } BOOL CHPMCDlg::OnInitDialog() { CDialog::OnInitDialog(); CRect rc; GetDlgItem(IDC_STATICVIEW)->GetWindowRect(rc); GetDlgItem(IDC_STATICVIEW)->ShowWindow(SW_HIDE); ScreenToClient(rc); m_wndPreview.Create(rc, this, IDC_STATICVIEW); m_wndPreview.Init(Pool3dCmdDll.ModuleResourceInstance(), 3, 5, 0, NULL, false); if (!m_sDwgFile.IsEmpty()) ShowBlockRecords(); return TRUE; } void CHPMCDlg::ShowBlockRecords() { CString sName; CStringArray arRecNames; AcDbDatabase db(false); Acad::ErrorStatus es = db.readDwgFile(m_sDwgFile); if (es == Acad::eOk) { AcDbBlockTable* pTbl = NULL; if (Acad::eOk == db.getBlockTable(pTbl, AcDb::kForRead)) { AcDbBlockTableIterator* pIt = NULL; pTbl->newIterator(pIt); if (pIt != NULL) { for (pIt->start();!pIt->done();pIt->step()) { AcDbBlockTableRecord* pRec = NULL; if (Acad::eOk == pIt->getRecord(pRec, AcDb::kForRead)) { LPCTSTR pszName = NULL; pRec->getName(pszName); sName = pszName; if (sName.Find(_T("MODEL")) != -1 || sName.Find(_T("PAPER")) != -1) { } else { arRecNames.Add(pszName); m_wndNameList.AddString(pszName); } pRec->close(); } } delete pIt; } pTbl->close(); } } for (int i = 0;i getSymbolTable(pBT, AcDb::kForRead); if (pBT == NULL) { return idBlock2d; } if (Acad::eOk == pBT->getAt(sBlockName2d, idBlock2d)) { pBT->close(); return idBlock2d; } else { pBT->close(); } //加载 CString sDwgFile = _T(""); KTSetting::GetKTPsPath(sDwgFile); sDwgFile += _T("Support\\Cells\\剖面门窗.dwg"); AcDbDatabase *pDb = new AcDbDatabase(false); ASSERT(pDB != NULL); if (pDb->readDwgFile(sDwgFile, AcDbDatabase::kForReadAndAllShare) != Acad::eOk) { delete pDb; return idBlock2d; } pDb->getSymbolTable(pBT, AcDb::kForRead); if (pBT == NULL) { delete pDb; return idBlock2d; } AcDbObjectId idBlock; pBT->getAt(sBlockName2d, idBlock); pBT->close(); AcDbDatabase *pTempDb = NULL; pDb->wblock(pTempDb, idBlock); delete pDb; if (pTempDb == NULL) return FALSE; AcDbDatabase *pWorkDb = acdbHostApplicationServices()->workingDatabase(); if (pWorkDb->insert(idBlock2d, sBlockName2d, pTempDb) != Acad::eOk) { delete pTempDb; return idBlock2d; } delete pTempDb; return idBlock2d; }