Ошибка AutoLISP progn - слишком много аргументов

Автор Тема: Ошибка AutoLISP progn - слишком много аргументов  (Прочитано 13706 раз)

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

Оффлайн Александр РивилисАвтор темы

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
(apply 'progn (список любой длинны ...))Этот метод так-же подходит ко всем функциям с произвольным числом аргументов.

Оффлайн Александр РивилисАвтор темы

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
(apply 'progn (список любой длинны))
Даже в компилированном в fas/vlx?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
Не знаю - так как не скомпилировал ни 1 своего проекта (делал компиляцию только для проверки совместимости различных "хитрых" примочек с компилированными программами) - почему - писал уже не раз - я вижу больше отрицательных сторон в этом действии. Но в общем не вижу причин почему в таком виде скомпилированная версия "брыкнется" (проверять не буду - для меня это не актуально - по мне лучшеб вообще компиляции автолиспа не было).

Оффлайн Александр РивилисАвтор темы

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Тогда ты невнимательно прочитал статью, ибо в ней:
Цитировать
...При проверке текста в VLIDE (при некоторых условиях) можно получить ошибку. При этом некомпилированный lisp продолжает корректно работать. Попытка скомпилировать lisp в fas или vlx также приводит к ошибке вида "too many arguments..."...
И соотвественно твой ответ к статье не имеет никакого отношения.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
Вряд-ли - это старая ошибка которая проявляется и в не компилированных лиспах - если количество аргументов у любой функции превышает 255, то в зависимости от версии и расположения звезд она ведет себя по разному не стабильно (бывает проскочит, а бывает нет) - в компилированной она просто знает что так нельзя - везде решается через apply...

Оффлайн Александр РивилисАвтор темы

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
везде решается через apply...
Только если список формируется динамически. Но если список создается через (list ...), то мы возвращаемся к тому же ограничению.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
list тоже является функцией, соответственно и на нее действует ограничение на 255 "настоящих" аргументов - progn тут ни причем

Оффлайн fattyhallex

  • ADN Club
  • Сообщений: 16
  • Карма: 0
В 2014 не рекомендую использовать квотированные функции,
используйте лучше
 function (lambda(arg)...избежите лишних проблем

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
В 2014 не рекомендую использовать квотированные функции
тогда уж просветите, что случилось в 2014 с квотированием (а то переписывать мне все лиспы из-за причины с неясной аргументацией как-то не хочется).

Оффлайн fattyhallex

  • ADN Club
  • Сообщений: 16
  • Карма: 0
Не вем, но натыкался совсем недавно в частности с использованием
(COMMAND-S "_.pline" ...

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
Я что-то пока не уловил связи между Вашими постами...

Оффлайн fattyhallex

  • ADN Club
  • Сообщений: 16
  • Карма: 0
Тогда попробуй что-то вроде
(command "_.pline") (apply 'command point_list) command "CL")(в реалии использую mapcar)
и скажи как работает

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
Для начала посмотрите на кол-во скобок в Вашем примере.  Кто Вас так научил писать??, почему оно вообще должно работать? если судя по названию в списке точки? В вашем посте написано про различия в использовании ' и function которые пошли начиная с 2014 автокада (ну или года) - где они - могу только предположить что Ваш вывернутый на изнанку "алгоритм" передачи в ком. строку который по совокупности компенсации ошибок каким-то чудом работал в предыдущих версиях перестал работать в 2014 - при чем тут function?

Оффлайн Александр РивилисАвтор темы

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Думаю что речь идет про FIBERWORLD, нулевое значение которой радикально меняет поведение AutoCAD, но никак с темой топика не связана.
« Последнее редактирование: 02-03-2014, 19:05:31 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение