Тема: Как взять выделенный объект

Вопрос:
Нужно взять все выделеные объекты на чертеже по принципу

AcDbObject *pObj[n]
pObj[n] = (Какойто GetSelection но не знаю какой :)

Кажись, знаю как взять AcDbObjectId objId:

      AcDbObjectId objId;
      ads_name sset;
    if (acedSSGet("_:S", NULL, NULL, NULL, sset) != RTNORM) {
        acutPrintf("\nacedSSGet has failed");
    }
    acdbGetObjectId(objId, sset);

но как теперь по ID получить объекты?
Подскажите, пожалуйста, несколько правильных способов.
Спасибо

Re: Как взять выделенный объект

Gidralisk пишет:

Подскажите, пожалуйста, несколько правильных способов.

Еще и несколько? Ты не диссертацю писать собрался? :)

  static int GetAllSelectedEntity(AcDbObjectIdArray &ids)
  {
    ids.setLogicalLength(0); // Чистим массив
    resbuf *pSet = NULL;
    if (acedSSGetFirst(NULL,&pSet) == RTNORM && pSet && pSet->restype == RTPICKS) {
      ads_name ss; ads_name_set(pSet->resval.rlname,ss);
      long nss = 0; acedSSLength(ss,&nss);
      ids.setLogicalLength(nss);
      for (int i = 0; i < nss; i++) {
        ads_name en;       acedSSName(ss,i,en);
        AcDbObjectId id;   acdbGetObjectId(id,en);
        ids[i] = id;
      }
    }
    acutRelRb(pSet);
    return ids.length();
  }

А про то как открыть примитив, зная его AcDbObjectId, поищи по форуму. Это здесь десятки, если не сотни раз, повторялось.

Re: Как взять выделенный объект

Спасибо большое, поищу.
Открыть примитив подразумевает получить AcDbObject? Нужно для считывания XData с него же.

struct resbuf *pRb;
pRb = pObj->xData(appname);

Re: Как взять выделенный объект

  static resbuf *GetXData(AcDbObjectId id, const ACHAR *appname)
  {
    AcDbObjectPointer<AcDbObject> pObj(id,AcDb::kForRead);
    if (pObj.openStatus() != Acad::eOk) return NULL;
    return pObj->xData(appname);
  }

Re: Как взять выделенный объект

Александр, спасибо огромное

Re: Как взять выделенный объект

еще такой вопрос на этой почве:
XData есть у каждого примитива,
Если есть необходимость обрабатывать блоки (группы примитивов как один элемент, к примеру схематический клапан), как обработать XData для всего блока (группы) - переберать все примитивы или можно както проверить пренадлежность к чемуто общему, тем самым определить или задать определенный XData для всего блока?
Заранее спасибо за понимание и ответ