Files
envi-code/SourceCode/Code2026/tg_shs/inc/geo/TAcDbBlockTableRecPtr.h
T

92 lines
1.9 KiB
C++
Raw Normal View History

2026-09-28 15:28:50 +08:00
//-----------------------------------------------------------------------------+
// Copyright (C), 1998-2007, Beijing Tangent Software Co. Ltd.
// = FileName : TAcDbBlockTableRecPtr.h
// = Version : ver2.0
// = Author : xlc
// = CreateDate : 2002-09-09
// = Description: ÀàµÄÉùÃ÷
// = Maintainers:
//
//-----------------------------------------------------------------------------+
#ifndef _TACDBBLOCKTABLERECPTR_H_
#define _TACDBBLOCKTABLERECPTR_H_
class GEOAPI TAcDbBlockTableRecPtr
{
public:
TAcDbBlockTableRecPtr(const TCHAR *pszBlock = ACDB_MODEL_SPACE,
AcDb::OpenMode opMode = AcDb::kForRead, AcDbDatabase *pDb = NULL);
TAcDbBlockTableRecPtr(const AcDbObjectId &id, AcDb::OpenMode opMode = AcDb::kForRead);
~TAcDbBlockTableRecPtr();
int operator !();
operator AcDbBlockTableRecord & ();
void Close();
public:
AcDbBlockTableRecord *m_pBlockTableRec;
};
inline TAcDbBlockTableRecPtr::TAcDbBlockTableRecPtr(const AcDbObjectId &id, AcDb::OpenMode opMode)
: m_pBlockTableRec(NULL)
{
acdbOpenObject(m_pBlockTableRec, id, opMode);
}
inline TAcDbBlockTableRecPtr::TAcDbBlockTableRecPtr(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 TAcDbBlockTableRecPtr::~TAcDbBlockTableRecPtr()
{
if (m_pBlockTableRec)
{
m_pBlockTableRec->close();
}
}
inline int TAcDbBlockTableRecPtr::operator !()
{
return !m_pBlockTableRec;
}
inline void TAcDbBlockTableRecPtr::Close()
{
if (m_pBlockTableRec)
{
m_pBlockTableRec->close();
}
m_pBlockTableRec = NULL;
}
inline TAcDbBlockTableRecPtr::operator AcDbBlockTableRecord & ()
{
assert(m_pBlockTableRec);
return *m_pBlockTableRec;
}
#endif