求助
我在模型空间里选择了一些实体,然后在组成块参照,为什么我的块参照里什么都没有,只有名字,不见图形,在cad上操做的时候可以选择它并插入,不过插入到模型空间什么都没有。我确定实体不是空的,块表也打开正常,record和块表也都关闭了的AcDbBlockTable *pBlkTable;
if (acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pBlkTable, AcDb::OpenMode::kForWrite) != ErrorStatus::eOk)
return;
AcDbBlockTableRecord *record1 = new AcDbBlockTableRecord();
AcDbObjectId recId;
record1->setName(L"sssL");
pBlkTable->add(recId, record1);
AcDbObjectIdArray idArr;
AcDbObjectIdArray mirIdArr;
if (CSelectUtil:romptSelectEnts(L"\n请选择要镜像的实体集\n", NULL, idArr)) {
for (int i = 0; i clone());
if (record1->appendAcDbEntity(pCopyEnt) == ErrorStatus::eOk) {
AfxMessageBox(TEXT("InsertOK!"));
}
else {
AfxMessageBox(TEXT("InsertFail!"));
}
pEnt->close();
}
}
record1->close();
pBlkTable->close();
}
复制代码 我也不知道问题是怎么回事,但是我把 pBlkTable->add(recId, record1);这句放在record1->close();这句之前就解决了。 objectarx中,要特别注意托管对象的关闭问题,这个是要按照过程次序限定原则的,要做到用完就关闭。
原帖子代码里面,最好也要按照伪代码的次序执行
获取选定的对象,将对象克隆(或者删除,利用程序开关)复制到内存空间,新建BTR,将克隆对象存入BTR,打开BT,将BTR存入BT,关闭BT,关闭BTR。
还有就是,一楼帖子中,要注意代码的静默性,就算是临时性的,也不能过多的来一个对话框,要用es来引导用户,或者开发者。
谢谢提醒,以后的开发中,我会注意的。
页:
[1]