![]() |
【转帖】layer based entity iteration
layer based entity iteration?
layer based entity iteration? hello, is it possible to enumerate all the entities within a specific layer efficiently? the naive solution would be to iterate through the model-space btr and check each entity for the specific layer but this comes at a cost (ie iterations = numlayers * numentities ). does dwgdirect maintain a list of entities per layer anywhere? if so how do i get access to it? thanks. paul. the only method is to iterate through btrs checking the layer. but i don't undestand why ( iterations = numlayers * numentities ) sergey slezkin it sounds like you want to do this for each of the layers in the drawing. if that's the case, iterate through the collection, build a list of layer-name - objectid pairs, and sort the list by layer name. last edited by mjf; 26th april 2004 at 07:28 amfff">. thanks sergey/mjf, i'd already started writing code using a multimap with a layername/objectid pair (layer name being the key, objectid the value in this case). so i'll probably continue along this line as it's similar to what you suggested and sounds like the only way to do this. sergey, w.r.t (iterations = numlayers * numentites) i wasn't clear. i was simply referring to my naive algorithm of accessing entities for each layer along the lines of: for i = 1 to numlayers for j = 1 to numentities if( entity(j).layer == layer(i)) then do something for layer(i) with entity(j) end if next next the problem being here is that i'm traversing the entity list 'numlayer' times searching for entities on layer(i) and doing something with them. fyi: the database that we have for our product (which is nothing to do with autocad/dwg etc..), allows entity iteration on the entire entity list or on a per layer basis. with the layer iteration, we can access directly all objects that reside on it and i just wondered if dwgdirect had something similar. anyway, your replies have answered my question, many thaks paul. |
所有的时间均为北京时间。 现在的时间是 12:15 PM. |