Сообщество программистов Autodesk в СНГ

ADN Club => ObjectARX => Тема начата: drunkwolfs от 05-03-2016, 15:16:43

Название: Вернуть из arx в LISP указатель.
Отправлено: drunkwolfs от 05-03-2016, 15:16:43
Как из arx функции вернуть указатель(64 битный) на переменную в LISP? например на строку char.
пробовал с помощью
acedRetPointно кажется она для того чтоб передавать координаты точек.
Название: Re: Вернуть из arx в LISP указатель.
Отправлено: Александр Ривилис от 05-03-2016, 17:11:42
Как из arx функции вернуть указатель(64 битный) на переменную в LISP?
Никак, т.к. Autolisp не работает с указателями. Возвращается значение. В частном случае строка.
Код - C++ [Выбрать]
  1. //////////////////////////////////////////////////////////////////////////
  2. //                 (ConcatArgs a1 a2 ... an)
  3. //           Объединяем все переданные строки в одну
  4. //////////////////////////////////////////////////////////////////////////
  5. static int ads_ConcatArgs () {
  6.   AcString s;
  7.   resbuf *args = acedGetArgs();
  8.   resbuf *rb = args;
  9.   for (; rb; rb = rb->rbnext) {
  10.     if (rb->restype == RTSTR)   {
  11.         s += AcString(rb->resval.rstring);
  12.     }
  13.   }
  14.   acedRetStr(s);
  15.   acutRelRb (args) ;
  16.   return (RTNORM) ;
  17. }

Command: (ConcatArgs "a" "b" "c" "d" "e")
"abcde"