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

ADN Club => AutoLisp / VisualLISP и DCL => Тема начата: 1958 от 13-12-2023, 08:50:05

Название: Список координат
Отправлено: 1958 от 13-12-2023, 08:50:05
Опять вопрос от дилетанта. :D
имеется некий список координат такого типа:
Код - Auto/Visual Lisp [Выбрать]
  1. ((10.0 0.0) (6.1 10.0) (-10.0 1.2) (-1.8 -10.0) (10.0 -2.4))
Как ко всем элементам списка прибавить определенную величину? Например:
Код - Auto/Visual Lisp [Выбрать]
  1. (10.0 10.0)
Т.е. получить новый список:
Код - Auto/Visual Lisp [Выбрать]
  1. ((20.0 10.0) (16.1 20.0) 0.0 11.2) -8.2 0.0) (20. -7.6))
По типу:
Код - Auto/Visual Lisp [Выбрать]
  1. (mapcar '+ aa bb)
Название: Re: Список координат
Отправлено: Алексей Кулик от 13-12-2023, 22:42:04
Примерно так (код не проверял):
Код - Auto/Visual Lisp [Выбрать]
  1. (setq pt '(10 10))
  2. (mapcar '(lambda(x) (mapcar '+ x pt)) '((10.0 0.0) (6.1 10.0) (-10.0 1.2) (-1.8 -10.0) (10.0 -2.4)))
---
Проверил. Возвращает
Код - Auto/Visual Lisp [Выбрать]
  1. '((20.0 10.0) (16.1 20.0) (0.0 11.2) (8.2 0.0) (20.0 7.6))
Название: Re: Список координат
Отправлено: 1958 от 14-12-2023, 06:06:26
Спасибо, Алексей!
Я, конечно, пытался через лямбду написать, но у меня пока с этой функцией не лады.
Код - Auto/Visual Lisp [Выбрать]
  1. (mapcar '(lambda (q) (mapcar '+ q '(10.0 10.0))) '((10.0 0.0) (6.1 10.0) (-10.0 1.2) (-1.8 -10.0) (10.0 -2.4)))
Ничего у меня не получилось. А ваш код работает. Спасибо, ещё раз!
Название: Re: Список координат
Отправлено: Алексей Кулик от 17-12-2023, 18:34:31
Я тоже до них не сразу дошел. Но потом как-то срослось: https://autolisp.ru/2009/09/16/lambda-functions/