void ChangeTextInDrawing() {
AcDbDatabase* pDb = acdbHostApplicationServices()->workingDatabase();
AcDbBlockTable* pBlockTable;
pDb->getSymbolTable(pBlockTable, AcDb::kForRead);
AcDbBlockTableRecord* pModelSpace;
pBlockTable->getAt(ACDB_MODEL_SPACE, pModelSpace, AcDb::kForRead);
AcDbObjectIdArray entityIds;
pModelSpace->getIDsOfClass(AcDb::kMText, entityIds);
for (auto& id : entityIds) {
AcDbEntity* pEntity;
pDb->openObject(pEntity, id, AcDb::kForRead);
if (pEntity->isKindOf(AcDbMText::desc())) {
AcDbMText* pText = AcDbMText::cast(pEntity);
const char* text = pText->textString();
if (text) {
std::string newText = std::string(text).replace(0, 5, "NEW"); // 示例:将前5个字符替换为"NEW"
pText->setTextString(newText.c_str());
}
pText->downgradeOpen(); // 降级对象以关闭它,但不保存到数据库中
}
pEntity->close(); // 关闭实体对象
}
pModelSpace->close();
pBlockTable->close();
}