几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量

几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 (http://www.dimcax.com/hust/index.php)
-   DirectDWG (http://www.dimcax.com/hust/forumdisplay.php?f=89)
-   -   【转帖】explodetoblock exception - me too (http://www.dimcax.com/hust/showthread.php?t=16194)

yang686526 2009-05-05 10:15 AM

【转帖】explodetoblock exception - me too
 
explodetoblock exception - me too
explodetoblock exception - me too
i am using the following code that creates an exception eventually:
class oddbblockreference_export : public oddbentity_export
{
public:
void export(oddbentity* pent, oddbdatabase* pdb) const
{
// explode block into entities within block
if (pent)
{
oddbblockreferenceptr pblkref = pent;
oddbblocktablerecordptr pblock = pblkref->blocktablerecord().openobject(oddb::kforwrite);
oddbobjectid id = pent->blockid();
oddbobjectid idowner = pent->ownerid();
if(true == pblock->isfromexternalreference() || true == pblock->isfromoverlayreference())
{
鈥?. never called
} // end if external reference
// explode blocks
if (!idowner.isnull())
{
// the exploded stuff will be appended to owner of entity being exploded
oddbblocktablerecordptr pbtr = oddbblocktablerecord::cast(idowner.openobject(oddb ::kforwrite));
if (!pbtr.isnull())
{
pent->database()->startundorecord();
odresult status = pent->explodetoblock(pbtr);
}
}
}
}
};
the file that exhibits the problem has 7 blockreferences that contain blockreferences. i explodetoblock the 7, which gives me around 15,000 entities. as i continue to process, around entity 191, the explodetoblock causes an exception. there is nothing special that i can tell since there are a number of other blocks within blocks that have been exploded.
my guess is that i have setup the database processing incorrectly and it eventually causes the exception(??).
odmfcapp reads the dwg but draws very poorly and shows lots of memory leaks.
i tried to attach the file, but the upload fails.
error msg = "dwgdirect error: not that kind of class" ???
what does that mean??? how does it get to the blockreference method if it is not that kind of class?
i think i got it.
i've been working this one for awhile and i think the problem is the creation of the second blocktablerecordptr. if i just use the first one created things seem fine.
nope
sorry, what i thought fixed it seemed instead to cause the explodetoblock to just fail to explode but return eok anyway.
so.... got any ideas?


所有的时间均为北京时间。 现在的时间是 06:13 PM.