Создание функции построения границы дорожки
Построение границы дорожки
|
| ||||
Создание функции построения границы дорожки | |||||
После выполнения упражнений предыдущих занятий функция gp:drawOutline выглядела следующим образом:
;;;--------------------------------------------------------------; ;;; Функция: gp:drawOutline ; ;;;--------------------------------------------------------------; ;;; Описание: С помощью этой функции можно создать границу ; ;;; garden path. ; ;;;--------------------------------------------------------------; (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 ) В том виде, как она есть, функция не выполняет практически никаких действий. Однако, ассоциативный список, хранящийся в переменной gp_PathData, позволяет рассчитать все характерные точки, необходимые для построения контура дорожки. Теперь определим, каким образом информация из этой переменной будет передаваться в функцию gp:drawOutline. Следует помнить, что переменная gp_PathData является локальной и определена внутри функции C:GPath. В AutoLISP локальные переменные, описанные в одной функции, доступны всем функциям, вызываемым из нее (подробнее см. раздел Различия между локальными и глобальными переменными). Функция gp:drawOutline вызывается из C:GPath. Поэтому переменную gp-PathData можно использовать и для функции gp:drawOutline; однако это не является наилучшим решением. Почему так? Если одна и та же переменная используется только двумя функциями, описанными в одном файле (как в приведенном примере), установить, где была описана и для чего используется переменная, нетрудно. Однако если функции определены в различных файлах (как часто случается), необходимо будет выполнить поиск в двух файлах, чтобы выяснить, что представляет собой переменная gp_PathData. Темы: Передача параметров функциям Работа с ассоциативным списком Использование углов и задание точек Вызов функций ActiveX из функции gp:drawOutline Загрузка среды ActiveX Получение указателя на пространство модели Создание массива вершин полилинии Преобразование списка точек в массив типа variant Окончательная компоновка
|