![]() |
【转帖】how to handle the dimension block reference
how to handle the dimension block reference?
how to handle the dimension block reference? if a custom entity object consists of a dimension, line, etc. how processed the simple entities? the dimension element are saved in the block which is named for "*dx" and a group. is need the dimension exploded? you can get dimension block use "oddbobjectid dimblockid() const " method and then iterate on entity. or you can explode dimension. best regards, sergey z. but this is error if i write as follow code to explode dimension. int impreader::explodeinternalblocks() { oddbblocktableptr pblocktable = m_pdb->getblocktableid().safeopenobject(); oddbblocktableiteratorptr pblkiter = pblocktable->newiterator(); for ( pblkiter->start(); !pblkiter->done(); pblkiter->step() ) { oddbblocktablerecordptr pblock = pblkiter->getrecordid().safeopenobject(oddb::kforwrite); if ( pblkiter->getrecordid() != m_pdb->getmodelspaceid() ) { oddbobjectiteratorptr pmsiter = pblock->newiterator(); while ( !pmsiter->done()) { oddbobjectid entid = pmsiter->objectid(); oddbentityptr pmsent = oddbentity::cast(entid.openobject(oddb::kforwrite) ; if ( pmsent->iskindof(oddbdimension::desc())) { odresult res = pmsent->explodetoblock(pblock); // there is error, why can't explode diemsion? if ( res == eok ) { pmsent->erase(); } } pmsiter->step(); } } } } how handle the dimension according to your first way what you can get dimension block use "oddbobjectid dimblockid() const " method and then iterate on entity? thanks! last edited by dud@rib.de; 30th october 2008 at 07:34 pmfff">. hello in thread i wrote what was problem with explode dimension with annotation scale. quote: originally posted by dud@rib.de how handle the dimension according to your first way what you can get dimension block use "oddbobjectid dimblockid() const " method and then iterate on entity? thanks! oddbblocktablerecordptr pblock = pdimension->dimblockid().safeopenobject(); oddbblocktableiteratorptr pblkiter = pblock->newiterator(); for ( pblkiter->start(); !pblkiter->done(); pblkiter->step() ) { oddbobjectid entid = pblkiter->objectid(); oddbentityptr pmsent = oddbentity::cast(entid.openobject(); if ( pmsent->iskindof(oddbline::desc())) { } else if ( pmsent->iskindof(oddbmtext::desc())) { } else if ( pmsent->iskindof(oddbsolid::desc())) { } else if ( pmsent->iskindof(oddbarc::desc())) { } else if ( pmsent->iskindof(oddbpoint::desc())) { } } best regards, sergey z. hello, do you use the base point field when draw dimension block? (base point is dxf 10 in acdbblockbegin entity) see attachment: dimension_block.dwg oddbblocktablerecord block; // dimension block entity block.origin(); // the base point for the dimension block dxf 10 i don't know how treat this field correctly. best regards, andrey. attached files (48.2 kb, 1 views) hello andrey, this point is used in recompute dimension block ( dimension line defined point ). see recomputedimblock project (m_dimlinedefpt variable ). best regards, sergey z. |
所有的时间均为北京时间。 现在的时间是 03:59 AM. |