本节中显示的所有代码示例都说明了在处理数据库驻留对象时需要遵守的打开和关闭对象的协议。此协议可确保对象在需要访问时物理上位于内存中,但在不需要时可以分页到磁盘。在修改对象之前,需要将其打开,如以下示例所示: acdbOpenObject(pObject, objId, AcDb::kForWrite); 打开函数有一个 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-8 19:19
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.