2026-10-04 00:04:20 +08:00
|
|
|
#pragma once
|
2026-09-28 15:28:50 +08:00
|
|
|
|
|
|
|
|
class AcDbObjectPtr
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
AcDbObject *m_pObject;
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
AcDbObjectPtr(const ads_name ent
|
|
|
|
|
, AcDb::OpenMode mode
|
|
|
|
|
, Adesk::Boolean bOpErased = Adesk::kFalse)
|
|
|
|
|
: m_pObject(NULL)
|
|
|
|
|
{
|
|
|
|
|
AcDbObjectId nId;
|
|
|
|
|
if (acdbGetObjectId(nId, (TLong_ptr *)ent) == Acad::eOk)
|
|
|
|
|
{
|
|
|
|
|
bool bVal = bOpErased ? true : false;
|
|
|
|
|
acdbOpenObject(m_pObject, nId, mode, bVal);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
AcDbObjectPtr(AcDbObjectId nId
|
|
|
|
|
, AcDb::OpenMode mode
|
|
|
|
|
, Adesk::Boolean bOpErased = Adesk::kFalse)
|
|
|
|
|
: m_pObject(NULL)
|
|
|
|
|
{
|
|
|
|
|
bool bVal = bOpErased ? true : false;
|
|
|
|
|
acdbOpenObject(m_pObject, nId, mode, bVal);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
AcDbObjectPtr(AcDbObject *pObj) : m_pObject(pObj) { }
|
|
|
|
|
|
|
|
|
|
~AcDbObjectPtr()
|
|
|
|
|
{
|
|
|
|
|
if (m_pObject)
|
|
|
|
|
{
|
|
|
|
|
m_pObject->close();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
operator AcDbObject &()
|
|
|
|
|
{
|
|
|
|
|
assert(m_pObject);
|
|
|
|
|
|
|
|
|
|
return *m_pObject;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
operator AcDbEntity & ()
|
|
|
|
|
{
|
|
|
|
|
assert(m_pObject && m_pObject->isKindOf(AcDbEntity::desc()));
|
|
|
|
|
|
|
|
|
|
return *(AcDbEntity *)m_pObject;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool operator !()
|
|
|
|
|
{
|
|
|
|
|
return (m_pObject == NULL) ? true : false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Close()
|
|
|
|
|
{
|
|
|
|
|
if (m_pObject)
|
|
|
|
|
{
|
|
|
|
|
m_pObject->close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
m_pObject = NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
};
|