Открытие и Закрытие объекта ObjectARX
Все примеры кода, показанные в этой главе иллюстрируют протокол для открытия и закрытия объектов, который вы будете должны соблюсти всякий раз, когда Вы работаете с объектами резидента-базы. Этот протокол гарантирует, что объекты - физически в памяти, когда к ним должны обращаться.Прежде, чем Вы можете изменять объект, Вы должны открыть его:
acdbOpenObject(pObject, objId, AcDb::kForWrite);
Открытые функции имеют параметр режима, который определяет, открываете ли Вы объект для чтения, записи или уведомления. В то время как объект открыт для записи, Вы можете изменять его. Когда Вы закончите, Вы должны явно закрыть объект как показано в следующем примере, независимо от режима, в котором это было открыто:
pObject->close();
Следующее - типовой код для изменения цвета объекта:
Acad::ErrorStatus
changeColor(AcDbObjectId entId, Adesk::UInt16 newColor)
{
AcDbEntity *pEntity;
acdbOpenObject(pEntity, entId,AcDb::kForWrite);
pEntity->setColorIndex(newColor);
pEntity->close();
return Acad::eOk;
}
ПРЕДУПРЕЖДЕНИЕ! Непосредственно удаление объекта, который был добавлен к базе, заставляет AutoCAD грохаться.