Тема: Получить текстовые стили из текущей базы чертежа????

Всем привет,
Необходимо получить все текстовые стили чертежа, делаю так:

if ( (pDb =acdbHostApplicationServices ()->workingDatabase ()) != NULL )
{
AcDbTextStyleTable* pTextStyleTable;
if ((es = pDb->getTextStyleTable(pTextStyleTable, AcDb::kForRead)) != Acad::eOk)
{
 return;
}            
AcDbTextStyleTableIterator* pTextStyleIterator;
if ((es = pTextStyleTable->newIterator(pTextStyleIterator, Adesk::kTrue, Adesk::kTrue)) != Acad::eOk)
{
  pTextStyleTable->close();
  return;
}
pTextStyleTable->close();
while (!pTextStyleIterator->done())
{
  if ((es = pTextStyleIterator->getRecordId(id)) == Acad::eOk)
 {
  textstyleId.append(id);
 }
 pTextStyleIterator->step();
}
delete pTextStyleIterator;

Взято из примеров к либе.
Получает только один тектстовый стиль standard. Остальные, которые я добавил руками в упор не видит.

Re: Получить текстовые стили из текущей базы чертежа????

static void ListTextStyles(void)
{
  AcDbTextStyleTablePointer pTlb(acdbCurDwg(),AcDb::kForRead);
  if (pTlb.openStatus() == Acad::eOk) {
    AcDbTextStyleTableIterator *pIterator = NULL;
    if (pTlb->newIterator(pIterator) == Acad::eOk && pIterator) {
      for(; !pIterator->done(); pIterator->step()) {
        AcDbObjectId eid;  pIterator->getRecordId(eid);
        AcDbTextStyleTableRecordPointer pTblRec(eid,AcDb::kForRead);
        if (pTblRec.openStatus() == Acad::eOk) {
          const ACHAR *name = NULL; pTblRec->getName(name);
          if (name) {
            acutPrintf(_T("\nName: %s"), name);
          }
        }
      }
      delete pIterator;
    }
  }
}

Re: Получить текстовые стили из текущей базы чертежа????

В очередной раз спасибо Александр :))

Re: Получить текстовые стили из текущей базы чертежа????

> Int_2007
Честно говоря в чем у тебя ошибка, я при поверхностном осмотре не заметил... Просто дал рабочий код.

Re: Получить текстовые стили из текущей базы чертежа????

Понял, спасибо. Небольшой вопрос еще в тему, как по имени слоя получить его AcDbTextStyleTableRecordPointer

Re: Получить текстовые стили из текущей базы чертежа????

> Int_2007
Зато я не понял. По имени слоя (!!!) или по имени текстового стиля? smile

Re: Получить текстовые стили из текущей базы чертежа????

Прошу прощения, текстового стиля конечно

Re: Получить текстовые стили из текущей базы чертежа????

Как вариант:

static void TestTextStyle(void)
{
  ACHAR name[1024];
  if (acedGetString(FALSE,_T("\nУкажите имя текстового стиля: "),name) == RTNORM) {
     AcDbTextStyleTableRecordPointer pTlbRec(name,acdbCurDwg(),AcDb::kForRead);
     if (pTlbRec.openStatus() == Acad::eKeyNotFound) {
       acutPrintf(_T("\nТекстового стиля %s нет!"), name);
     } else if (pTlbRec.openStatus() == Acad::eOk) {
       acutPrintf(_T("\nТекстовый стиль %s есть!"), name);
     }
  }
}

Re: Получить текстовые стили из текущей базы чертежа????

Ок, огромное спасибо, вопрос решен