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

Изменение других вызовов функции gp:Calculate-and-Draw-Tiles


Окончательная компоновка

 

Окончательная компоновка 
 

Изменение других вызовов функции gp:Calculate-and-Draw-Tiles



В функции отклика реактора жестко назначенная строка "ActiveX" передается gp:Calculate-and-Draw-Tiles в виде аргумента ObjectCreationStyle. Однако, что же происходит при других вызовах функции gp:Calculate-and-Draw-Tiles?

Вспомним занятие 4, где говорилось, что при каждом изменении фиктивной фунции необходимо ответить на следующие вопросы:

  • Был ли изменен вызов (обращение к) функции? Необходимо ли функции то же число аргументов, что и раньше?
  • Изменился ли результат, возвращаемый функцией?
  • На те же вопросы необходимо отвечать при каждом существенном изменении рабочей функции в процессе создания, улучшения и обновления приложений. В данном случае необходимо найти все другие функции, вызывающие gp:Calculate-and-Draw-Tiles. В VLISP имеется средство, помогающее это сделать.

    Для нахождения всех вызовов функции gp:Calculate-and-Draw-Tiles в проекте

  • В текстовом редакторе VLISP дважды щелкните мышью на слове gp:Calculate-and-Draw-Tiles в файле gpdraw.lsp.
  • Выберите "Поиск"
    "Найти" в меню VLISP.
  • Так как имя функции было выделено заранее, оно появляется в качестве строки для поиска.

  • Установите переключатель «Поиск» в положение «Проект».
  • При выборе этой опции диалоговое окно «Поиск» разворачивается, и в нем можно выбрать проект для поиска.

  • Укажите имя проекта и нажмите кнопку «Найти».
  • VLISP выводит результат в отдельном окне.

  • Посмотрим на результаты поиска и определим, откуда еще вызывается функция gp:Calculate-and-Draw-Tiles. У нее должно быть только одно местоположение: файл gpmain.lsp.
  • Дважды щелкните мышью в окне результатов поиска на строке кода, вызывающего функцию gp:Calculate-and-Draw-Tiles.
  • VLISP активизирует окно текстового редактора и переходит к строке gpmain.lsp. Пока код выглядит следующим образом:

    (setq tilelist (gp:Calculate-and-Draw-Tiles gp_PathData))

  • Замените строку кода на следующую:

  • (setq tilelist (gp:Calculate-and-Draw-Tiles gp_PathData nil))

    Почему nil? Еще раз посмотрим на алгоритм:

    If ObjectCreationStyle is nil, assign it from the BoundaryData.

    При передаче параметра nil функции gp:Calculate-and-Draw-Tiles проверяется пользовательская настройка стиля создания плиток (заданная в диалоговом окне и хранящаяся в переменной gp_PathData). Однако при последующих вызовах функции реактором, обслуживающим окончание выполнения команды, будет использоваться метод ActiveX.

    Отлично! Теперь реакторы выполняют свои основные функции. При желании можно скопировать файлы gpmain.lsp и gpdraw.lsp из папки Tutorial\VisualLISP\Lesson7 в рабочую папку и проверить окончательный отлаженный код.

    Однако почивать на лаврах пока рано. Необходимо еще выполнить много работы с функцией gp:Command-ended:

    (setq NewReactorData

    (gp:RedefinePolyBorder CurrentPoints reactorData)

    ) ;_ end of setq

     


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