Применение ассоциативных списков
Средства отладки Visual LISP
|
| ||||
Применение ассоциативных списков |
| ||||
Значения ключевых кодов для ассоциативных списков необходимо документировать. Так, для парковой дорожки коды 10, 11, 40, 41 и 50 используются следующим образом:
Ниже приведен обновленный вариант функции gp:getPointInput. Здесь используется функция AutoLISP cons, которая создает кодированные вложенные списки, объединяемые затем в общий ассоциативный список. Теперь скопируйте этот вариант функции в окно консоли, нажмите ENTER и запустите функцию (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: ")) ;; if you've made it this far, build the association list ;; as documented above. This will be the return value ;; from the function. (list (cons 10 StartPt) (cons 11 EndPt) (cons 40 (* HalfWidth 2.0)) (cons 50 (angle StartPt EndPt)) (cons 41 (distance StartPt EndPt)) ) ) ) ) ) Следует обратить внимание на то, что при построении списка программа умножает половину ширины, указанную пользователем, на 2, преобразуя ее таким образом в полную ширину. Полученный результат в окне консоли выглядит примерно так: _$ (gp:getPointInput) ((10 2.16098 1.60116 0.0) (11 12.7126 7.11963 0.0) (40 . 0.592604) (50 . 0.481876) (41 . 11.9076)) _$
|