Тема: Поиск

Документ очень большой, приходится тратить время на поиск по всей базе, но я точно знаю слой, на котором лежит элемент.
Есть ли возможность производить поиск только по заданному слою, а не по всей базе, проверяя слой элемента?

Re: Поиск

Выбор всех линий на слое "MyLayer"

    struct resbuf eb1, eb2;
    char sbuf1[100], sbuf2[100]; // Buffers to hold strings
    eb1.restype = 0;    // Entity name
    strcpy(sbuf1, "LINE");
    eb1.resval.rstring = sbuf1;
    eb1.rbnext = NULL; // No other properties    
    eb2.restype = 8; // Layer name
    strcpy(sbuf2, "MyLayer");
    eb2.resval.rstring = sbuf2;
    eb2.rbnext = NULL; // No other properties
    eb1.rbnext = &eb2; // Add the two properties
    ads_name  ssname;    
    if(acedSSGet("_X", 0, 0, &eb1, ssname) != RTNORM)    return false;

Re: Поиск

> Roman
Вопрос не корректный, поэтому и ответ тоже - если линия будет внутри блока, то этот фильтр его не найдет. Кроме того время выполнения acedSSGet("_X",...) и проход по базе - практически одно и тоже. Так что выигрыша времени не будет.

Re: Поиск

> Александр Ривилис
Вопрос действительно вышел корявый, но не в плане элементов. На слое лежат только самые простые полилинии. Я их сам создаю и кидаю на нужный мне слой. Проблема в том, что слой может быть выключенным. И кстати, вариант Романа мне подходит, хотя выигрыша во времени я существенно не заметил.
Пробег по базе (450тыс элементов всего) приблизительно 4 секунды
Выбор по слоям с проверкой на включение приблизительно 3 секунды.
Всем спасибо. Вопрос снят