几何尺寸与公差论坛------致力于产品几何量公差标准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)
-   -   【转帖】explode proxy graphics (http://www.dimcax.com/hust/showthread.php?t=16180)

yang686526 2009-05-05 10:10 AM

【转帖】explode proxy graphics
 
explode proxy graphics
explode proxy graphics
hello,
in the old c-style toolkit there was an function called adexplodeproxytolist()
which i used to explode all proxy graphics during dwg-import.
now i need the same functinality within dwgdirect.
can someone help?
regards
dirk busch
maybe this helps.
this examples explodes all proxys in the block and marks them invisible.
however some of the proxys cannot be exploded ???
regards
----------------------------------------
{
// open the block table
oddbblocktableptr pblocks = pdb->getblocktableid().safeopenobject();
// get an iterator for the block table
oddbsymboltableiteratorptr pblkiter = pblocks->newiterator();
// for each block in the block table
for (pblkiter->start(); ! pblkiter->done(); pblkiter->step())
{
// open the block for writing
oddbblocktablerecordptr pblock = pblkiter->getrecordid().safeopenobject(oddb::kforwrite);
// get an entity iterator
oddbobjectiteratorptr pentiter = pblock->newiterator();
// for each entity in the block
for (; !pentiter->done(); pentiter->step())
{
// open the entity for writing
oddbentityptr pent = pentiter->entity(oddb::kforwrite);
oddbproxyentity* pproxy = (oddbproxyentity*)pent->queryx(oddbproxyentity::desc());
// explode visible proxy entity
if (pproxy && pproxy->visibility() == oddb::kvisible)
{
oddbobjectidarray idarray;
std(cout) << "proxy " << pproxy->getdbhandle();
odresult res = pproxy->explodetoblock(pblock, &idarray);
if (res == eok)
{
// make exploded proxy entity invisible
pproxy->setvisibility(oddb::kinvisible);
std(cout) << " - successfully exploded" << std(endl);
}
else
std(cout) << " - not exploded - error " << res << std(endl);
for (unsigned int i = 0; i < idarray.length(); ++i)
std(cout) << "exploded to " << idarray.at(i).gethandle() << std(endl);
}
if (pproxy)
pproxy->release();
}
}
}
as mentioned above some proxys cannot be exploded.
i've tried to attach a sample dwg which has 2 of these proxys but it doesnt work.
also when converting a larger dwg which i am not allowed to post here, the converted dxf file with the exploded proxy data cannot be loaded in autocad.
regards

quote:
originally posted by ime
maybe this helps.
this examples explodes all proxys in the block and marks them invisible.
however some of the proxys cannot be exploded ???
regards
thank you. for my files it seem's to work quite well.
regards
dirk busch


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