创建块 对已经在数据库里的实体处理

来源:互联网 发布:学英语单词软件 编辑:程序博客网 时间:2024/06/06 08:25
已经在数据库里的实体是不能直接append到另外一个block table record里面的, 因为它们已经属于MODEL SPACE这个block table record了. 你观察一下pBRecord->appendAcDbEntity(entId,pEnt);的回返值就看到了, 会给你26, 就是eAlreadyInDatabase.. 如果做新图块时可以把加入图块的实体删除, 建立一个AcDbObjectIdArray类实体, 在获得每一个选择集中的实体的ObjectId之后, 用array->append(Id), 最后把这个array放在新图块的记录名下. (pBRecord->assumeOwnershipOf (<array name>)) 就是把选中的实体从MODEL SPACE记录移动到新图块的记录. 如果不能删除做成新图块的实体, 在打开每一个选择集中的实体之后, 用以下代码复制实体: AcDbEntity *pCopy;
AcDbObjectId copyId;
pCopy = (AcDbEntity*)pEnt->clone(); 然后把pCopy加入新图块的记录.