Сообщество программистов Autodesk в СНГ
ADN Club => AutoLisp / VisualLISP и DCL => Тема начата: 1958 от 13-12-2023, 08:50:05
Название:
Список координат
Отправлено:
1958
от
13-12-2023, 08:50:05
Опять вопрос от дилетанта. :D
имеется некий список координат такого типа:
Код - Auto/Visual Lisp
[Выбрать]
(
(
10.0
0.0
)
(
6.1
10.0
)
(
-
10.0
1.2
)
(
-
1.8
-
10.0
)
(
10.0
-
2.4
)
)
Как ко всем элементам списка прибавить определенную величину? Например:
Код - Auto/Visual Lisp
[Выбрать]
(
10.0
10.0
)
Т.е. получить новый список:
Код - Auto/Visual Lisp
[Выбрать]
(
(
20.0
10.0
)
(
16.1
20.0
)
0.0
11.2
)
-
8.2
0.0
)
(
20
.
-
7.6
)
)
По типу:
Код - Auto/Visual Lisp
[Выбрать]
(
mapcar
'
+
aa bb
)
Название:
Re: Список координат
Отправлено:
Алексей Кулик
от
13-12-2023, 22:42:04
Примерно так (код не проверял):
Код - Auto/Visual Lisp
[Выбрать]
(
setq
pt '
(
10
10
)
)
(
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
[Выбрать]
'
(
(
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
[Выбрать]
(
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/