Группы пользователей 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.

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

 




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



Книжный магазин