1. Всё вышенаписанное не имеет ничего общего с передачей аргументов из lisp в arx.
2. Прочитай у меня в подписи как следует форматировать код на форуме.
3. Вот пример кода:
- //----------------------------------------------------------------------------- 
- //----- acrxEntryPoint.cpp 
- //----------------------------------------------------------------------------- 
- #include "StdAfx.h" 
- #include "resource.h" 
- //----------------------------------------------------------------------------- 
- //----- ObjectARX EntryPoint 
- class CTestLispApp : public AcRxArxApp { 
- public: 
-   CTestLispApp () : AcRxArxApp () {} 
-   virtual AcRx::AppRetCode On_kInitAppMsg (void *pkt) { 
-     AcRx::AppRetCode retCode =AcRxArxApp::On_kInitAppMsg (pkt) ; 
-     return (retCode) ; 
-   } 
-   virtual AcRx::AppRetCode On_kUnloadAppMsg (void *pkt) { 
-     AcRx::AppRetCode retCode =AcRxArxApp::On_kUnloadAppMsg (pkt) ; 
-     return (retCode) ; 
-   } 
-   
-   virtual void RegisterServerComponents () {    } 
-   ////////////////////////////////////////////////////////////////////////// 
-   //                 (SummArgs a1 a2 ... an) 
-   // Суммируем все переданные аргументы. Возвращаем сумму 
-   ////////////////////////////////////////////////////////////////////////// 
-   static int ads_SummArgs () { 
-     double summ = 0.0; 
-     resbuf *args = acedGetArgs(); 
-     resbuf *rb = args; 
-     for (; rb; rb = rb->rbnext) { 
-       if (rb->restype == RTREAL || rb->restype == RTANG)   { 
-         summ += rb->resval.rreal; 
-       } else if (rb->restype == RTSHORT) { 
-         summ += rb->resval.rint; 
-       } 
-     } 
-     acedRetReal(summ); 
-     acutRelRb (args) ; 
-     return (RTNORM) ; 
-   } 
- } ; 
- //----------------------------------------------------------------------------- 
- IMPLEMENT_ARX_ENTRYPOINT(CTestLispApp) 
- ACED_ADSSYMBOL_ENTRY_AUTO(CTestLispApp, SummArgs, false) 
Command: (summargs 1 2 3 4)
10.0
4. Чтобы узнать количество аргументов нужно пройтись до конца списка args и подсчитать все элементы. При этом следует учесть, что могут быть вложенные списки. В принципе из lisp в arx всё передаётся в виде одного списка, в котором содержатся последовательно все аргументы. У последнего resbuf в списке rbnext  == NULL. 
Пару функций из моих загашников 20-летней давности:
- /*-----------------28/11/95 13:42------------------- 
-                     LENGTH_LIST 
-                   ---------------- 
-   Функция подсчитывает количество элементов списка 
-  Если есть вложенные списки, то они также подсчитываются 
-  c длиной 1. 
-  Внимание:  
-  Список указывается resbuf'ом следующим после RTLB 
-  для этого списка 
-  --------------------------------------------------*/ 
- int length_list(resbuf *start) 
- { 
-   
-  int i=0, count_par=0; 
-   
-  do { 
-   
-   if (start->restype == RTLB) count_par++; 
-   if (start->restype == RTLE || start->restype == RTDOTE) count_par--; 
-   if (count_par < 0) break;     // Завершающая скобка списка 
-   if (count_par > 0) continue;  // Внутри вложенного списка 
-   i++; // Увеличиваем счетчик числа элементов 
-   
-  } while ((start = start->rbnext) != NULL); 
-   
-  return i; 
- } 
- /*--------------------------------01/12/95 22:37---------------------------------- 
-                                     NEXT_PARAM 
-                                   -------------- 
-     Функция пропускает текущий параметр в списке аргументов и возвращает 
-     следующий параметр из списка параметров (первый resbuf данного элемента). 
- --------------------------------------------------------------------------------*/ 
- resbuf *next_param (resbuf *prev) 
- { 
-   int count_par = 0; 
-   resbuf  *next = NULL; 
-   
-   if (prev->restype == RTLB) { 
-     do { 
-       if (prev->restype == RTLB) count_par++; 
-       if (prev->restype == RTLE || prev->restype == RTDOTE) count_par--; 
-       if (count_par) prev = prev->rbnext; 
-             else     break; 
-     } while (prev); 
-   
-     if (prev && prev->rbnext) next = prev->rbnext; 
-   } 
-   else next = prev->rbnext; 
-   
-   return next; 
- }