Files
envi-code/SourceCode/Code2026/Dimension/SHAcDbBlockTableRecPtr.h
T
2026-09-28 15:28:50 +08:00

79 lines
1.5 KiB
C++

#pragma once
class SHAcDbBlockTableRecPtr
{
public:
SHAcDbBlockTableRecPtr(const TCHAR *pszBlock = ACDB_MODEL_SPACE,
AcDb::OpenMode opMode = AcDb::kForRead, AcDbDatabase *pDb = NULL);
SHAcDbBlockTableRecPtr(const AcDbObjectId &id, AcDb::OpenMode opMode = AcDb::kForRead);
~SHAcDbBlockTableRecPtr();
int operator !();
operator AcDbBlockTableRecord & ();
void Close();
public:
AcDbBlockTableRecord *m_pBlockTableRec;
};
inline SHAcDbBlockTableRecPtr::SHAcDbBlockTableRecPtr(const AcDbObjectId &id, AcDb::OpenMode opMode)
: m_pBlockTableRec(NULL)
{
acdbOpenObject(m_pBlockTableRec, id, opMode);
}
inline SHAcDbBlockTableRecPtr::SHAcDbBlockTableRecPtr(const TCHAR *pszBlock, AcDb::OpenMode opMode,
AcDbDatabase *pDb)
: m_pBlockTableRec(NULL)
{
if (!pDb)
{
pDb = acdbCurDwg();
}
AcDbBlockTable *pBlockTable;
Acad::ErrorStatus es = pDb->getBlockTable(pBlockTable, AcDb::kForRead);
if (es != Acad::eOk)
{
return;
}
es = pBlockTable->getAt(pszBlock, m_pBlockTableRec, opMode);
pBlockTable->close();
}
inline SHAcDbBlockTableRecPtr::~SHAcDbBlockTableRecPtr()
{
if (m_pBlockTableRec)
{
m_pBlockTableRec->close();
}
}
inline int SHAcDbBlockTableRecPtr::operator !()
{
return !m_pBlockTableRec;
}
inline void SHAcDbBlockTableRecPtr::Close()
{
if (m_pBlockTableRec)
{
m_pBlockTableRec->close();
}
m_pBlockTableRec = NULL;
}
inline SHAcDbBlockTableRecPtr::operator AcDbBlockTableRecord & ()
{
assert(m_pBlockTableRec);
return *m_pBlockTableRec;
}