- 积分
- 2113
- 明经币
- 个
- 注册时间
- 2013-6-10
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
楼主 |
发表于 2013-10-9 20:58:53
|
显示全部楼层
嗯,谢谢wwwliuyu和风树,确实是这样的问题,我代码修改了一下,但是还是有问题,我发现只要是以写的方式打开块表或对象都会出错,这可不太好。
Acad::ErrorStatus es = Acad::eOk;
AcDbEntity *pObj=NULL;
AcDbEntity *pObj1=NULL;
AcDbViewport *pvObj=NULL;
AcDbObjectId objId,objId1;
ads_name ename;
ads_point pickpt;
//打开数据库
AcDbBlockTable *pBlkTbl=NULL;
es=acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlkTbl,AcDb::kForRead);//此处能成功打开
if (Acad::eOk!=es){
acutPrintf("打开数据库失败");
acutPrintf("\n");
return S_OK;
}
AcDbBlockTableRecord *pBlockTableRecord;
es=pBlkTbl->getAt(ACDB_MODEL_SPACE,pBlockTableRecord,AcDb::kForWrite);//一旦为写的方式打开就打不开数据库,难道没连接到数据库
if (Acad::eOk!=es){
acutPrintf("打开模型空间数据库失败");
acutPrintf("\n");
pBlkTbl->close();
return S_OK;
}
AcDbBlockTableRecord *pBlkTblRec=NULL;
es=pBlkTbl->getAt(ACDB_PAPER_SPACE, pBlkTblRec, AcDb::kForWrite);//一旦为写的方式打开就打不开数据库
if (Acad::eOk!=es){
acutPrintf("打开图纸空间数据库失败");
acutPrintf("\n");
pBlkTbl->close();
return S_OK;
}
acedEntSel("\nSelect a polygon: ",ename, pickpt);
acdbGetObjectId(objId, ename);
if (acdbOpenObject(pObj1,objId,AcDb::kForWrite)!=Acad::eOk)//一旦为写的方式打开就打不开数据库
{
acutPrintf("打开视口失败");
acutPrintf("\n");
pBlkTblRec->close();
return S_OK;
}
|
|