101 lines
1.9 KiB
C++
101 lines
1.9 KiB
C++
//-----------------------------------------------------------------------------+
|
|
// Copyright (C), 1998-2007, SH Software Co. Ltd.
|
|
// = FileName : XDbObject.h
|
|
// = Version : ver2.0
|
|
// = Author : zjq
|
|
// = CreateDate : 2002-09-09
|
|
// = Description: 类的声明
|
|
// = Maintainers:
|
|
//
|
|
//-----------------------------------------------------------------------------+
|
|
#ifndef _XDbObject_H_
|
|
#define _XDbObject_H_
|
|
|
|
class GEOAPI XDbObject
|
|
{
|
|
public:
|
|
|
|
XDbObject(const ads_name ent, AcDb::OpenMode mode, Adesk::Boolean bOpErased = Adesk::kFalse);
|
|
|
|
XDbObject(AcDbObjectId nId, AcDb::OpenMode mode, Adesk::Boolean bOpErased = Adesk::kFalse);
|
|
|
|
XDbObject(AcDbObject *pObj);
|
|
|
|
~XDbObject();
|
|
|
|
operator AcDbObject & ();
|
|
|
|
operator AcDbEntity & ();
|
|
|
|
bool operator !();
|
|
|
|
void Close();
|
|
|
|
public:
|
|
|
|
AcDbObject *m_pObject;
|
|
};
|
|
|
|
|
|
inline XDbObject::XDbObject(const ads_name ent, AcDb::OpenMode mode, Adesk::Boolean bOpErased)
|
|
: m_pObject(NULL)
|
|
{
|
|
AcDbObjectId nId;
|
|
if (acdbGetObjectId(nId, (LONG_PTR *)ent) == Acad::eOk)
|
|
{
|
|
bool bVal = bOpErased ? true : false;
|
|
acdbOpenObject(m_pObject, nId, mode, bVal);
|
|
}
|
|
}
|
|
|
|
inline XDbObject::XDbObject(AcDbObjectId nId, AcDb::OpenMode mode, Adesk::Boolean bOpErased)
|
|
: m_pObject(NULL)
|
|
{
|
|
bool bVal = bOpErased ? true : false;
|
|
acdbOpenObject(m_pObject, nId, mode, bVal);
|
|
}
|
|
|
|
inline XDbObject::XDbObject(AcDbObject *pObj)
|
|
: m_pObject(pObj)
|
|
{
|
|
|
|
}
|
|
|
|
inline XDbObject::~XDbObject()
|
|
{
|
|
if (m_pObject)
|
|
{
|
|
m_pObject->close();
|
|
}
|
|
}
|
|
|
|
inline XDbObject::operator AcDbObject &()
|
|
{
|
|
assert(m_pObject);
|
|
|
|
return *m_pObject;
|
|
}
|
|
|
|
inline XDbObject::operator AcDbEntity & ()
|
|
{
|
|
assert(m_pObject && m_pObject->isKindOf(AcDbEntity::desc()));
|
|
|
|
return *(AcDbEntity *)m_pObject;
|
|
}
|
|
|
|
inline bool XDbObject::operator !()
|
|
{
|
|
return (m_pObject == NULL) ? true : false;
|
|
}
|
|
|
|
inline void XDbObject::Close()
|
|
{
|
|
if (m_pObject)
|
|
{
|
|
m_pObject->close();
|
|
}
|
|
|
|
m_pObject = NULL;
|
|
}
|
|
#endif
|