Тема: Передача глобальных переменных из Lisp

Всем доборого утра. Подскажите пожалуйста
Мне нужно передать значение глобальной переменной TEHSCALE из AutoCAD в pText->setHeight();
Я написал так:
struct resbuf *rb;
double per;
per=acedGetSym("TEHSCALE", &rb);
.
.
.
pText->setHeight(per);
.
.
.
acutRelRb(rb);
В результате ошибок компилятор мне не выдает да и что-то в SetHeight передает, только какую-ту фигню, с переменной TEHSCALE явно не связанную.
Подскажите пожалуйста как написать, чтоб передавало то что нужно.Спасибо.

(изменено: Александр Ривилис, 6 мая 2009г. 10:59:47)

Re: Передача глобальных переменных из Lisp

struct resbuf *rb = NULL;
double per = 0;
if (acedGetSym(_T("TEHSCALE"), &rb) == RTNORM && rb->restype == RTREAL) {
  per = rb->resval.rreal;
}

Re: Передача глобальных переменных из Lisp

Огромное спасибо!

Re: Передача глобальных переменных из Lisp

Еще вопрос по этой теме.Как мне отследить те случаи, когда TEHSCALE равен nil?Сам пробовал по-разному, но все никак не удается добиться нужного результата.Спасибо.

(изменено: Александр Ривилис, 20 мая 2009г. 14:05:32)

Re: Передача глобальных переменных из Lisp

Алексей Федоров пишет:

Как мне отследить те случаи, когда TEHSCALE равен nil?

static void GetTEHScale(void)
{
  struct resbuf *rb = NULL;
  double per = 0;
  if (acedGetSym(_T("TEHSCALE"), &rb) == RTNORM) {
    if (rb) {
      switch (rb->restype) {
        case RTREAL :
        case RTORINT:
        case RTANG  :
          acutPrintf(_T("\nTEHSCALE = %.16g"),rb->resval.rreal);
          break;
        case RTSHORT:
          acutPrintf(_T("\nTEHSCALE = %d"),rb->resval.rint);
          break;
        case RTLONG:
          acutPrintf(_T("\nTEHSCALE = %d"),rb->resval.rlong);
          break;
        case RTPOINT:
          acutPrintf(_T("\nTEHSCALE = (%.16g %.16g)"),rb->resval.rpoint[X],rb->resval.rpoint[Y]);
          break;
        case RT3DPOINT:
          acutPrintf(_T("\nTEHSCALE = (%.16g %.16g %.16g)"),rb->resval.rpoint[X],rb->resval.rpoint[Y],rb->resval.rpoint[Z]);
          break;
        case RTSTR:
          acutPrintf(_T("\nTEHSCALE = \"%s\""),rb->resval.rstring);
          break;
        case RTNIL:
          acutPrintf(_T("\nTEHSCALE = NIL"));
          break;
        default:
          acutPrintf(_T("\nTEHSCALE = ???"));
          break;
      }
    } else {
      acutPrintf(_T("\nTEHSCALE = NIL"));
    }
  } else {
     acutPrintf(_T("\nError reading value of TEHSCALE"));
  }
}

Если TEHSCALE равен NIL, то rb == NULL