最近更新于 2024-09-04 21:52
在尝试保存 dwg 图纸文件的时候出现:
此图形中的一个或多个对象无法保存为指定格式。操作未完成,因此未创建任何文件。
导致文件没法保存。
这个错误是我在测试自己编写的 ObjectARX 扩展程序时触发的。触发情景:
我这里的目标处理对象是 AcDbDimension 标注对象,在判断对象不是 AcDbDimension 后就执行 continue 跳过本次循环了。触发上面错误的情况就是选择了非标注对象,按照条件此时执行 continue,就结束本轮循环了,然后就遗忘了关闭 pEnt 对象,因此就会出现上面的错误。解决办法就是在 continue 之前,先 pEnt->close() 关闭打开的实体对象。
ads_name ent;
ads_point pt;
AcDbObjectId objId;
AcDbEntity* pEnt = nullptr;
while (true)
{
int ret = acedEntSel(L"选择一个标注对象(按Esc或Enter取消命令):\n", ent, pt);
if (ret != RTNORM)
{
acutPrintf(L"取消命令。\n");
break;
}
if (acdbGetObjectId(objId, ent) != Acad::eOk)
{
acutPrintf(L"获取对象ID失败。\n");
continue;
}
if (acdbOpenObject(pEnt, objId, AcDb::kForWrite) != Acad::eOk)
{
acutPrintf(L"打开对象失败。\n");
continue;
}
if (!pEnt->isKindOf(AcDbDimension::desc()))
{
acutPrintf(L"选择的不是标注对象。\n");
continue;
}
AcDbDimension* pDim = AcDbDimension::cast(pEnt);
pFun(pDim);
pEnt->close();
}
AutoCAD中“此图形中的一个或多个对象无法保存为指定格式”触发条件之一