打开和关闭 ObjectARX 对象
本节中显示的所有代码示例都说明了用于打开和关闭对象的协议,每当使用驻留在数据库中的对象时,都需要遵守该协议。此协议可确保对象在需要访问时物理位于内存中,但在不需要时可以分页到磁盘。在修改对象之前,您需要打开它,如以下示例所示: acdbOpenObject(pObject, objId, AcDb::kForWrite); open 函数具有一个 mode 参数,该参数指定是打开对象进行读取、写入还是通知。当对象处于打开状态进行写入时,您可以对其进行修改。完成后,必须显式关闭对象,如以下示例所示,而不考虑打开对象的模式: 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; } 对象的新实例被视为开放写入。某些函数(如函数)获取对象 ID 并同时打开该对象。在将对象添加到数据库之前,无法将其关闭。您拥有该对象,并且可以在将对象添加到数据库之前随时自由删除该对象。AcDbBlockTable::getAt() 但是,一旦将对象添加到数据库中,就无法直接将其删除。您可以调用该函数,该函数将对象标记为已擦除。在数据库被销毁之前,已擦除的对象将保留在数据库中,但在保存图形时不会保存。AcDbObject::erase() 危险:
直接删除已添加到数据库的对象将导致 AutoCAD 终止。 父主题: |
|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-1-19 06:39
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.