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

Обновление фиктивной функции


Создание проекта и добавление элементов интерфейса

 

Создание проекта и добавление элементов интерфейса 
 

Обновление фиктивной функции



Функция gp:getDialogInput была изменена. При изменении фиктивной функции всегда следует проверять две вещи:

  • Изменилось ли выражение defun? Необходимо ли функции то же число аргументов, что и раньше?
  • Изменился ли результат, возвращаемый функцией?
  • В случае функции gp:getDialogInput ответ на оба вопроса положителен. Функция теперь принимает параметр ширину дорожки (для определения значений по умолчанию для размера плиток и расстояния между ними). Вместо символа T, который возвращала раньше фиктивная функция, теперь результатом выполнения функции gp:getDialogInput является ассоциативный список, состоящий из четырех значений.

    Оба изменения влияют как на код, вызывающий функцию, так и на код, обрабатывающий полученные функцией результаты. Замените предыдущую версию функции C:GPath в файле gpmain.lsp следующим кодом:

    (defun C:GPath (/ gp_PathData gp_dialogResults)

    ;; Запрос на ввод: путь к местоположению и

    ;; direction, then for path parameters. Continue only if you

    ;; have valid input. Store the data in gp_PathData.

    (if (setq gp_PathData (gp:getPointInput))

    (if (setq gp_dialogResults (gp:getDialogInput (cdr(assoc 40

    gp_PathData))))

    (progn

    ;; Now take the results of gp:getPointInput and append this

    ;; to the added information supplied by gp:getDialogInput.

    (setq gp_PathData (append gp_PathData gp_DialogResults))

    ;; At this point, you have all the input from the user.

    ;; Draw the outline, storing the resulting polyline

    ;; "pointer" in the variable called PolylineName.

    (setq PolylineName (gp:drawOutline gp_PathData))

    ) ;_ end of progn

    (princ "\nFunction cancelled.")

    ) ;_ end of if

    (princ "\nIncomplete information to draw a boundary.")

    ) ;_ end of if

    (princ) ; exit quietly

    ) ;_ end of defun

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

  • При вызове функции gp:getDialogInput ей передается ширина дорожки. Для этого из ассоциативного списка gp_PathData извлекается значение, которому присвоен код 40.
  • Ассоциативный список, возвращаемый функцией gp:getPointInput, записывается в переменную gp_dialogResults. Значение этой переменной, если оно имеется, добавляется к списку значений ассоциативного списка, уже хранящихся в gp_PathData.
  • Дополнительные изменения вызваны удалением теперь уже ненужных элементов фиктивной функции. Наиболее простой способ произвести их скопировать код из электронного учебного пособия и вставить его в файл.

     



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