Тема: Групповой фильтр слоев

Здравствуйте, все!
Скажите, кто-нибудь знает, как в ObjectARX создать групповой фильтр (Group Filter) и засунуть туда необходимые слои?
Я везде уже покопался, но :( ничего не нашел.

Re: Групповой фильтр слоев

Обнаружил некую вещь

AcDbLayerFilter

но не знаю что с ней делать =(
Подскажите плиз!!!

Re: Групповой фильтр слоев

Создай вручную групповой фильтр. Поизучай extensionDictionary для LayerTable. Найдешь там Dictionary с именем "ACAD_LAYERFILTERS", а в ней записи ссылающиеся на фильтры слоев.

Re: Групповой фильтр слоев

А так же Dictionary с именем "ACLYDICTIONARY".

Re: Групповой фильтр слоев

Ну или так (без особой проверки на ошибки):

static void LayerFilterAdd(void)
{
  Acad::ErrorStatus es;
  AcLyLayerFilterManager *pLFMan = aclyGetLayerFilterManager(acdbCurDwg());
  if (!pLFMan) return;
  AcLyLayerFilter *pRoot = NULL, *pCurrent = NULL;
  if ((es = pLFMan->getFilters(pRoot,pCurrent)) != Acad::eOk)  {
    acutPrintf(_T("\npLFMan->getFilters(pRoot,pCurrent)=%s"),acadErrorStatusText(es));
    return;
  }
  AcLyLayerGroup *pNew = new AcLyLayerGroup();
  pNew->setName(_T("Моя группа фильтров"));
  // Добавим 5 слоев
  {
      AcDbLayerTablePointer pLT(acdbCurDwg()->layerTableId(),AcDb::kForWrite);
      for (int i=0; i < 5; i++) {
        AcDbLayerTableRecord *pLTR = new AcDbLayerTableRecord();
        ACHAR layerName[512]; acutSPrintf(layerName,_T("Новый слой %d"),i);
        pLTR->setName(layerName);
        AcDbObjectId eid;
        if (pLT->add(eid,pLTR) != Acad::eOk) {
          pLT->getAt(layerName,eid);
        }
        if (!eid.isNull()) {
          pLTR->close();
          pNew->addLayerId(eid);
        } else {
          delete pLTR;
        }
      }
  }
  pRoot->addNested(pNew);
  if ((es = pLFMan->setFilters(pRoot,pNew)) != Acad::eOk)  {
    acutPrintf(_T("\npLFMan->setFilters(pRoot,pNew)=%s"),acadErrorStatusText(es));
    return;
  }
}