Тема: Идет ошибка eNotOpenForWrite при возравщении значения размера. В чем баг?

AcDbEntity* pEnt = NULL;
...
acdbOpenObject(pEnt, oId, AcDb::kForRead);
Acad::ErrorStatus es;
double dblVal;
if (pEnt != NULL)
{
   AcDbRotatedDimension* pRotatedDimension;
   if ((pRotatedDimension = AcDbRotatedDimension::cast(pEnt)) != NULL)
      es = pRotatedDimension->measurement(dblVal);
}

На одних чртежах возвращает значение размера без проблем, на других возвращает ошибку eNotOpenForWrite. А мне и не нужно для write, я же явно открыл для чтения... Причем не пойму разницы в размерах этих разных чертежей...

Re: Идет ошибка eNotOpenForWrite при возравщении значения размера. В чем баг?

Что-то тут не так. Если вызывается функция использующая assertWriteEnabled(), а объект на запись не открыт, то возникает exception. И акад падает.

Re: Идет ошибка eNotOpenForWrite при возравщении значения размера. В чем баг?

можно вопрос?
В принцыпе нет никакой разницы, но почему сразу не открыть pRotatedDimension без использования cast?

AcDbRotatedDimension* pRotatedDimension=NULL;
acdbOpenObject(pRotatedDimension, oId, AcDb::kForRead);
if(pRotatedDimension){
  pRotatedDimension->measurement(dblVal);
  pRotatedDimension->close();
}

Попробуй сработет ли ф-я "dimensionText()"

Re: Идет ошибка eNotOpenForWrite при возравщении значения размера. В чем баг?

Приведение используется потому, что этот фрагмент кода в цикле по всем сущностям чертежа. К чему привелось - с тем и играем. dimensionText() - не проходит, он возвращает текст около значения размера, и то, если он задан, иначе - пустая строка.
Надеюсь, что это был глюк того чертежа... Пока на остальных measurement() работает. Я его потерял... Возможно это был чертеж из 2005-го, а тестировал я в 2004...

Re: Идет ошибка eNotOpenForWrite при возравщении значения размера. В чем баг?

> Геннадий
Жаль, что потерялся чертеж. Очень интересно было бы взлянуть в чем проблема. А это 100%, что именно:

es = pRotatedDimension->measurement(dblVal);

возвращала eNotOpenForWrite?