Вернуть из arx в LISP указатель.

Автор Тема: Вернуть из arx в LISP указатель.  (Прочитано 6340 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн drunkwolfsАвтор темы

  • ADN OPEN
  • Сообщений: 21
  • Карма: 1
  • Skype: drunkwolfs
Как из arx функции вернуть указатель(64 битный) на переменную в LISP? например на строку char.
пробовал с помощью
acedRetPointно кажется она для того чтоб передавать координаты точек.
« Последнее редактирование: 05-03-2016, 16:47:40 от drunkwolfs »

Отмечено как Решение drunkwolfs 06-03-2016, 05:45:06

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Вернуть из arx в LISP указатель.
« Ответ #1 : 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"
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение