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

         

Применение ассоциативных списков


Средства отладки Visual LISP

 

Средства отладки Visual LISP 
 

Применение ассоциативных списков



Значения ключевых кодов для ассоциативных списков необходимо документировать. Так, для парковой дорожки коды 10, 11, 40, 41 и 50 используются следующим образом:

  • 10 обозначает 3М координаты начальной точки дорожки.
  • 11 обозначает 3М координаты конечной точки дорожки.
  • 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))

    _$

     



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