Группы пользователей Autodesk


Описание функции gp:FindPointInList


Окончательная компоновка

 

Окончательная компоновка  

Описание функции gp:FindPointInList

Заголовок функции в исходном коде поясняет, как функция gp:FindPointInList преобразует информацию, с которой она работает. Как и предыдущая функция, Gp:FindMovedPoint, данная функция использует возможности LISP обрабатывать списки. При работе со списками часто встречается комбинация функций mapcar и lambda. На первый взгляд, это несколько запутанные функции, имена которых не отображают то, что они в действительности делают. Однако они являются самыми мощными средствами из всего набора функций AutoLISP. Ниже приведено краткое описание функций mapcar и lambda.

Функция mapcar применяет выражение ко всем элементам списка. Например, если имеется список целых чисел 1, 2, 3 и 4, функцию mapcar можно использовать для прибавления единицы (выражение 1+) ко всем элементам списка:

_$ (mapcar '1+ '(1 2 3 4))

(2 3 4 5)

Исходное назначение функции mapcar заключается в том, что она последовательно применяет функцию, указанную в первом параметре к элементам второго параметра списка. Результатом выполнения операции mapcar является преобразованный список. В действительности функция mapcar может использоваться не только для этого, но на данном этапе такого определения достаточно.

В приведенном примере для каждого значения в списке '(1 2 3 4) была выполнена функция 1+. По сути дела, функция mapcar выполнила несколько операций, а затем собрала полученные значения в один список:

(1+ 1) -> 2

(1+ 2) -> 3

(1+ 3) -> 4

(1+ 4) -> 5

Приведем еще один пример использования mapcar, на этот раз для выполнения функции null с целью выявления в списке неверных значений:

_$ (mapcar 'null (list 1 (= 3 "3") nil "Steve"))

(nil T T nil)

В данном фрагменте кода выполняется следующее:

(null 1) -> nil

(null (= 3 "3") -> T

(null nil) -> T

(null "Steve") -> nil

Внутри функции mapcar можно использовать большинство из функций AutoLISP.


Начало  Назад  Вперед