[求助]求助:创建实体添加到图纸中异常问题。
可以肯定下面代码是能正常运行的,因为在另一个程序运行过,但是建一个Dialog添加按扭事件,把下面代码粘进去运行就出现未处理的异常,而且应该是
pBlockTableRecord->appendAcDbEntity(pNewPline);
这行出错的。请问是什么原因啊????
就是添加一个多线到图纸中标准例程:
AcGePoint3dArray ptArr;
ptArr.setLogicalLength(4);
for (int i = 0; i setColorIndex(3);
AcDbBlockTable *pBlockTable;
acdbHostApplicationServices()->workingDatabase()
->getSymbolTable(pBlockTable, AcDb::kForRead);
AcDbBlockTableRecord *pBlockTableRecord;
pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord,
AcDb::kForWrite);
pBlockTable->close();
AcDbObjectId plineObjId;
pBlockTableRecord->appendAcDbEntity(pNewPline);
pBlockTableRecord->close();
pNewPline->close();
。。代码在别处能运行,说明这一段代码本身没有问题,多半是前前后后没有设置好。到底什么异常(有没有错误信息之类的?),对话框是怎么做的,真正可能有问题的地方都没有显示出来,一个没有问题的代码看了也没用啊。。
既然知道可能是appendAcDbEntity出错,用回返值监控一下,说不定就看出问题了。。 这段代码本身没什么错,除了没有校验返回值。其实你看一下这个返回值就知道了,我估计
pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord,
AcDb::kForWrite);
的返回值就不是Acad::eOk,肯定块表在别的程序(可能是你的,可能是别人的)还处于打开状态。
页:
[1]