92 lines
1.9 KiB
C++
92 lines
1.9 KiB
C++
//-----------------------------------------------------------------------------+
|
|||
|
|
// 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
|