Files
envi-code/SourceCode/Code2026/inc/AdsXRx/XDbObject.h
T
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

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