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

Расширение возможностей реакторов


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

 

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

Расширение возможностей реакторов



На занятии 6 мы назначили функцию отклика gp:command-will-start реакторному событию :vlr-commandWillStart. На текущем этапе функция только выводит некоторые сообщения и присваивает двум глобальным переменным *polyToChange* и *reactorsToRemove* значение nil.

Для расширения возможностей функции отклика gp:command-will-start

  • Откройте файл gpreact.lsp.
  • Измените функцию gp:command-will-start, добавив к вызову функции setq две переменные, следующим образом:
  • ;; Reset all four reactor globals to nil.

    (setq *lostAssociativity* nil

    *polyToChange* nil

    *reactorsToChange* nil

    *reactorsToRemove* nil)

  • Замените оставшийся код функции gp:command-will-start, до последнего вызова функции princ, следующим кодом:
  • (if (member (setq currentCommandName (car command-list))

    '( "U" "UNDO" "STRETCH" "MOVE"

    "ROTATE" "SCALE" "BREAK" "GRIP_MOVE"

    "GRIP_ROTATE" "GRIP_SCALE" "GRIP_MIRROR")

    ) ;_ end of member

    (progn

    (setq *lostAssociativity* T)

    (princ "\nПРИМЕЧАНИЕ: ")

    (princ currentCommandName)

    (princ " command will break a path's associativity .")

    ) ;_ end of progn

    ) ;_ end of if

    Здесь производится проверка, не запустил ли пользователь команду, разрушающую ассоциативность между плитками и границей дорожки. Если это произошло, программа устанавливает глобальную переменную *lostAssociativity* и выдает пользователю предупреждение.

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

    Темы:

    Доработка функций отклика для объектных реакторов

    Разработка функции отклика gp:command-ended

    Обработка нескольких типов объектов

    Использование методов ActiveX в функциях отклика реакторов

    Обработка нелинейных последовательностей реакторов

    Написание функции command-ended

    Обновление функции gp:Calculate-and-Draw-Tiles

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

     



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