Тема: Функция acedSSGet

Доброе время суток.
Подскажите (кто знает) как настроить множественный фильтр для функции acedSSGet (чтобы можно было выбирать объекты нескольких типов и.т.д.).
У меня не получается (работает только первый тип).

Re: Функция acedSSGet

Там ведь, вроде, есть логичесгие <AND ... AND>.
В ARX использовать не приходилось, но в Lisp точно работало.

Re: Функция acedSSGet

Не работает там AND
Там его даже писать то некуда.
В функцию передаётся указатель на структуру resbuf в которой и пишется фильтр, да вот множественный фильтр не создаётся...

Re: Функция acedSSGet

...
struct  resbuf  *pRb = NULL;
pRb = acutBuildList(
    -4, "<or",
    RTDXF0, "LWPOLYLINE",
    RTDXF0, "TEXT",
    -4, "or>",
               RTNONE
    );
ads_name ss;
acedSSGet ("X", NULL, NULL, pRb, ss);
acutRelRb(pRb);
long len;
acedSSLength(ss, &len);
...
// Plug & Play :)
// должны выбраться все "облегченные"
// полилинии и текст (обыкновенный)

Удачи!

Re: Функция acedSSGet

Что-то тут ошибка закралась. :)
Должно быть
pRb = acutBuildList(  -4, "<or"  RTDXF0, "LWPOLYLINE",  RTDXF0, "TEXT",  -4, "or>",  RTNONE  );

Re: Функция acedSSGet

Ну и запятая, конечно.
Sorry. :)

Re: Функция acedSSGet

Большое спасибо.
Всё работает, но я не понимаю, что это за магическая цифра -4 и почему именно такой порядок задания параметров (с использованием "<or") ?
И главное странно, что в описании acedSSGet вообще нет никаких связей с acutBuildList, и примеры там написаны совсем по-другому....

Re: Функция acedSSGet

Для понимания магической цифры -4 (а также -1, -2, -3...) следует познакомиться с DXF Reference.

Re: Функция acedSSGet

И ещё такой вопрос: как проверить текущее выделение (какую букву поставить в acedSSGet) ?
"X" - это выбор всех объектов с пропуском через фильтр, NULL - предлагает выбирать, а если я хочу использовать заранее выделенные объекты (но не предыдущее выделение)?

Re: Функция acedSSGet

И вообще цифра -4 в acdb.h определена как kDxfUndo, а в category.h - PROPCAT_Position
И всё.
Как же это понимать ?

Re: Функция acedSSGet

В Lispе для (ssget) есть вариант "I" (Implied selection) - выбор при помощи ручек.

Re: Функция acedSSGet

Давайте разбираться по порядку. :)
> И главное странно, что в описании acedSSGet вообще нет
> никаких связей с acutBuildList
1. Для задания фильтра в acedSSGet используется список структур resbuf. Таким образом совершенно не важно каким способом этот список сформирован (при помощи acutBuildList или как-то иначе). Просто, на мой взгляд, для такого рода задач она подходит как нельзя лучше.

Re: Функция acedSSGet

Давайте разбираться по порядку. (продолжение)
> И ещё такой вопрос: как проверить текущее выделение
> (какую букву поставить в acedSSGet) ?
2. К сожелению (насколько мне известно) данная функция не применяется для этой задачи, а жаль т.к. фильтровать объекты в ней достаточно удобно.
Здесь можно использовать функцию "acedSSGetFirst", которая возвращает списки выбранных и выбранных с "ручками" объектов.

Re: Функция acedSSGet

Давайте разбираться по порядку. (продолжение)
> и примеры там написаны совсем по-другому....
Не очень понятно какие смотрелись примеры. :)
Если в ObjectARX Developer's Guide, то надо смотреть внимательнее :). Приведу пример
"For numeric groups (integers, real values, points, and vectors), you can specify other relations by including relational operators in the filter list. Relational operators are passed as a special -4 group, whose value is a string that indicates the test to be applied to the next group in the filter list. "
Удачи!!!

Re: Функция acedSSGet

Ну с этим вроде всё понятно.
За разъяснения спасибо.
Вот только остался один невыясненный вопрос: есть ли у магической цифры -4 определение ? Я нашёл только kDxfUndo и PROPCAT_Position, но по смыслу оба эти определения не подходят к данной функции....
Если есть, то где конкретнее искать информацию ?

Re: Функция acedSSGet

> есть
ли у магической цифры -4 определение
Кроме "kDxfUndo" я не видел. :)
Вообще со списками resbuf очень много "оговорок", "условностей" и "непонятностей"...
Ой! Как все это занимательно. :)

Re: Функция acedSSGet

Занимательно это только тогда, когда знаешь все эти оговорки, условности и неприятности.

Re: Функция acedSSGet

:)))
Когда не знаешь, тогда еще занимательнее.

Re: Функция acedSSGet

Где можно прочитать про эти оговорки, условности и неприятности ?
Откуда то ведь появилась эта цифра -4 и строки "<or" и "or>"...

Re: Функция acedSSGet

???
Я ведь привел источник знаний и вдохновений
ObjectARX Developer's Guide. Другого не дано. Есть конечно (теперь уже) четыре книги на amazon.com. Но это уже совсем другая история...

Re: Функция acedSSGet

В вышеприведённом источнике знаний я нашёл описание работы acutBuildList и многое другое, но вот о цифре -4 нет там ничего.
Как я понял -4 - это некий тип дынных (предшествующий управляющей строчке, например "<or"). Это из Lisp'а что ли ?
Книжки на amazon.ru мне не по карману.

Re: Функция acedSSGet

> AndreyV
Андрей, в обсуждении этой темы есть цитата из руководства разработчика, где явно и недвусмысленно описывается способ использования "логических скобок" с кодом -4. См. сообщение > Michael (2003-07-25 09:44:51)

Re: Функция acedSSGet

> AndreyV
...
>Книжки на amazon.ru мне не по карману.
Сейчас соберусь с мыслями и попробуем организовать тему. Т.к. все книги мне тоже не по карману. :)  и :(
Да и те, что есть, были подарком.