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

Применение локальных переменных в программе


Средства отладки Visual LISP

 

Средства отладки Visual LISP 
 

Применение локальных переменных в программе



Вернемся к функции gp:getPointInput, созданной на первом занятии.

(defun gp:getPointInput()

(alert

"Function gp:getPointInput will get user drawing input"

)

;; For now, return T, as if the function worked correctly.

T

)

В том виде, как она есть на данный момент, функция не выполняет практически никаких действий. Нам нужно расширить ее, добавив функции ввода пользовательских данных (начальной и конечной точек, а также ширины дорожки).

При создании программ на AutoLISP желательно мысленно воссоздавать работу AutoCAD. Исходя из этих соображений лучше написать программу так, чтобы она запрашивала не ширину дорожки, а половину ширины, так как в последнем случае появляется возможность задать ее указанием точки на рисунке относительно осевой линии.

После завершения функции gp:getPointInput ее переменные, как и присвоенные им значения, становятся не нужны. Поэтому будем хранить значения, введенные пользователем, в локальных переменных. Функция должна выглядеть следующим образом:

(defun gp:getPointInput(/ StartPt EndPt HalfWidth)

(if (setq StartPt (getpoint "\nStart point of path: "))

(if (setq EndPt (getpoint StartPt "\nEndpoint of path: "))

(if (setq HalfWidth (getdist EndPt "\nhalf-width of path: "))

T

)

)

)

)

Локальные переменные объявляются после косой черты в выражении defun, с которого начинается описание функции. Сначала, при первом вызове getpoint, запрашивается начальная точка. Затем относительно нее задается конечная точка. При этом из начальной точки исходит динамическая, растягивающаяся при перемещении курсора линия (резиновая нить). Аналогично этому, при задании половины ширины резиновая нить исходит из конечной точки.

Для проверки работы gp:getPointInput

  • Введите в окне консоли VLISP код функции gp:getPointInput.
  • Поместив курсор в окне консоли за последней скобкой блока кода (или на следующей строке), нажмите ENTER для замены предыдущей загруженной версии функции gp:getPointInput.
  • Вызовите функцию из окна консоли. Для этого в ответ на подсказку введите (gp:getPointInput).
  • Укажите точки, запрашиваемые программой, и задайте половину ширины.
  •  



    Содержание раздела