![]() |
【转帖】layout block records order
layout block records order
layout block records order hi, i need to know the order of the block layouts in the way they appear in the autocad tabs at the bottom of the drawing window. i use this code to take the names: code: void getlayoutnames(vector<string>& names) { try { // iterate all the blocks and return the model and paperspaces; oddbblocktableptr pblocks = pdb->getblocktableid().safeopenobject(); oddbsymboltableiteratorptr piter = pblocks->newiterator(); for (piter->start(); !piter->done(); piter->step()) { oddbblocktablerecordptr pblock = piter->getrecord(); if (pblock->islayout()) { oddblayoutptr playout = pblock->getlayoutid().safeopenobject(); names.push_back((lpctstr)playout->getlayoutname()); } //if } //for } catch (oderror& e) { reportoderror(e); names.clear(); } //catch } the problem comes when an autocad database is stored with some active paperspace. the first record is always the model space ("model"), but the second is always the active paperspace. then the remainder is ok. where is the wrong thing here? the layout dictionary stores the names in alphabetic order and is useless. is there any index to retreive? thanks in advance for any help. regards chudomir use oddblayout::gettaborder() method. btw, the drawing may contain a huge number of blocks and it's much more efficient to use layout dictionary than iterating through all blocks. sergey slezkin i knew it was simple, thank you! you're right for the blocks iteration, anyway, this function was not a bottleneck... regards chudomir |
所有的时间均为北京时间。 现在的时间是 12:49 PM. |