- UID
- 236231
- 积分
- 86
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2005-4-1
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2005-7-23 12:05:19
|
显示全部楼层
已经可以炸开插入的块了,但是炸开块的实体中的AcDbMText文字编成AcDbText文字,而不是想要的AcDbMText文字。[/COLOR]
请各位做过的朋友和大侠指点。
void AppendToModelSpace(AcDbDatabase *pDbNew, AcDbEntity* pEnt, AcDbObjectId &objId)
{
AcDbBlockTable *pBlkTbl;
AcDbBlockTableRecord *pBlkTblRcd;
pDbNew->getSymbolTable(pBlkTbl, AcDb::kForRead);
pBlkTbl->getAt(ACDB_MODEL_SPACE, pBlkTblRcd, AcDb::kForWrite);
pBlkTblRcd->appendAcDbEntity(objId, pEnt);
((AcDbObject *)pEnt)->downgradeOpen();
pBlkTbl->close();
pBlkTblRcd->close();
return;
}
void ExplodeBlock()
{
AcDbVoidPtrArray *vparr;
AcDbObject * pDbO=NULL;
AcDbObjectId DbOId=NULL;
vparr = new AcDbVoidPtrArray();
ads_name ss,se;
struct resbuf * preb;
struct resbuf *pcb;
pcb=acutNewRb(RTDXF0);
char sbuf[100];
strcpy(sbuf,"TWO_");
pcb->resval.rstring=sbuf;
pcb->rbnext=NULL;
acedSSGet("X",NULL,NULL,NULL,ss);
long lLen;
acedSSLength(ss, &lLen);
AcDbDatabase *pdbD = acdbHostApplicationServices()->workingDatabase();
for (int i = 0; i < lLen; i++)
{
acedSSName(ss, i, se);
acdbGetObjectId(DbOId, se);
acdbOpenObject(pDbO, DbOId, AcDb::kForWrite);
((AcDbEntity *)pDbO)->explode(*vparr);
pDbO->close();
for(int j = 0; j < vparr->length(); j++)
{
pDbO = (AcDbEntity *)vparr->at(j);
AppendToModelSpace(pdbD, (AcDbEntity *)pDbO, DbOId);
pDbO->close();
}
vparr->removeSubArray(0, vparr->length());
}
delete vparr;
acutRelRb(pcb);
acedSSFree(ss);
} |
|