LISP

  Обзор возможностей >

LISP

Previous pageReturn to chapter overviewNext page

В ABViewer поддержаны примерно половина LISP команд (более 50), включая рекурсивные функции и функции, которые принимают функцию как аргумент. Если Вы знакомы с LISP, то определяя свои функции можете значительно расширить возможности ABViewer. Для отладки программ LISP в ABViewer используется встроенный отладчик, который доступен на вкладке Дополнительно > панель Lisp > команда Lisp Debugger.

В дистрибутив программы входят два файла, которые демонстрируют добавление новых LISP функций: functiongraph.lsp и sqr.lsp. После установки программы примеры помещаются в директорию c:\Users\USER_NAME\Documents\ABViewer 11\Demos\Lisp\...

functiongraph.lsp


Добавляет функцию draw-graph для построения графиков.

(defun draw-line (p1 p2)

  (command "_line" p1 p2 ""))

 

(defun square (x)

  (* x x))

 

(defun rational (x)

   (/ 1 x))

 

(defun draw-graph (min max step f)

  (setq x min)

  (setq p (list x (f x)))

  (while (<= x max)

     (draw-line p (setq p (list x (f x))))

  (setq x (+ x step))))

 

Для вызова функции draw-graph в командной строке введите:

(load "С:\Users\USER_NAME\Documents\ABViewer 11\Demos\Lisp\functiongraph.lsp")

Загружает файл functiongraph.lsp в текущий файл

(draw-graph -10 10 0.5 square)

Строит график функции y=x2

(draw-graph -10 10 0.5 sin)

Строит график функции y=sinx

(draw-graph -10 10 0.5 cos)

Строит график функции y=cosx

(draw-graph -10 10 0.5 atan)

Строит график функции y=arctgx

Результат выполнения команды:

Command: (draw-graph -10 10 0.5 square)

LISP_square

sqr.lsp


Добавляет функцию SQR для построения квадрата.

(defun SQR (/ pt1 pt2 pt3 pt4 len ang)

  (setq pt1 (getpoint "First corner: "))

  (setq pt2 (getpoint "Length of one side: "))

  (setq len (distance pt1 pt2))

  (setq ang (angle pt1 pt2))

  (setq pt3 (polar pt2 (+ ang (/ PI 2.0)) len))

  (setq pt4 (polar pt3 (+ ang PI) len))

  (command "_PLINE" pt1 pt2 pt3 pt4 pt1 "")

)

 

Пример использования:

(load "С:\Users\USER_NAME\Documents\ABViewer 11\Demos\Lisp\sqr.lsp")

Загружает файл sqr.lsp в текущий файл

(sqr)

Запрашивает у пользователя две точки, расстояние между которыми будет являться стороной квадрата.

Результат выполнения команд:

Command: (sqr)

First corner: (0,0)

Length of one side: (10,5)  //вместо длины введены координаты второй точки

LISP_sqr

Встроенный отладчик LISP

Перейти на страницу ABViewer