Тема: Как определить тип любого объекта на слое?

Необходимо сделать анализ по слоям - какие объекты лежат на указанном слое. Есть идея выбирать все объекты на слое по команде "acedSSGet", а потом как-то вытащить из получившегося набора тип каждого элемента (однострочный текст, размер, полилиния, отрезок, ACAD_PROXY_ENTITY и т.д.). Но, что-то подсказывает, что есть более лёгкий способ...

Re: Как определить тип любого объекта на слое?

Простейший и IMHO самый быстрый способ - acedSSGet с фильтром по слою.
Сложнее - пройтись по всей базе и сравнивать слой примитива с заданным.
Но нужно не забыть, что если интересуют не только простейшие примитивы, но и блоки, то в варианте с acedSSGet есть подводные камни - фильтрация происходит по слою, на который вставлен блок, а не по слоям примитивов, которые находятся внутри блока.

Re: Как определить тип любого объекта на слое?

Бежишь по базе, открываешь объект за объектом и применяешь AcDbEntity::layer, а затем сравниваешь значение с заданным.

Re: Как определить тип любого объекта на слое?

Забыл дописать :))) ... и вычленяешь имя объекта:

    AcDbEntity *pEnt;
    acdbOpenObject(pEnt, objectID, AcDb::kForRead);
    CString cstr = pEnt->isA()->name();
    pEnt->close();

Re: Как определить тип любого объекта на слое?

Спасибо за советы. Получилось.
Теперь столкнулся с блоками. Примитивы созданы не на слое "0". Как лучше работать с такими блоками (например переносить их на другой слой)? Надо переопределять блоки (переносить элементы на слой "0")?