您的位置:首页 > 数据库

ARX创建块遭遇图形数据库问题

2012-07-27 09:54 239 查看
AcDbObjectId CArrowsBlock::AddBlock(const CString& strBlkName ,const AcDbObjectId& objId, AcDbPolyline* pLine)
{
// 获得当前图形数据库的块表
AcDbBlockTable *pBlkTbl;
acdbHostApplicationServices()->workingDatabase() ->getBlockTable(pBlkTbl, AcDb::kForWrite);

// 创建新的块表记录
AcDbBlockTableRecord *pBlkTblRcd = new AcDbBlockTableRecord();
pBlkTblRcd->setName(strBlkName);

// 将块表记录添加到块表中
AcDbObjectId blkDefId;
pBlkTbl->add(blkDefId, pBlkTblRcd);
pBlkTbl->close();

// 向块表记录中添加实体
AcDbObjectId entId;
pBlkTblRcd->appendAcDbEntity(entId,pLine);

// 如果用acdbobjectId就失败,没有图形
// AcdbEntity *pEnt = NULL;
// AcdbEntity *pEntCopy = NULL;
// AcdbOpenAcDbEntity(pEnt,objId,AcDb::kForWrite);
// pEntCopy = AcDbPolyLine::Cast(pEnt->Clone()):
// pBlkTblRcd->appendAcDbEntity(entId,pEntCopy);
// Acgepointe3d ptReference;	// 参照点,默认的是原点
// pBlkTblRcd->SetOrgion(PtReference);
// 关闭实体和块表记录
pBlkTblRcd->close();

return entId;
}

最开始直接用原实体加入块无效,然后用拷贝就好了,不设参照点的话,参照点是原点,加入的块都找不到。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: