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


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


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

 

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

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

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

(gp:drawOutline gp_PathData)

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

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

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

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

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

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

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

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

  10. В ответ на подсказку в окне консоли VLISP введите следующее:
  11. (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))

 




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



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