![]() |
【转帖】o Obtain Oddbblockreference From A Oddbentity
to obtain oddbblockreference from a oddbentity
to obtain oddbblockreference from a oddbentity is it possibile obtain the oddbblockreference from a oddbentity? last edited by rareba; 4th december 2006 at 08:07 amfff">. quote: originally posted by rareba is it possibile obtain the oddbblockreference from a oddbentity? code i use, hope this helps... oddbobjectid entityid = entityptr->objectid(); oddbobjectptr objectptr = entityid.openobject(); if (objectptr->iskindof(oddbblockreference::desc())) { oddbblockreferenceptr blockrefptr = entityptr; ... .. ... } cheers jason in the odreadex sample there is: class oddbtext_dumper : public oddbentity_dumper { public: void dump(std(_tostream) &os, oddbentity* pent, int indent) const { oddbtextptr ptext = pent; writeline(os); writeline(os, indent, tostring(ptext->isa()), tostring(ptext->getdbhandle())); dumptextdata(os, ptext, indent); } }; i want obtain,if is possibile, oddbblockreference from oddbtext. easly i obtain oddbblocktablerecord using blockid. i want know oddbblockreference of the entity because if it is a oddbattributedefinition i can get the attribute when it is not constant. someone have some idea? i think you should do this like .. oddbobjectiteratorptr pentiter = pblock->newiterator(); for(pentiter->start(); !pentiter->done(); pentiter->step()) { oddbentityptr pent = pentiter->entity(); if (pent->iskindof(oddbblockreference::desc())) { oddbblockreferenceptr pblockref = pentiter->entity(); } i don't know what is pblock. oddbobjectiteratorptr pentiter = pblock->newiterator(); i had used previously send code to iterate through all the blocks in the acad document , here is the total code : // 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 to read oddbblocktablerecordptr pblock = pblkiter->getrecordid().safeopenobject (); // get block iterator oddbobjectiteratorptr pentiter = pblock->newiterator(); for(pentiter->start(); !pentiter->done(); pentiter->step()) { // get an entity from the block oddbentityptr pent = pentiter->entity(); // check the type of the entity if (pent->iskindof(oddbblockreference::desc())) { oddbblockreferenceptr blockrefptr = pentiter->entity(); i hope this helps .. it is sound fine but i must use an array for memorize value. it is not so elegant but seem work thank's having blocktablerecord id you can get ids of block references referencing the block: oddbblocktablerecord::getblockreferenceids(). but not that a block can be inserted multiple times.... sergey slezkin |
所有的时间均为北京时间。 现在的时间是 05:03 AM. |