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

Работа с ассоциативным списком


Построение границы дорожки

 

Построение границы дорожки 
 

Работа с ассоциативным списком



Ассоциативный список, содержащийся в переменной gp_PathData, можно передать функции gp:drawOutline следующим образом:

(gp:drawOutline gp_PathData)

Это достаточно просто. Однако в тексте функции необходимо указать, каким образом информация из ассоциативного списка должна обрабатываться. Выяснить структуру списка можно с помощью средства VLISP «Изучить».

Для анализа ассоциативного списка с помощью средства VLISP «Изучить»

  • Загрузите код из окна редактора.
  • В ответ на подсказку в окне консоли введите следующее выражение:
  • (setq BoundaryData (gp:getPointInput))

    VLISP будет записывать информацию в переменную BoundaryData.

  • Ответьте на запросы о начальной и конечной точках и полуширине.
  • Выберите имя переменной BoundaryData в окне консоли, дважды щелкнув на нем мышью.
  • Выберите "Вид"
    "Изучить" из меню VLISP.
  • VLISP выводит следующее окно:

    В окне «Изучение» выводится каждый вложенный список переменной BoundaryData.

  • В ответ на подсказку в окне консоли VLISP введите следующее:
  • (assoc 50 BoundaryData)

    Функция assoc возвращает элемент ассоциативного списка, обозначенный определенным кодом. В данном примере указан код 50, соответствующий углу наклона парковой дорожки (см. раздел Применение ассоциативных списков).

  • В ответ на подсказку в окне консоли VLISP введите следующее:
  • (cdr(assoc 50 BoundaryData))

    Функция cdr возвращает второй и все следующие за ним элементы списка. В данном примере cdr находит значение угла, которое является вторым и последним элементом значения, возвращаемого функцией assoc.

    После этих объяснений при понимании следующего фрагмента кода затруднения возникать не должны:

    (setq PathAngle (cdr (assoc 50 BoundaryData))

    Width (cdr (assoc 40 BoundaryData))

    HalfWidth (/ Width 2.00)

    StartPt (cdr (assoc 10 BoundaryData))

    PathLength (cdr (assoc 41 BoundaryData))

     



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