<pre name="code" class="cpp">AcDbDatabase *pDataBase = NULL;
pDataBase = acdbCurDwg(); //根据需要传入不同AcDbDatabase 就可以做到不同dwg克隆实体

Acad::ErrorStatus es = Acad::eOk;

//
AcDbBlockTable *pBlockTable = NULL;
es = pDataBase->getBlockTable(pBlockTable, AcDb::kForRead); //得到块表指针
if (Acad::eOk != es)
return false;

AcDbBlockTableRecord *pBlockTableRecord = NULL;
es = pBlockTable->getAt(ACDB_MODEL_SPACE,pBlockTableRecord,AcDb::kForWrite); //得到块表记录指针
if (Acad::eOk != es)
return false;

pBlockTable->close();
pBlockTable = NULL;

AcDbBlockTableRecordIterator *pBlockIter = NULL;
es = pBlockTableRecord->newIterator(pBlockIter);
if (Acad::eOk != es)
return false;
AcDbEntity *pEntity = NULL;
AcGeMatrix3d xform;
xform.setToTranslation(AcGeVector3d(100,500,0));
AcDbObjectId objTmpId = AcDbObjectId::kNull;
for (pBlockIter->start(); !pBlockIter->done(); pBlockIter->step())
{
pBlockIter->getEntityId(objTmpId);
AcDbObjectPointer<AcDbEntity> pEnt(objTmpId, AcDb::kForWrite);
if (pEnt.openStatus() == Acad::eOk)
{

//pEntity = AcDbEntity::cast(pEnt->clone());//克隆不移动
pEnt->getTransformedCopy(xform,(AcDbEntity*&)pEntity); //克隆移动实体
pEntity->setColorIndex(1);
}

}

pBlockTableRecord->appendAcDbEntity(objTmpId,pEntity);
pEntity->close();
pBlockTableRecord->close();
pBlockTableRecord = NULL;

if (pBlockIter != NULL)
{
delete pBlockIter;
pBlockIter = NULL;
}
return true;
 

相关文章:

  • 2021-12-01
  • 2021-12-25
  • 2021-04-10
  • 2021-10-23
  • 2022-01-08
  • 2021-12-07
  • 2021-07-30
  • 2021-12-06
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-16
  • 2021-06-20
  • 2021-12-14
  • 2021-11-27
相关资源
相似解决方案