Тема: проблема с ads_name

ads_name можно получить, например, так:
ads_name ent;
ads_point pt;
1) acedEntSel("\nУкажите объект: ",ent,pt);       
2) acedSSGet(NULL, NULL, NULL, NULL, ent);
Дальше есть моя функция, которая получает ent и преобразует в ОbjectIdArray. Вот кусов кода:

...
  AcDbObjectId nId;
  ads_name entCur;
  long len = 0L;
  if(acedSSLength (ent, &len) != RTNORM || len == 0)return;
  for (int i=0; i < len; i++)
  {
    if (ads_ssname(ent,i,entCur)!=RTNORM)continue;
    if(acdbGetObjectId(nId, entCur)!= Acad::eOk)continue;
    if (nId.isNull()) continue;
    ids.append(nId);
  }
...

Так вот проблема заключается в том, что если ent получается из "1", то ничего не работает, а если из "2", то все замечательно.
Можно ли это как-то побороть?

Re: проблема с ads_name

> Николай
Из acedEntSel() ты получаешь не набор примитивов (SelectionSet) а только один примитив!!! Поэтому никакие ads_ssname() для него делать не нужно. Его сразу преобразуешь в AcDbObjectId и добавляешь в массив.

Re: проблема с ads_name

Дальше есть моя функция, которая получает ent и преобразует в ОbjectIdArray

Я не заню заранее какой из двух функций получен ent.
В этом и состоит проблема.
А ОbjectIdArray может состоять и из одного элемента

Re: проблема с ads_name

P.S.: По ads_name однозначно понять набор ли это примитивов или один примитив - нельзя. Конечно можно попытаться проверить условие acedSSLength (ent, &len) != RTNORM и если оно истинно, считать что это отдельный примитив. Но это может быть не всегда справедливо.

Re: проблема с ads_name

Понятненько. Не совсем это хорошо, ну да ладно, может че и придумаю :)
Спасибо за ответ.