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


Создание фиктивных функций в программе


Постановка задачи и начало программирования

 

Постановка задачи и начало программирования 
 

Создание фиктивных функций в программе



Для того, чтобы программа выполнялась правильно, требуется еще три функции. Главная функция программы содержит вызовы трех пользовательских функций:

gp:getPointInput

gp:getUserInput

gp:drawOutline

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

Для описания фиктивной функции в приложении

  • Поместите курсор в окне редактора в самое начало кода программы и нажмите пару раз ENTER для ввода пустых строк.
  • Введите перед главной функцией следующее:
  • ;;; Function gp:getPointInput will get path location and size

    (defun gp:getPointInput()

    (alert

    "Function gp:getPointInput will get user drawing input"

    )

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

    T

    )

    ;;; Function gp:getDialogInput will get path parameters

    (defun gp:getDialogInput ()

    (alert

    "Function gp:getDialogInput will get user choices via a dialog"

    )

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

    T

    )

    ;;; Function gp:drawOutline will draw the path boundary

    (defun gp:drawOutline ()

    (alert

    (strcat "This function will draw the outline of the polyline "

    "\nand return a polyline entity name/pointer."

    )

    )

    ;; For now, simply return a quoted symbol. Eventually, this

    ;; function will return an entity name or pointer.

    'SomeEname

    )

    Каждая функция содержит в конце строку, состоящую из одного символа T. Она используется в качестве возвращаемого значения. Каждая функция AutoLISP должна возвращать в вызвавшую ее функцию какое-либо значение. Буква T используется в AutoLISP для значения «true» (истина); именно оно будет передано в вызывающую функцию.
    Файл gpmain. lsp организован таким образом, что для перехода к следующему этапу выполнения программы каждая вызываемая функция должна возвращать значение, отличное от nil (что обозначает «нет значения»).

    По умолчанию функции AutoLISP всегда возвращают значение последнего вычисленного внутри нее выражения. В фиктивных функциях единственным выражением является обращение к функции alert. Однако функция alert всегда возвращает значение nil. Таким образом, будучи вызванной последней в gp:getPointInput, она возвратит nil и переход через if к функции gp:getDialogInput станет невозможным.

    По аналогичной причине функция gp:DrawOutline возвращает в качестве фиктивного значение ('SomeEname). Конструкции LISP, предваренные апострофом, не вычисляются. Для более подробного изучения языка LISP в конце данного учебного пособия приведен список рекомендуемых книг.

     


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