![]() |
【转帖】exploding entities recursively crashes
exploding entities recursively crashes.
exploding entities recursively crashes. when i use the following code in order to recursively explode all the entities in a file, the program crashes when exploding some explodable entities into some block references not when exploding the block references (it seems to me as if it happens when the entities contain some kind of text, like aligned dimensions). this is the code: //************************************************** ************************ theapp.pdb = theapp.readfile (strfilename); oddbblocktableptr pblocks = theapp.pdb ->getblocktableid().safeopenobject(); oddbsymboltableiteratorptr pblkiter = pblocks ->newiterator(); for (pblkiter->start(); ! pblkiter->done(); pblkiter->step()) { oddbblocktablerecordptr pblock = pblkiter ->getrecordid().safeopenobject(); if(theapp.pdb->getmodelspaceid() == pblkiter ->getrecordid()) { oddbobjectiteratorptr pentiter = pblock ->newiterator(); oddbblockreferenceptr pblockreference; for (; !pentiter->done(); pentiter->step()) { oddbentityptr pentity = pentiter->entity(); recursivelyexplode(pentity); } } } //************************************************** ************************ void recursivelyexplode(oddbentity* pentity) { oddbvoidptrarray pvoidentity; odresult odres; odres = pentity->explode(pvoidentity); if(odres != eok) { loadnonexplodableentity(pentity); return; } oddbentityptr pentityaux; int index=1; int sizearray=0; sizearray = pvoidentity.size(); while(index <= sizearray) { pentityaux = pvoidentity[index-1]; recursivelyexplode(pentityaux); index++; } } recursively exploding block references. has this problem been resolved? i just had a problem recursively exploding block references. void dumpblockref(oddbblockreferenceptr pblockref) { int numentities, i; if (pblockref.isnull()) { } else { oddbvoidptrarray entityset; pblockref->explode(entityset); numentities = entityset.size(); for (i=0; i < numentities; i++) { oddbentityptr pent = entityset[i]; dumpallentities(pent); } } void dumpallentities(oddbentityptr pent) { if (pent->iskindof(oddbblockreference::desc())) { oddbblockreferenceptr pblockref = oddbblockreference::cast(pent); dumpblockref(pblockref); } } last edited by rauli; 13th january 2004 at 12:09 pmfff">. |
所有的时间均为北京时间。 现在的时间是 06:14 AM. |